在GIT中合并2个分支

时间:2010-08-04 09:40:43

标签: git merge commit

我刚刚开始使用GIT并认为它很精彩,但是我对merge命令的作用感到有些困惑。

让我们说我们在分支“A”中有一个工作项目。

我回家并对此分支进行更改并将其另存为“B”。 另一个程序员对“A”进行更改并将其保存为“C”。

有没有办法将两个分支“B”和“C”合并在一起,然后将更改作为新分支提交,说“D”?

还是错过了'合并'这一点?

3 个答案:

答案 0 :(得分:158)

merge用于将两个(或更多)分支组合在一起。

一个小例子:

# on branch A:
# create new branch B
$ git checkout -b B
# hack hack
$ git commit -am "commit on branch B"

# create new branch C from A
$ git checkout -b C A
# hack hack
$ git commit -am "commit on branch C"

# go back to branch A
$ git checkout A
# hack hack
$ git commit -am "commit on branch A"

所以现在有三个独立的分支(即A B和C),头部不同

将B和C的更改恢复为A,结帐A(已在此​​示例中完成),然后使用merge命令:

# create an octopus merge
$ git merge B C

你的历史将会是这样的:

…-o-o-x-------A
      |\     /|
      | B---/ |
       \     /
        C---/

如果要跨存储库/计算机边框进行合并,请查看git pull命令,例如从具有分支A的pc(此示例将创建两个新提交):

# pull branch B
$ git pull ssh://host/… B
# pull branch C
$ git pull ssh://host/… C

答案 1 :(得分:7)

  

如果您有两个分支 MainBranch SubBranch

     

您需要将 SubBranch 中的更改合并到 MainBranch

     
      
  1. 您应该位于MainBranch # git checkout MainBranch

  2.   
  3. 然后运行合并命令 #git merge SubBranch

  4.   

答案 2 :(得分:1)

案例:如果您需要忽略默认情况下创建的合并提交,请按照以下步骤操作。

说,已经从master中检出了一个新的功能分支,已经进行了2次提交,

  • “添加了A”,“添加了B”

Checkout a new feature_branch

  • “添加了C”,“添加了D”

功能分支然后添加两个提交->

  • “添加了E”,“添加了F”

enter image description here

现在,如果您要将feature_branch更改合并到母版中,请git merge feature_branch坐在母版上。

这会将所有提交添加到master分支中(master中的4个+ feature_branch中的2个=总共6个)+一个额外的合并提交,例如'Merge branch 'feature_branch'',因为master 已发散。< / p>

如果您真的需要忽略这些提交(在FB中进行的提交),并将在feature_branch中所做的全部更改作为单个提交(如'Integrated feature branch changes into master')添加,请运行git merge feature_merge --no-commit

使用--no-commit,它执行合并并在创建合并提交之前停止,我们现在将在master中将功能分支中所有添加的更改都包含在master中,并有机会创建一个新的提交作为我们自己的提交。 / p>

在此处阅读更多内容:https://git-scm.com/docs/git-merge