我有以下情况:
分支功能
A - X (HEAD)
分支大师(自分支创建以来有一些新东西)
A - B - C
如果我执行git merge(在分支功能之上),我有:
A - X - B - C
无论如何都要做某种变形来获得A - B - C - X吗?如果我还没有完成提交,那么master分支中的更改可以快速进行,所以我希望在该分支上有一个更加具体的git日志。
真正的用例(也许我做了一个糟糕的实践)是:我创建了一个分支,用于从主分支开发新功能。在做了一些提交之后,有人告诉我主分支有一个已修复的错误,所以我也必须从master那里得到更改。 Git合并,工作正常,但如果我稍后执行git日志,我会在提交之前看到大量不相关的提交,并且显示我在我的分支中所做的更改会变得有点混乱。
答案 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 [...]通过去两个分支的共同祖先(一个 你正在和那个你正在改变的那个人一起,获得差异 由你所在分支的每次提交引入,保存那些差异 到临时文件,将当前分支重置为与之相同的提交 您正在重新定位的分支,并最终应用每个更改 转