Git Rebase:上次提交前合并分支
我有以下情况: 分支功能Git Rebase:上次提交前合并分支,git,Git,我有以下情况: 分支功能 A - X (HEAD) 分支主控(分支创建后有一些新东西) 如果我进行git合并(在分支功能之上),我有: 无论如何,有没有做一些重基来得到A-B-C-X?如果我还没有进行提交,那么主分支中的更改可以快速向前推进,因此我希望在该分支上有一个更全面的git日志 真正的用例(也许我做得不好)是:我创建了一个分支,用于从主分支开发新特性。在做了一些提交之后,有人告诉我主分支有一个已经修复的bug,所以我也必须从主分支那里得到更改。Git merge可以很好地工作,但是如果
A - X (HEAD)
分支主控(分支创建后有一些新东西)
如果我进行git合并(在分支功能之上),我有:
无论如何,有没有做一些重基来得到A-B-C-X?如果我还没有进行提交,那么主分支中的更改可以快速向前推进,因此我希望在该分支上有一个更全面的git日志
真正的用例(也许我做得不好)是:我创建了一个分支,用于从主分支开发新特性。在做了一些提交之后,有人告诉我主分支有一个已经修复的bug,所以我也必须从主分支那里得到更改。Git merge可以很好地工作,但是如果我稍后做Git日志,我会在我的提交之上看到大量不相关的提交,显示我在分支中所做的更改会有点混乱。正如我的同事所说,
Git rebase master
正是这样做的。git的书解释得很好(不知怎么的,我错过了它,嗯!):
git-rebase[…]的工作原理是指向两个分支(一个分支)的共同祖先
你上了,你正在重新调整的那一个),得到了差异
由您所在分支的每个提交引入,保存这些差异
要创建临时文件,请将当前分支重置为与提交相同的状态
正在重定基址的分支,并最终应用其中的每个更改
转向
如果我理解正确,您回购的原始状态如下:
B - C [master]
/
A - - - X [feature]
现在,如果您(将功能
合并到主控
),您将得到的不是
正如你在问题中所写,但是
B - C - D [HEAD,master]
/ /
A - - - X [feature]
相反,您应该执行以下操作
git checkout feature
git rebase master
你最终会得到
A - B - C [master]
\
X' [HEAD,feature]
根据需要:)
关于git rebase的推荐阅读:
git rebase
在另一次提交的基础上重放分支提交,在您的情况下,它可能会将X移到C上。似乎您还没有掌握基本的git概念,我建议您重新阅读关于分支/合并/重定基址的章节,无论您使用什么书/文档来学习git。我不得不告诉您,但是你需要做的就是git-rebase-master
。哈哈,对不起,伙计们,我现在觉得自己很笨(我阅读了所有关于git rebase的部分,但错过了一些非常严重的内容。在阅读了git rebase的手册页后,我现在就得到了它。@@
B - C - D [HEAD,master]
/ /
A - - - X [feature]
git checkout feature
git rebase master
A - B - C [master]
\
X' [HEAD,feature]