有了egit我怎样才能改变旧提交的描述(不是最后一次提交)?

时间:2014-05-26 11:37:48

标签: eclipse git commit egit

上下文:

我正在学习如何在Eclipse中使用git并将其用于只有本地存储库的小项目。

问题:

  • 我刚刚注意到我之前提交的提交附有不正确的描述。
  • 我所犯的文件或其他任何内容都没有错,但为了清楚起见(如果我想还原或其他什么),我想更改有误导性的描述。
  • 我不能修改之前的提交,因为从那以后我做了更多的提交。

解决问题的挣扎尝试:

我不同地试图创建新的分支,修改提交然后重新定位,但最终会出现一堆可怕的合并冲突和意大利面条历史树。 我可以将我的新提交复制并粘贴到txt文件中,使用错误的信息恢复提交,然后从那里重新开始,但我认为使用git的重点是避免做类似的事情。

问题:

是否有一种简单的方法可以更改旧提交的说明文字?

如果没有复杂方式的步骤是什么?!

1 个答案:

答案 0 :(得分:2)

如果您已经在某处修改了修订版:不要

否则:使用git rebase -i <SOME_OLD_REVISION>并使用r(eword)选项标记要更改的提交。

关闭弹出的文件后,将开始重新定位,并且系统会提示您选择输入新提交消息的每个提交。

假设您有以下提交历史记录(最新的第一个):

f6f6f6f last commit
d4d4d4d ...
c3c3c3c third commit
b2b2b2b second commit
a1a1a1a first commit

想要更改b2b2b2bc3c3c3c的消息,您可以

git rebase -i a1a1a1a

接下来,您的收藏编辑器会弹出并显示此对话框:

pick f6f6f6f last commit
pick ...
pick c3c3c3c third commit
pick b2b2b2b second commit

# Rebase b2b2b2b..f6f6f6f onto a1a1a1a
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

pick更改为rreword以进行提交b2b2b2bc3c3c3c,保存文件并退出编辑器。

接下来,将开始变基。

对于您选择reword的提交,您可以输入新的提交消息。