如何使用git rebase -i编辑并查看过去提交的更改

5
通常我会使用git rebase -i HEAD~<添加的提交次数>来编辑旧的提交,将要编辑的提交上标记edit,做出更改后添加文件并使用git rebase --continue.

请问有没有一种方法可以在使用rebase编辑提交时查看过去的提交更改?这样更容易找到需要修复的地方,在VScode中,它会为我标记这些行。
例如: 假设我提交了commitAcommitBcommitC(HEAD在commitC处)。现在我想要编辑commitA。我使用git rebase -i HEAD~3并在commitA上标记edit。现在我正在进行rebase过程中,但我希望commitA的更改能够显示为更改,这种情况使我不得不在commitA的更改已经提交后再写我的修复。
如果有一种替代方法来修复过去的提交,并使该提交的更改成为staged状态,那就太好了。
提前感谢!

请详细说明您在这里想要表达的内容。您希望看到什么,而现在却没有看到呢? - Tim Biegeleisen
@TimBiegeleisen添加了一个例子,现在我的问题更清晰了吗? - Elad Aharon
1个回答

3

好的,看起来比我想象的要简单!只需按照以下步骤进行操作:

  1. git rebase -i HEAD~5
  2. 将您想要编辑的提交更改为 "edit"。
  3. 您的交互式变基将开始,如果您想查看当前提交的更改,请键入 git reset HEAD~1,因为提交已经存在,我们只是将其重置。
  4. 进行您的更改。
  5. git add <files of your change and past commit files> 或者只需 git add -u 添加所有已跟踪的文件。
  6. git commit
  7. git rebase --continue

愉快的使用 Git 吧 :)


有没有一种方法可以保留提交信息?我目前将提交信息复制到编辑器中,并在提交时将其粘贴回去,感觉非常愚蠢... - Gero
1
我自己找到了解决方法:git commit --reuse-message=ORIG_HEAD 将会使用在 git reset HEAD~1 命令之前的提交记录的提交信息。如果你需要修改这个信息,可以在执行完上述命令后使用 git commit --amend 命令进行修改。 - Gero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接