如何修改之前的第n次commit?

如何修改之前的第n次commit?

我想更改提交 HEAD^2 中的一个单词,该怎么做?

编辑 这些提交尚未被推送。因此它不会像pick xxxxxx在交互式编辑器中那样显示。

答案1

git rebase -i <name your branch's parent, probably "master">

Vim 将打开,您将看到类似这样的内容;

pick ba95551 Commit_message_1
pick 3e357b5 Commit_message_for_commit_I_want_to_edit
pick 5eee414 Commit_message_3
pick c9a1f38 Commit_message_4
  1. 将光标(使用鼠标/箭头键/或命令“h”“j”“k”“l”)定位到要编辑的提交的行首。
  2. 按“Insert”进入编辑模式
  3. 输入“e”表示“编辑”
  4. 删除单词“pick”(“esc”“d”“w”表示“删除单词”,或者直接按几次删除键)

你应该看到类似这样的内容;

pick ba95551 Commit_message_1
e 3e357b5 Commit_message_for_commit_I_want_to_edit
pick 5eee414 Commit_message_3
pick c9a1f38 Commit_message_4

按“Esc”进入命令模式。输入“:wq”写入,退出。按回车键。

Git 现在将重新应用您到该点为止的提交。然后您可以像平常一样自由地“编辑上一个提交”:

git commit --amend

或者

git gui

交互式 rebase 还允许您重新排序和删除您选择的提交。您应该知道,像这样重写历史记录会影响那些从您那里拉取的人。请参阅从上游 rebase 中恢复

答案2

如果您确实想编辑HEAD^<n>,那么执行此操作的方法就是运行:

git rebase -i HEAD^<n+1>`

列表中的第一个提交应该是HEAD^n;将其命令从 更改pickedit

当它返回提示时,进行修改、提交并运行git rebase --continue

注意:如果您只想更改该特定提交的内容,您可能还希望/需要对edit下一个提交 ( ) 进行更改,以取消应用您所做的任何更改。也许最简单的方法是先标记该提交,然后从存储库根目录HEAD^<n-1>执行操作以修复重新定基的版本。git checkout <tag_name> .

相关内容