对旧提交进行更改

时间:2015-08-04 06:36:01

标签: git svn

假设我有4个分支:part1,part2,part3和master。第1部分有1个提交(第一次提交),第2部分有2个提交(第一次提交,第二次提交),第3部分有3次提交(第一次,第二次和第三次提交)。我想对第1部分中的第一个提交进行一些更改,并在其他分支的其他提交中反映这些更改。最快的方法是什么?

2 个答案:

答案 0 :(得分:0)

不幸的是,我无法想到任何可以让你对part1分支中的第一个提交进行更改并让它自动更新其他3个分支中的第一个提交的灵丹妙药。主要原因是第一次提交在所有4个分支中实际上是不同的。您可以通过检查这些分支中第一次提交的SHA-1哈希来说服自己。

话虽这么说,如果你想重写第一次提交的历史记录,那么你可以做一个交互式的rebase。以下是如何为part3分支执行此操作的示例:

git rebase -i HEAD~3

这会提示您使用如下所示的屏幕:

pick dkj398u third commit message
pick l2mnx73 second commit message
edit 36e74bn first commit message

请注意,我已将第一次提交时的操作更改为edit。当您保存此文件并离开编辑器时,Git将运行rebase,但将在第一次提交时停止。这将使您有机会进行所需的更改。在此之后,您可以提交这些更改并通过以下方式继续rebase:

git rebase --continue

您可以对其余分支重复此过程。为了将来参考,请注意,如果第一次提交是 all 分支的最新提交,那么您可以在所有这些提交上使用git commit --amend来修改提交并使用rebase

答案 1 :(得分:-1)

您可以使用 git rebase ,例如,如果您想修改回提交 baa643cd ,请运行

$ git rebase --interactive baa643cd

在默认编辑器中,修改'选择'编辑'在您要修改其提交的行中。进行更改,然后使用之前的相同消息提交它们:

$ git commit --all --amend --no-edit

修改提交,然后修改

$ git rebase --continue

返回上一个头部提交。