git饥人谷技术博客程序员

Git之不明觉厉5-多人合作

2016-03-03  本文已影响183人  转角遇见一直熊

pull命令

在《Git之不明觉厉4》中我们克隆了仓库,并且学会了在分支上工作,现在我们把本地的改动推送到远程吧。这边因为需要合作,我们假定一个工作场景吧:有两位技师分别叫小熊和小虎,她们都克隆了仓库https://github.com/benhaben/gittest.git
假定情况是这样的:

  1. 现在小虎创建了新的文件tiger.txt并推送到远程。
  2. 现在我们看看小熊增加文件并进行push操作会怎么样。
Paste_Image.png

我们看到push被拒绝了,而且git给出了提示,说有人推送过了,你应该先合并远程的改动。那么我们调用pull试试看(先把上面增加的文件清理掉,保证小熊的仓库是干净的,可以用status查看)

echo "you are my bear" > bear.txt
git add -A
git commit -am "add bear.txt"
git push

我们可以看到这词成功了。

理解pull命令

pull命令和调用下面两个命令效果是一样的。

git fetch
git merge origin/master

看一下图吧:

  1. 调用fetch之前


    Paste_Image.png
  2. 调用fetch后


    Paste_Image.png
  3. 合并


    Paste_Image.png

合并冲突

现在我们把情况弄的复杂一些:

  1. 小熊小虎的状态都是干净的(git status
  2. 小虎的readme.txt里面写上‘我是小虎’,并push到远程。
  3. 小熊的readme.txt里面写上‘我是小熊’,提交尝试推送,我们会发现推送失败
  4. 小熊pull,发现pull也失败了,全来是有冲突


    Paste_Image.png
  5. 我们调用git status查看状态,发现readme.txt是unmerged状态


    Paste_Image.png
  6. 我们用编辑器打开一下看看,上面是我们的改动,保留,下面的改动是队友加的,我们也保留吧,删除特殊字符


    Paste_Image.png
  7. 保存我们修改过的文件,调用git commit -a命令去提交改动
    这个时候会弹出一个编辑器,让我修改commit的信息,这里我就用默认的信息了。直接保存退出对话框。
    Paste_Image.png
  8. 调用git status,可以看到我们有两个commit可以push到远程
    Paste_Image.png
    下图可以看出我们做了一个3-way merge, 不知道两种merge的话,可以看前面的文章。
    Paste_Image.png
  9. 这时候我们可以push了

大功告成,现在解决冲突我们也能搞定了。上面有写地方弹出了vim编辑器,如果不喜欢可以配置成别的,另外合并冲突也可以使用一些工具,比如beyond compare。这些工具会大大加速我们的开发效率哦。


我的微信号
上一篇 下一篇

猜你喜欢

热点阅读