github 多人协作

github 多人协作

最近需要团队合作写一个程序,终于要见识到git厉害的多人协作了,记录下过程,方便回顾。
首先在分支策略上有一个很好的文档可以看,由Vincent Driessen提出,非常简洁明了,各个分支的功能明确。
git主分支的名字默认叫master,它是自动创建的,并且默认将本地与远程的master分支统一。主分支主要用来发布重要版本,日常开发应该在另一条分支上进行,我们把开发用的分支叫做Devlop分支,在dev分支上开发好后再合并到master分支上进行发布。
这里写图片描述
将develop分支发布到master分支的命令:

git checkout master    #切换到master分支
git merge --no-ff dev  #--no-f是快进式合并的意思

对于多人合作而言这两个分支都需要推送到远程库。

git checkout -b dev
git push origin dev

而每个人用于开发的分支,如个人分支,功能分支等可以按需求选择是否推送。
这里写图片描述
功能分支以及用于修复bug的临时分支在完成后类似上面dev与master的合并操作一样,我们将feature分支与dev分支合并,合并后都可以删除掉:

git checkout -d feature2

以上是总体的一个分支框架,即小组成员在各自负责的分支上工作,完成后向开发分支dev进行合并,合并后可以删除这些工作分支。遇到bug时可以新建一个临时的bug分支进行修改。下面说一下具体的操作问题。
首先我将另一个小伙伴添加为我的协作者:
我的仓库——>settings——>Collaborators然后输入小伙伴的用户名add进来就可以了。然后小伙伴就可以在他的电脑上clone我的仓库里的代码并有写入权限。

git clone [email protected]:yourname/rep_name.git

使用git branch命令查看分支

git branch
* master

只有master分支,因为当他从远程库clone时默认只能看到本地的master分支,上文已经说过我们尽量在开发分支dev上进行日常,所以必须创建远程origin的dev分支到本地,于是他用这个命令创建本地分支:

git checkout -b origin/dev

现在他就可以在本地创建一个自己的分支,这个分支如果不用与他人合作就可以不用推送,也就只有他自己知道~,然后将写好的和dev分支进行合并,确认好后再将dev分支push到远程:

git checkout -b feature_by_him  #新建分支并编码提交
git add somefeature.py
git commit -m "some feature complete by him"
git checkout dev    #切换到dev
git merge --no-ff feature_by_him   #合并修改
git push origin dev   #推送到远程dev

这样就保证了多人合作,并且在dev分支上进行合并。但是,如果这时候我也在完成了一部分代码并且合并到dev上了,修改的部分与小伙伴的有冲突就会推送失败。
github 多人协作_第1张图片
按照提示

git pull

github 多人协作_第2张图片

git pull也失败了,原因是没指定本地dev分支与远程origin/dev分支的链接,根据提示设置:

这里写图片描述

然后再尝试pull:
这里写图片描述

pull成功后提示你需要手动解决冲突然后提交,提示显示冲突文件是README.md,或者你可以用git status 查看冲突文件:
github 多人协作_第3张图片

直接查看README文件可以看到不同分支的修改内容,用<<<<, ====, >>>>分开:
github 多人协作_第4张图片

我们手动修改后保持并提交:

git add README.md
git commit -m "conflict test finish"
git push origin dev

冲突解决,现在可以在远程库看到你解决冲突后的版本了
用参数的 git log我们可以看到分支的合并情况:
github 多人协作_第5张图片

最后直接截下了了廖雪峰老师这部分的总结,这篇文章基本是按照他的流程来的,受益匪浅!
github 多人协作_第6张图片

参考:廖雪峰老师的git教程
Vincent Driessen

你可能感兴趣的:(Git)