四、玩转Git三剑客-Git多人单分支集成协作时的常见场景
不同人修改了不同文件如何处理
首先在GitHub创建新的分支test
,然后本地clone下仓库。通过设置本地local
的name属性和email属性模拟两个人操作。
1 | git clone git@github.com:sviptzk/test1.git |
我们编辑README文件后,添加并push到远端。
接下来回到以前的仓库,拉取远端的分支。
1 | # 拉取远端分支 |
基于远端test分支创建本地分支
1 | git checkout -b test github/test |
接下来编辑文件,并添加到暂存区,但是不会push。此时切换回刚才的账号,并修改了readme。然后生成commit并push。完成后再次切换回另一个账号。
此时再次将修改c.js
文件的用户进行push操作,会遇到问题。
接下来拉取远端分支,并进行合并。
1 | git fetch github |
接下来就可以通过git push
进行提交了。
不同人修改了同文件的不同区域
开发之前对远端进行一个同步
1
git pull
提交一个账号的变更,并切换回另一个账号。尝试push
可以通过
git pull
或者git fetch
然后合并分支1
2git fetch
git merge origin/test此时再通过push即可上传成功
不同人修改了同文件的同一区域
模拟两个账户同时修改了同一个文件的同一个区域,并且其中一个提交。然后另一个没有提交的账号做出如下操作。
1 | # 拉取远端最新更新 |
但是由于修改了同一个区域,因此不能自动合并。需要人为合并。
将以上文件进行处理后,再次添加并且commit即可。
同时变更了文件名和文件内容
假如变更文件名的小伙伴先一步push了自己代码,而刚做完修改的小伙伴可以通过git pull
命令进行拉取,这个命令会自动处理变更文件名操作。
同一文件改成了不同的文件名
这种情况下,通过git pull
命令进行拉取则不会自动处理,而是遇到冲突。会出现两个不同名但内容相同的文件。
1 | # 通过status查看需要添加、删除的文件 |
接下来便可以通过git commit -am 'change file name'
进行提交新的commit,然后push即可。
1 | git commit -am 'change file name' |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小康博客!
评论
TwikooWaline