Git Rebase:在最后一次提交之前合并分支

时间:2014-08-25 16:30:55

标签: git

我有以下情况:

分支功能

A - X (HEAD)

分支大师(自分支创建以来有一些新东西)

A - B - C

如果我执行git merge(在分支功能之上),我有:

A - X - B - C

无论如何都要做某种变形来获得A - B - C - X吗?如果我还没有完成提交,那么master分支中的更改可以快速进行,所以我希望在该分支上有一个更加具体的git日志。

真正的用例(也许我做了一个糟糕的实践)是:我创建了一个分支,用于从主分支开发新功能。在做了一些提交之后,有人告诉我主分支有一个已修复的错误,所以我也必须从master那里得到更改。 Git合并,工作正常,但如果我稍后执行git日志,我会在提交之前看到大量不相关的提交,并且显示我在我的分支中所做的更改会变得有点混乱。

2 个答案:

答案 0 :(得分:3)

如果我理解正确,您的回购的原始状态如下:

  B - C [master]
 / 
A - - - X [feature]

现在,如果您进行合并(feature进入master),您将结束,

A - X - B - C
正如你在问题中写的那样,但

  B - C - D [HEAD,master]
 /       /
A - - - X [feature]

相反,您应该执行以下操作

git checkout feature
git rebase master

你将最终得到

A - B - C [master]
         \
          X' [HEAD,feature]

根据需要:)

推荐阅读git rebase

答案 1 :(得分:1)

好吧,正如上面的同事所说,git rebase master就是这么做的。 git-book解释得非常好(不知怎的,我错过了它。呃呃!):

  

git rebase [...]通过去两个分支的共同祖先(一个   你正在和那个你正在改变的那个人一起,获得差异   由你所在分支的每次提交引入,保存那些差异   到临时文件,将当前分支重置为与之相同的提交   您正在重新定位的分支,并最终应用每个更改   转