gitlab团队协作开发

来源:互联网 发布:遍历算法的缺点 编辑:程序博客网 时间:2024/06/09 16:54

由于之前总是自己的项目自己开发维护,不涉及多人协作,因此对于git的使用始终处于比较初级的阶段,很少用git的一些较为高级的用法。最近涉及多人协作开发,在此记录一下git的操作流程。

本文使用的代码版本控制平台为实验室自建的gitlab,在界面风格上稍微和github有些区别,但总体都是一样的。

这里主要记录两种团队协作操作git的方式:

  • 开发人员使用fork
  • 开发人员不使用fork

使用fork

  • 项目负责人在gitlab上新建一个项目,并分享URL给开发人员
  • 开发人员在负责人的gitlab项目页面上点击“fork”按钮,将此项目fork到自己的gitlab上,这相当于是从负责人那拷贝了一份项目副本,无论开发人员如何修改代码都不会影响负责人那master分支上的代码
  • 然后开发人员可以根据自己的项目分工,像对待普通项目一样做clone、add、commit、push等操作
  • 如果开发人员人为一个小模块做好了,可以点击“pull request”按钮,向负责人发送代码合并请求,要合并的代码文件也会以列表的形式同时发送给负责人,此时负责人会看到开发人员的请求,经审核如果代码没问题则会合并模块,并向开发人员发送确认合并的通知

有的时候项目负责人也在开发,在不断更新项目,如何也让自己Github上的也跟着同步,这里参考这篇博文:
http://blog.csdn.net/sjt19910311/article/details/50596714

不使用fork

  1. 负责人为开发人员分别创建开发分支(namedev_branch)

    • 项目负责人在gitlab上新建一个项目,并为每一个开发人员创建一个开发分支(namedev_branch)
    • 开发人员clone项目之后,经git branch检查发现本地只有master分支,因此也需要把属于自己的开发分支也一起获取下来

      $ git fetch origin namedev_branch:namedev_branch//拉取远程的一个叫namedev_branch的分支,并在本地创建一个叫namedev_branch的分支和远程的分支匹配
    • 切换到namedev_branch分支

      $ git checkout namedev_branch
    • 之后的操作如同对待普通项目一样

      $ git add hello.py$ git commit -m "add hello.py"$ git push -u origin namedev_branch //需要注意,是push到远程的namedev_branch分支
  2. 负责人不为开发人员分别创建开发分支
    虽然项目负责人不分别为开发人员创建分支,但是需要把他们添加到一个team中,否则开发人员在向项目push自己的开发分支时遇到权限错误

    • 开发人员在把项目clone之后需要为自己新建一个开发分支(namedev_branch),因为经由git branch查看发现本地只有master分支

      $ git branch namedev_branch  //新建分支$ git checkout namedev_branch  //切换到开发分支$ git push origin namedev_branch  //将新建的开发分支push到远程项目上
    • 之后的操作如同对待普通项目一样(是在namedev_branch分支进行操作)

      $ git add hello.py$ git commit -m "add hello.py"$ git push -u origin namedev_branch //需要注意,是push到远程的namedev_branch分支

之后,项目负责人可以在项目的gitlab主页上看到每个开发人员的工作进度,并考虑何时merge开发人员的分支到master分支上以完善项目


UPDATE

如何更新已经fork的代码

  • 首先要先确定一下是否建立了主repo的远程源:

    git remote -v
  • 如果里面只能看到你自己的两个源(fetch 和 push),那就需要添加主repo的源:

    git remote add upstream https://github.com/被fork的仓库.gitgit remote -v //能看到upstream了
  • fetch源分支的新版本到本地

    git fetch upstream
  • 合并本地两个版本的代码:

    git merge upstream/master
  • 将在本地合并后的代码push到自己的github上去,以更新github上fork的仓库

    git push origin master
原创粉丝点击