Git merge 合并分区详解

转载 2012年03月06日 15:44:48

git merge 用来做分支合并,将其他分支中的内容合并到当前分支中。比如分支结构如下:

                        master
                         /
C0 ---- C1 ---- C2 ---- C4
                         \
                         C3 ---- C5
                                  \
                                issueFix

当前分支是master
$ git checkout master

把issueFix中的内容Merge进来:
$ git merge issueFix

如果没有冲突的话,merge完成。有冲突的话,git会提示那个文件中有冲突,比如有如下冲突:

<<<<<<< HEAD:test.c

printf (“test1″);

=======

printf (“test2″);

>>>>>>> issueFix:test.c

可以看到 ======= 隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时检出的分支)中的内容,下半部分是在 issueFix 分支中的内容。解决冲突的办法无非是二者选其一或者由你亲自整合到一起。比如你可以通过把这段内容替换为下面这样来解决:

printf (“test2″);

这个解决方案各采纳了两个分支中的一部分内容,而且删除了 <<<<<<<,=======,和>>>>>>> 这些行。在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为已解决(resolved)。因为一旦暂存,就表示冲突已经解决。如果你想用一个有图形界面的工具来解决这些问题,不妨运行 git mergetool,它会调用一个可视化的合并工具并引导你解决所有冲突:

$ git mergetool
merge tool candidates: kdiff3 tkdiff xxdiff meld gvimdiff opendiff emerge vimdiff
Merging the files: index.html

Normal merge conflict for ‘test.c’:
{local}: modified
{remote}: modified
Hit return to start merge resolution tool (kdiff3):

合并后的分支图如下:

                               master
                                 /
C0 ---- C1 ---- C2 ---- C4 ---- C6
                        \       /
                        C3 ----C5
                                \
                              issueFix

注意,这次合并的实现,由于当前 master 分支所指向的 commit (C4)并非想要并入分支(issueFix)的直接祖先,Git 不得不进行一些处理。就此例而言,Git 会用两个分支的末端(C4 和 C5)和它们的共同祖先(C2)进行一次简单的三方合并。对三方合并的结果作一新的快照,并自动创建一个指向它的 commit(C6)

退出合并工具以后,Git 会询问你合并是否成功。如果回答是,它会为你把相关文件暂存起来,以表明状态为已解决。然后可以用 git commit 来完成这次合并提交。


idea中Terminal终端无法执行GIT命令: touch README.md问题解决

=============================记录Start============================= **为了这个问题折腾了半天...在这里记录下,方便大参考,欢迎评论...

(七)Intellij 中的git操作

git原理以后会分章节介绍,本次主要说一下intellij怎样操作git。intellij有很好的git操作界面,可以拉取代码,拉取分支详情,提交代码到本地仓库,提交代码到远程仓库,可以merge本地...

Git merge 合并分区详解

git merge 用来做分支合并,将其他分支中的内容合并到当前分支中。比如分支结构如下: master ...

Eclipse的Git插件Egit: merge合并冲突具体解决方法

原文:http://www.cnblogs.com/wavky/p/3504060.html 稍微总结下弄了半个下午的egit的merge合并冲突解决方法,网上看的都是一个模板出来的,看...
  • matrixyy
  • matrixyy
  • 2016年02月19日 10:11
  • 15177

git rebase & merge 将其他分支的修改合并到当前分支

例如现在又两个分支 master 和 feature, 你在 feature 分支上进行了实验,这时候有个另外的人在 master 分支上进行了新的提交。那么你需要将 master上别人的修改应用到 ...

MAC 上git集成比较diff工具和merge合并工具的使用

1.Beyond Compare 特点: 下载地址:http://www.scootersoftware.com/download.php 破解方法:http://www.puteulanus.com...

Git怎样撤销一次分支的合并Merge

最近用git,merge之后写的代码全没了,瞬间懵逼,找到这个解决办法,靠谱,先记下来 如果确定放弃这次合并的提交,假如是 merge 了错误的分支到 master,先通过 git re...
  • a478555
  • a478555
  • 2016年03月24日 13:24
  • 1779

Git技巧之解决git merge的合并冲突(非树冲突)

本篇文章讲解git pull从远程版本库拉回时发生冲突的解决方法。非树冲突则指,这种冲突并不是由于不同版本库对同一文件都进行重命名而引发的冲突,而仅仅是由于对同一文件的修改导致的冲突。 来举个例子:...

git命令之git merge 合并分支

git merge 合并分支 发表于 2010年09月2日 由 机器猫 git merge 用来做分支合并,将其他分支中的内容合并到当前分支中。比如分支结构如下: ...

图解用intellij idea merge git conflict cherry pick 合并git冲突

如何用sourcetree intellij idea 合并 merge git 冲突 conflict
  • collonn
  • collonn
  • 2016年10月28日 20:11
  • 9120
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Git merge 合并分区详解
举报原因:
原因补充:

(最多只允许输入30个字)