$ git commit --amend不更改/保存提交消息

gan*_*elo 2 git github git-commit git-commands atom-editor

最近,$ git add .我对其中一个存储库进行了一些更改,然后是$ git commit -m'INcorrect commit message'

我决定使用以下方式将错误的提交消息更改为“正确的提交消息”

$ git commit --amend

可以在以下位置找到我遵循的说明:https : //git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages

我使用的Atom,所以原子与打开“ IN正确的提交信息”显示,我更改为“正确的提交信息”,然后保存我的变化。

保存更改后的提交消息后,我$ git log -1期望看到“正确的提交消息”;但是,我仍然看到“ IN正确的提交消息”。

我到底在做什么错?

注意

在此之前,我按照以下说明将git编辑器从Sublime更改为Atom:如何使Git使用我选择的编辑器进行提交?

我基本上使用了:

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

$ export GIT_EDITOR=atom

现在,我意识到我不必同时执行这两项操作,但是我也意识到这可能也没有伤害。

gan*_*elo 5

件事为我解决了这个问题。

正如@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"),并在执行时将更改的提交消息显式保存在Atom中(在Mac上为Command + s)$ git commit --amend