我最近$ 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,因此Atom会打开' IN 正确的提交消息'显示,我改为'正确提交消息'并保存我的更改。
保存更改后的提交消息后,我做了$ git log -1
期望看到“正确提交消息”&#39 ;;但是,我仍然看到' IN 正确的提交消息。'
我究竟做错了什么?
注意
就在此之前,我按照以下说明将我的git编辑器从Sublime更改为Atom:How do I make Git use the editor of my choice for commits?
我基本上使用过:
$ git config --global core.editor "atom"
和
$ export GIT_EDITOR=atom
我现在意识到我不必同时做这两件事,但我也意识到这可能也没有什么坏处。
答案 0 :(得分:3)
有两个的东西为我解决了这个问题。
<强>一强>
正如@torek在我的原帖中所附的评论中指出的那样,在调用Atom时设置 - wait 参数会阻止git从$ git commit --amend
命令返回。显然,这对于git成功捕获已更改的提交消息是必要的,而不是在消息被更改之前返回。有道理。
$ git config --global core.editor "atom --wait"
<强>两个强>
显然,如果我没有 明确保存 我更改的提交消息(mac上的命令+),它将永远不会被保存。我必须这样做才能获取提交消息以识别我更改的提交消息。
起初看起来非常明显;但是,如果我改变了我的提交消息并点击了关闭窗口按钮(在Mac上窗口左上方的&#39; x),就会发生奇怪的事情......
如果我更改了提交消息,请使用关闭窗口按钮关闭Atom(&#39; x&#39;),然后执行$ git log -1
命令,提交消息将显示原始未更改的提交消息。 那里没什么奇怪的。
但是,如果我然后执行了另一个 $ git commit --amend
命令,Atom将打开并显示来自上一个的更改后的提交消息$ git commit --amend
命令!如果你问我,这是非常奇怪的行为。不是一个git guru,让我们说这并没有为我解决任何困惑。
底线
附加 - 等待参数($ git config --global core.editor "atom --wait"
), 显式 在Atom中保存更改的提交消息(命令+在执行$ git commit --amend
。