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

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
  • git fetch:导入远程的commit
  • 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。这些工具会大大加速我们的开发效率哦。


我的微信号
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 操作系统 window10学习来源: http://www.liaoxuefeng.com/wiki 常用 创建...
    hopevow阅读 792评论 0 17
  • 本片内容转自CSDN http://blog.csdn.net/ithomer/article/details/7...
    五娃儿阅读 4,956评论 2 88
  • Lesson 3: Using GitHub to Collaborate 3.1 Creating a GitH...
    赤乐君阅读 6,152评论 3 11
  • 今天和妈妈说了很多 说了多天想说的话 呆着这个看上去好的工作 我却无比煎熬 想逃离这里 也许是矫情 我想趁着年轻多...
    Tangerine橘子树阅读 210评论 0 0
  • 今晚晚饭过后在回家的路上,我在开车。我跟老公说等孩子放假了跟孩子一起利用家里的纸箱来做一个火箭吧!儿子听到了马上回...
    兴兴_0d85阅读 267评论 0 0