好的,这个有点复杂,很可能非常具体。让我试着解释一下。
让我说我把这个git repo拉进我的本地驱动器。然后进行一些更改。由于这些更改存在于许多不同的文件中,并且针对不同的目标,因此提交的内容多于一个。让我们说这些更改的提交是使用哈希值ab001 to ab005
(五次提交)。然后我创建了一系列补丁并发送给社区进行审核。
与此同时,我们假设我意识到主仓库已经改变了一点,所以我需要改装。我这样做,解决所有冲突。现在这会导致另一次提交,让我们说ab006
。
一切都很好。
但是第二天我得到了关于上一个补丁的评论和建议(一个有5个提交)。因此,我现在必须根据这些注释进行一些更改,并发送旧补丁的v2
(版本2)(即5次提交)。所以我必须取消承认这5次提交,进行更改并再次提交并创建另一个补丁(使用这5次提交)。
我怎么会这样做,我不能不承认,因为HEAD
中有一个rebase提交。我对此感到很困惑。
答案 0 :(得分:2)
您可以从主服务器“撤消”rebase,然后将提交ab001
修改为ab005
。
git log
# commit ab005
# Fifth commit on the topic branch
# ...
#
# commit ab001
# First commit on the topic branch
#
# commit xy999
# Last commit on master before I started this new branch
git reset --hard xy999
git cherry-pick ab001
...
git cherry-pick ab005
现在您的历史记录很简洁,您可以修改主题分支提交。如果有必要,你可以将rebase重做为master,尽管如果可能,我建议你等到这个分支的工作完成。