使用"$ git commit --amend"不修改/保存提交信息。

4
我最近使用$ git add . 把我对其中一个代码库所做的更改添加到了版本库,然后用$ git commit -m'INcorrect commit message' 提交了不正确的提交信息。
我决定使用以下命令将提交信息更正为'Correct commit message': $ git commit --amend 我按照这里的说明进行操作:https://git-scm.com/book/zh/v2/Git-工具-重写历史#多个提交信息 我使用Atom作为文本编辑器,所以当我打开提交信息时显示为'INcorrect commit message',我将其更改为'Correct commit message'并保存更改。
在保存更改后,我执行了$ git log -1 命令,希望看到'Correct commit message',但我仍然看到的是 'INcorrect commit message.'。
我到底做错了什么?
注意:
在此之前,我根据以下说明将我的git编辑器从Sublime更改为Atom:如何使Git使用我选择的编辑器进行提交? 我基本上使用了以下命令: $ git config --global core.editor "atom"$ export GIT_EDITOR=atom 我现在意识到我并不需要这样做两次,但我也认识到这可能没有什么坏处。

1
如果您使用的不是Atom编辑器(例如“vim”或“nano”等),行为是否相同? - larsks
@larsks今天晚些时候会尝试一下。 - gangelo
1
请参考 https://stackoverflow.com/q/37706443/1256452,但请注意它在当前版本的Atom中可能已经失效:https://dev59.com/cqnka4cB1Zd3GeqPKTQg。 - torek
1个回答

8

两个事情帮我解决了问题。

一个

正如@torek在他附加到我的原始帖子中的评论中指出的那样,当调用Atom时设置--wait参数会阻止git从$ git commit --amend命令返回。显然,这对于git成功捕获修改后的提交消息是必需的,而不是在消息被修改之前就返回。很有道理。

$ git config --global core.editor "atom --wait"

两个

显然,如果我没有明确保存我修改过的提交信息(在mac上使用command + s),它永远不会被保存。为了让提交消息认识到我修改后的提交消息,我必须这样做。

乍一看,这似乎很明显;但是,如果我修改了提交消息并单击窗口左上角的关闭窗口按钮(mac上的'x'),将会发生一些奇怪的事情......

如果我修改了提交消息,使用关闭窗口按钮('x')关闭Atom,然后随后执行$ git log -1命令,则提交消息将显示原始未经修改的提交消息。没有任何奇怪的地方。

但是,如果我随后执行另一个 $ git commit --amend 命令,则Atom将打开并显示来自上一个 $ git commit --amend 命令的修改后提交消息! 对我来说,这是非常奇怪的行为。由于不是git大师,让我们说这并没有消除我的困惑。

底线

附加--wait参数($ git config --global core.editor "atom --wait"),并在执行$ git commit --amend时在Atom中明确地保存您修改过的提交消息(在mac上使用command + s)。


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