题 如何让Git使用我选择的编辑器进行提交?


我更愿意在Vim中编写提交消息,但它在Emacs中打开它们。

如何配置Git以始终使用Vim?请注意,我想在全球范围内执行此操作,而不仅仅是针对单个项目。


1899
2018-04-08 00:28


起源


“如何从git-go获取git来提交评论?” - Michael Burr
相关(可能重复): 如何在Windows上设置编辑器以使用Git? - Steven Vascellaro


答案:


如果要设置编辑器 只要 对于Git,要么(你不需要两者):

  • core.editor 在你的Git配置中: git config --global core.editor "vim"
  • 设置 GIT_EDITOR 环境变量: export GIT_EDITOR=vim

如果你想为Git设置编辑器 以及其他计划,设定标准化 VISUAL 和 EDITOR 环境变量*:

export VISUAL=vim
export EDITOR="$VISUAL"

*不一定需要设置两者,但某些程序可能不会使用更正确的 VISUAL。看到 VISUAL 与 EDITOR


对于Sublime Text: 将此添加到 .gitconfig。该 --wait 很重要(它允许在sublime中键入文本并等待save / close事件。

[core]
    editor = 'subl' --wait

'subl'可以替换为可执行文件的完整路径,但通常在正确安装时可用。


2677
2018-04-08 00:34



EDITOR环境变量的优点是许多其他程序也会尊重它。 - Boojum
注意 git config --global 会写入您的个人(每用户)git配置文件。在Unices上 ~/.gitconfig。因此,这将为您的所有存储库配置它。 - Jakub Narębski
您可以通过尝试修改最后一次提交消息来测试您是否成功更改了它。 git commit --amend - Marco M.
如果您在Windows中执行选项#1并且在编辑器的路径中有空格(例如,如果它在Program Files下),那么在双引号内打单引号。例如“'C:/ Program Files(x86)/Whatever/App.exe'” - 对一些人来说很明显,但这对我来说不是! - Pablissimo
@Abramodj -w 没有必要; -w {scriptout} 保存编辑时键入的所有字符以便稍后重播。也许你会混淆它 -f, 哪一个 是 调用Vim的GUI版本时必需。也就是说,如果你使用 mvim,那么你指定的编辑器应该是 mvim -f 而不是 mvim。 - Rory O'Kane


复制粘贴:

git config --global core.editor "vim"

如果您想知道自己在做什么。从 man git-commit

环境和配置变量

用于编辑提交日志消息的编辑器将从中选择 GIT_EDITOR 环境变量, core.editor 配置变量, VISUAL 环境变量,或 EDITOR 环境变量(按此顺序)。


461
2018-04-08 00:31



顺便说一句,上面的内容适用于CVS和SVN,我猜其他版本控件。 - armandino
@armandino:是的,其他人可能会使用 VISUAL 要么 EDITOR,但他们肯定不会使用 GIT_EDITOR 要么 core.editor。 - Mark Rushakoff
是的 - svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1.3.2 所以从理论上讲,如果我同时使用svn和git,设置$ VISUAL或$ EDITOR将是默认覆盖两者的最佳解决方案! - brasskazoo
为了完整起见,core.editor表示文件中的[core] editor = ... - JRG
没有回答“如何配置git ......”的问题。 - Ant6n


在Ubuntu和Debian上(感谢@MichielB)也可以通过运行来更改默认编辑器:

sudo update-alternatives --config editor

这将提示以下内容:

There are 4 choices for the alternative editor (providing /usr/bin/editor).

  Selection    Path                Priority   Status
------------------------------------------------------------
  0            /bin/nano            40        auto mode
  1            /bin/ed             -100       manual mode
  2            /bin/nano            40        manual mode
* 3            /usr/bin/vim.basic   30        manual mode
  4            /usr/bin/vim.tiny    10        manual mode

Press enter to keep the current choice[*], or type selection number: 

144
2017-10-27 15:35



在Debian上这也有效,谢谢!它默认为pico - argh。 - MichielB
不在拱门? :[ - dylnmc
当然它适用于Debian;这是一个Debian功能,就像大多数事情一样(哦,有争议!),Ubuntu只是继承。 Debian的 alternatives system是一种更简单的方法来管理受支持的程序类型的默认值。以供参考: debian-administration.org/article/91/... - underscore_d
它有效,而 GIT_EDITOR 和 EDITOR  不工作--ubuntu - Ninja
没有Emacs的选项?如果是真的,多么可惜! - haziz


在Windows 7中,在添加“Sublime”编辑器时它仍然给我一个错误:

由于空提交消息而中止提交。

Sublime无法保持专注。

为了解决这个问题,我在c:/ users / username /文件夹中打开了.gitconfig文件,并在双引号外添加了以下行--wait选项。

[core]
      editor = 'F:/Program Files/Sublime Text 2/sublime_text.exe' --wait

希望它对Sublime面临类似问题的人有所帮助。


53
2018-02-21 17:15



太好了!谢谢Anmol,我正在解决这个问题。 - sircapsalot
为什么要将sublime用于git提交? - Adam F
任何git commit的编辑器都将主要用于添加多行注释,而Sublime是程序员的选择,因为各种开发人员的各种原因。人们通常倾向于使用一个编辑器来完成大部分编码和其他工作。 Sublime只是个人选择,它可以是任何编辑器。 - Anmol Saraf
刚刚发现单引号'是必需的。它不适用于双引号“。 - dotnetCarpenter
您可以使用此命令而不是手动编辑gitconfig git config --global core.editor "'C:/Program Files/Sublime Text 3/subl.exe' --wait" - KayakinKoder


在Windows 7中,将编辑器设置为Notepad ++

  • 打开任何文本编辑器。
  • 打开此文件: C:\Users\YOUR_USERNAME\.gitconfig
  • 将此部分添加到底部:

[core]
    editor = 'C:/Program Files (x86)/Notepad++/notepad++.exe' 
  • 保存并关闭文件。
  • 当你使用git时,只需写 git commit 并按 Enter。它将弹出Notepad ++。
  • 在文件顶部写下提交消息,然后保存并关闭文件。完成!

47
2018-03-07 00:08



终于有人知道如何写它简单!谢谢。但你应该提到,在记事本的路径中必须使用'/'或双反斜杠'\\',否则git会抱怨... - icl7126
您可能需要至少添加 -multiInst 作为记事本++和可能的参数 -notabbar。如果git在您完成编辑文件时似乎不知道并且要么永远等待,要么根本不等,请执行此操作。 - ErikE
正是我想要的。对比使用\和/ - Henry
要在命令行上设置配置,我需要在单引号内加双引号 >git config --global core.editor '"C:/Program Files (x86)/Notepad++/notepad++.exe"' - Josef
要添加Notepadd ++参数,我必须这样做: editor = 'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar  - 也就是说,除了单引号之外的参数 - cropredy


如果你正在与使用命令行的设计师合作,那么Pico,并且不知道捷径;)

git config --global core.editor "pico"

要么

export VISUAL=pico
export EDITOR=pico

21
2018-06-27 13:56





在Mac OSX 10中将Sublime Text 2设置为Git提交编辑器

运行此命令:

$ git config --global core.editor "/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl"

要不就:

$ git config --global core.editor "subl -w"

15
2018-03-01 01:19



我很确定sublime有像textmate这样的可执行文件 mate.. - code ninja
不知怎的,它没有将文本传递给git。我得到了“由于空提交消息而中止提交”。错误。 - mahe madhi
我使用了第一个命令来设置SL。 cmd + S然后cmd + W关闭编辑器 - mahe madhi
Visual Studio Code也支持 -w 参数。例如。 $ git config --global core.editor "code -w"。整洁的东西 - Automatico
这里的替代答案: stackoverflow.com/a/48212377/4561887,以Linux为例。 - Gabriel Staples


使Visual Studio代码(vscode)成为您的默认git编辑器

git config --global core.editor "code --wait"

15
2018-06-28 20:42





Atom作为你的git编辑器

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

需要将Atom配置为从命令行运行以使上述工作:

OS X.:从Atom安装shell命令:菜单栏> Atom>   安装Shell命令

视窗:无需任何操作 - 默认情况下,atom配置为从命令行运行


13
2017-07-13 17:43