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 git@github.com: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上了,修改的部分与小伙伴的有冲突就会推送失败。
文章图片
按照提示
git pull
文章图片
git pull也失败了,原因是没指定本地dev分支与远程origin/dev分支的链接,根据提示设置:
文章图片
然后再尝试pull:
文章图片
pull成功后提示你需要手动解决冲突然后提交,提示显示冲突文件是README.md,或者你可以用git status 查看冲突文件:
文章图片
直接查看README文件可以看到不同分支的修改内容,用<<<<, ====, >>>>分开:
文章图片
我们手动修改后保持并提交:
git add README.md
git commit -m "conflict test finish"
git push origin dev
冲突解决,现在可以在远程库看到你解决冲突后的版本了
用参数的 git log我们可以看到分支的合并情况:
文章图片
最后直接截下了了廖雪峰老师这部分的总结,这篇文章基本是按照他的流程来的,受益匪浅!
文章图片
【github 多人协作】参考:廖雪峰老师的git教程
Vincent Driessen
推荐阅读
- 高三党心得体会
- 关于如何沟通的1/2/3
- 普通人进阶的三个过程-很多人都知道,但却本末倒置
- 古镇游玩记~南长街
- 【多人玩】亲子时间管理打卡第二期|【多人玩】亲子时间管理打卡第二期 6/30
- 圆形菜单
- 销售的乐趣
- 时时说谢谢
- 03_ARMv8指令集介绍加载与存储指令
- 越来越多人家里不装鞋柜了|越来越多人家里不装鞋柜了, 如今都潮流这样子的, 太聪明了!