如何在终端中的`git commit --amend`之后确认更改?

Bar*_*zyk 8 git terminal git-amend git-commit

当我写作时,git commit --amend我会得到某种编辑器,我可以在其中更改此提交的名称.如何使用键盘确认并保存我的更改?

Tra*_*vis 18

扩展William Pursell所说的话,你可能最终进入了vim.保存更改并退出编辑器,输入:命令,然后按wq,然后按回车键.要退出vim而不保存更改,请执行此操作:q!.

要将此默认值更改为您更熟悉的内容,可以将EDITOR变量设置为您选择的内容(尝试nano).

只需放在(创建文件,如果您还没有它)export EDITOR=nano的末尾,~/.bash_profile以便为每个新的终端会话获得此行为.

此外,您可以完全git commit --amend -m 'Your message here'不需要编辑器.

  • 虽然这个答案提出了很好的替代方案,但它并没有解决问题中所述的实际问题。 (3认同)

Jen*_*eaf 9

如果您使用 git bash 命令提示符,并且尚未推送。您可以使用

git commit --amend -m "new message"
Run Code Online (Sandbox Code Playgroud)

如果你已经推送了,你可以使用rebase

git rebase -i HEAD~1
Run Code Online (Sandbox Code Playgroud)

其中“i”表示接口,“1”表示最后一个。如果您想要最后两个,则输入“2”。

Rebase 将带你进入一个非常尴尬的“VI”编辑器。通过插入键确保键盘处于“插入”模式。

然后将黄色单词“pick”覆盖为“reword”。然后你用新命令覆盖有趣的 id 之后的旧消息。然后按键盘上的“Esc”退出 INSERT 模式。现在你必须退出“VI”并保存。

输入:wq然后按“ENTER”保存您的编辑。如果您看到他们向您提出更多问题,请再次按“ENTER”

一旦你回到“$”模式,你就可以

git push --force
Run Code Online (Sandbox Code Playgroud)

祝你好运。


Mar*_*n G 5

像这样配置编辑器(以gedit为例):

git config --global core.editor "gedit"
Run Code Online (Sandbox Code Playgroud)

您可以像这样读取当前配置:

git config core.editor
Run Code Online (Sandbox Code Playgroud)

您也可以从命令行添加提交消息。

git commit --amend -m "blablabla"
Run Code Online (Sandbox Code Playgroud)

并且根本不会打开编辑器。

  • 虽然这个答案提出了很好的替代方案,但它并没有解决问题中陈述的实际问题。 (2认同)

Yun*_*uan 5

这个线程似乎回答了您的问题:Git - 如何关闭提交编辑器?

将文件保存在编辑器中。如果是 Emacs: CTRLX CTRLS 保存然后 CTRLX CTRLC > 退出或者如果是 vi: :wq

先按 esc 退出编辑。(在 windows/vi 中)