在git中修改旧提交

时间:2014-04-09 09:46:31

标签: git

我习惯在git中返回旧的提交并修改我的工作目录。例如我有一系列提交

A<-B<-C<-D<-E<-F

在提交B中,我添加了一些文本文件。现在我想在该提交中添加更多文本文件并将其记录在那里。

我听说git rebase和git reset --soft应该在这里使用但是没有理解如何在实践中使用它们? 我应该使用以下命令

git rebase HEAD^5

1 个答案:

答案 0 :(得分:3)

您可以使用

git rebase -i HEAD~5

这会打开一个窗口,其中有几行看起来像

pick 362trhy4
pick ewq3w5y4
pick 34642wfg
pick 34265wey
pick 34652366

rebase blabla onto blabla

请注意,提交哈希值只是组成。您要执行的操作是继续编辑要提交的提交,并将pick更改为edit。然后退出编辑器(nano,vim等)并确认。

它会让你回归&#39;到您要编辑的提交。您现在可以自由地进行更改。完成后,git addgit rm已更改的文件,提交修改它们(因为您想要更改提交)

git commit --amend -m "new commit message"

请注意,这将更改您的提交哈希值。然后做

git rebase --continue`

这将使rebase过程继续进行。因为所有其他提交只是pick s,git会尝试将它们重新应用到您编辑的提交中。

如果没有冲突:太好了,你现在已经完成了。

如果他们这样做:以您喜欢的方式解决冲突,并使用git addgit rm标记已解决的冲突。然后再次git rebase --continue。重复此步骤,直到解决所有冲突。你现在应该回到你开始的地方,但历史已经改变了。