我无法在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,我经常为自己制作不可编辑的提交;我不想把他们变成主人。怎么做我想要的合并?
答案 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
其中M1
,M2
和M3
是个人分支中所有工作的返工,但从主分支的角度来看也是有意义的。这很有用,因为在将来使用修订历史时,保持个别提交较小且逻辑上划分是很方便的。
答案 1 :(得分:0)
使用--squash
选项git merge
:它会占用您的分支,将其压缩为单个提交,然后将其合并。