git merge命令使用

时间:2010-11-01 14:01:56

标签: git merge branch

我无法在git中进行正确的分支合并。例如,我有两个分支:

         C - D - E  my_branch
       /    
A - B -  F - G - K  *master

现在我在掌握了。在“git merge my_branch”之后,我得到了一些像这样的人:

A - B - C - D - F - G - K - E - M  *master

(M - 合并提交) 但我除了这个:

A - B - F - G - K - M

这很重要,因为在my_branch,我经常为自己制作不可编辑的提交;我不想把他们变成主人。怎么做我想要的合并?

2 个答案:

答案 0 :(得分:3)

我认为您所要求的是一种方式来进行单个提交,好像您一次性完成了个人分支中的所有工作。请注意,这不是git术语中的“合并提交”;这只是一个正常的提交。

编辑:这里要注意的一件事是,这样做意味着git不会保留任何合并知识,所以如果你想继续使用你合并它的个人分支,它会开始变得尴尬。这对于在你被压缩的“合并”之后不再使用的实验分支来说是完美的。

您可以使用git merge --squash(然后使用git commit提交结果)来完成您所追求的目标。这将为您提供所需的结果:

A - B - F - G - K - M

我通常首先操作我的个人分支(使用git rebase -i master)来调整提交,使它们看起来完全符合我的要求,然后使用git merge将它们带入主人。这样我也可以这样做:

A - B - F - G - K - M1 - M2 - M3

其中M1M2M3是个人分支中所有工作的返工,但从主分支的角度来看也是有意义的。这很有用,因为在将来使用修订历史时,保持个别提交较小且逻辑上划分是很方便的。

答案 1 :(得分:0)

使用--squash选项git merge:它会占用您的分支,将其压缩为单个提交,然后将其合并。