如何让git使用我选择的编辑器来编辑提交消息?

如何全局配置git以使用特定的编辑器(例如vim)来提交消息?

1240959 次浏览

运行:

git config --global core.editor "vim"

man git-commit

环境和配置变量

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

设置Git的默认编辑器

挑一个:

  • 在Git配置中设置#0

    git config --global core.editor "vim"
  • 设置#0环境变量:

    export GIT_EDITOR=vim

为所有程序设置默认编辑器

设置标准化的VISUALEDITOR环境变量*:

export VISUAL=vimexport EDITOR="$VISUAL"

注:不一定都需要设置,但有些程序可能不使用更正确的VISUAL。参见#0 vs.#2


修复兼容性问题

一些编辑器需要--wait标志,否则他们将打开一个空白页面。例如:

  • 崇高文本(如果正确设置;或使用可执行文件的完整路径代替subl):

    export VISUAL="subl --wait"
  • VS代码(添加shell命令后):

    export VISUAL="code --wait"

对于emacs用户

.emacs

(server-start)

shellrc

export EDITOR=emacsclient

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

git config --global core.editor "pico"

export VISUAL=picoexport EDITOR=pico

在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 mode1            /bin/ed             -100       manual mode2            /bin/nano            40        manual mode* 3            /usr/bin/vim.basic   30        manual mode4            /usr/bin/vim.tiny    10        manual mode
Press enter to keep the current choice[*], or type selection number:

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

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

崇高无法保持焦点。

为了解决这个问题,我打开了c:/user/username/文件夹中的. gitconfig文件,并在单引号之外添加了以下带有--等待选项的行。

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

希望这对那些面对Sublime类似问题的人有所帮助。

在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"

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

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

对于64位Notepad++使用:

[core]editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar

对于32位Notepad++使用:

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

尝试EDITOR=vim git commit

或者您可以在bashrc中将您的EDITOR设置为vimexport EDITOR=vim

对于文本用户

这会在您想要编辑提交时打开Textate编辑器。需要安装文本模式命令行工具。

git config --global core.editor "mate -w"

Atom作为你的git编辑器

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

Atom需要配置为从命令行运行才能正常工作:

osx:从Atom安装shell命令:菜单栏>Atom>安装Shell命令

windows:不需要任何操作-默认情况下,atom配置为从命令行运行

Mvim作为你的git编辑器

与所有其他GUI应用程序一样,您必须使用等待标志启动mvim。

git config --global core.editor "mvim --remote-wait"

Windows:将记事本设置为默认提交消息编辑器

git config --global core.editor notepad.exe

点击Ctrl+S保存提交消息。要丢弃,只需关闭记事本窗口而不保存。

如果您点击保存的快捷方式,然后决定中止,转到文件->另存为,在打开的对话框中,将另存为类型更改为所有文件 (*. *)". 您将看到一个名为COMMIT_EDITMSG的文件。删除它,然后关闭记事本窗口。

编辑:或者,更容易,从打开的记事本窗口中删除所有内容并点击保存。(感谢姆弗劳恩利的评论!)

我认为对于像提交消息这样的小文章,记事本最适合,因为它很简单,有窗口,立即打开。当你有一大堆插件和东西时,即使你的崇高也可能需要一两秒钟才能被激发起来。

对于来自Mac应用商店的TextWrangler用户:

git config --global core.editor "open -n -W -a TextWrangler"

此外,确保您的“TextWrangler>首选项>应用程序>当TextWrangler变得活跃时:”设置设置为“什么都不做”

这适用于Mac应用商店的OS X 10.11.4和TextWrangler 5.0.2。

说明:

-n表示在新实例中打开。

-W表示在使用编辑文件的内容作为提交消息之前等待应用程序退出。

一个文本牧马人表示使用TextWrangler应用程序打开文件。

有关详细信息,请参阅Mac终端应用程序中的man open

对于想要使用Kinesics文本编辑器的Windows用户

创建一个名为“k.sh”的文件,添加以下文本并将其放置在主目录(~)中:

winpty "C:\Program Files (x86)\Kinesics Text Editor\x64\k.exe" $1

在git提示符下键入:

git config --global core.editor ~/k.sh

要使Visual Studio Code(vscode)成为默认的git编辑器:

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

对于希望将neovim与Windows子系统一起用于Linux的Windows用户:

git configcore.editor"C:/Windows/system 32/bash.exe--login-c'nvim. git/COMMIT_EDITMSG"

这是没有一个万无一失的解决方案,因为它不处理交互式重基(例如)。非常欢迎改进!

Sublime Text 3或4作为Git编辑器的最佳设置(Windows和Linux说明):

要在Windows中遵循这些说明,请确保您安装了git for windows。在Windows中,我喜欢使用Git Bash,这样感觉更像Linux。

首先,我们想创建一个特殊的Sublime Text项目,这样我们就可以在Git调用编辑器时指定我们想要设置的专项设置,以便在Git中编辑时更容易。例如,我通常在大多数项目中将我的标尺设置为120个字符,但对于Git提交消息,我希望它是72个字符,这样当你调用git log#1时,它就可以很好地适应终端。


1.创建一个Sublime Text项目,其中包含我们要用于编辑Git提交消息的设置

打开Sublime Text并转到菜单“文件”“新窗口”以创建一个新的匿名项目。转到菜单“项目”"将项目另存为…"并选择一个保存它的位置。在Linux我将其保存在我Linux的主目录中,文件名为.gitconfig.sublime-project。因此它的路径是:~/.gitconfig.sublime-project在windows也将其保存在您的主目录中,例如:C:\Users\MY_USER_NAME\.gitconfig.sublime-project现在转到菜单“项目”~/.gitconfig.sublime-project0以编辑项目设置。粘贴以下内容并保存设置。如果需要,请为您的项目设置进行任何进一步的编辑。

{// For folder settings help see here: https://www.sublimetext.com/docs/3/projects.html
"folders":[
],
"settings":{
// Disables horizontal scrolling if enabled.// May be set to true, false, or "auto", where it will be disabled for// source code, and otherwise enabled."word_wrap": false,
// Set to a value other than 0 to force wrapping at that column rather than the// window width"wrap_width": 0,
// Columns in which to display vertical rulers"rulers": [72, 50], //72 is recommended by git for commit message content, and 50 for commit titles
// The number of spaces a tab is considered equal to"tab_size": 4,
// Set to true to insert spaces when tab is pressed"translate_tabs_to_spaces": true,},
"build_systems":[
]
}

2.设置Git使用的编辑器

现在我们需要通过编辑.gitconfig文件来设置Git使用的编辑器。

Linux:

您的用户副本将位于~/.gitconfig中。打开此文件并添加以下行。请务必为您刚刚在上面创建的Git项目使用正确的路径名!我正在使用~/.gitconfig.sublime-project

[core]editor = subl --project ~/.gitconfig.sublime-project --wait

--wait很重要,因为它强制Git等到您关闭文件才能继续。--project行很重要,可以告诉Sublime Text您要在Git打开Sublime Text时打开哪个项目。

根据上面(https://stackoverflow.com/a/2596835/4561887)的回答,“subl可以被可执行文件的完整路径替换,但[别名subl]通常在[Sublime]正确安装时可用。”

对于Windows:

对于Windows,首先阅读背景信息的Linux说明。现在我们将做一些几乎相同的事情。

(可选:创建subl别名以在Git Bash中使用):

打开一个文本编辑器(例如,Notepad、Notepad++、Sublime Text、Geany等),并在主目录中创建一个名为“.bash_profile”的文件。因此,它的路径将是:C:\Users\MY_USER_NAME\.bash_profile。将以下内容保存到其中:

alias subl="/c/Program\ Files/Sublime\ Text\ 3/subl.exe"

这将创建一个名为subl的Git Bash别名,我们现在可以在Git Bash for Windows中使用它来轻松打开Sublime Text。这一步不是必需的,但它对一般的Git Bash使用很有用。现在您可以调用subl .,例如,在Git Bash中打开当前目录中的新Sublime Text项目。

(任务):

通过添加以下内容来编辑主目录中的.gitconfig文件:C:\Users\MY_USER_NAME\.gitconfig。注意上面Linux说明的细微变化:

[core]editor = 'C:/Program Files/Sublime Text 3/subl.exe' --project ~/.gitconfig.sublime-project --wait
  • 请注意,您必须指定Sublime Text可执行文件的完整路径。注意斜线的方向!使用/\分隔路径名中的文件夹!(感谢VonC帮我看清这一切)。
  • 我们在上面为Git Bash创建的subl别名在这里不起作用,因此您不能像我们在Linux示例中那样使用它,而是必须指定如上所示的整个路径。
  • 但是,~符号在这里仍然可以到达您的Windows主目录。

2.5.(可选)将“Git”包安装到Sublime Text 3中。

这为您提供了git commit消息的语法高亮显示,以及访问其他Git命令,例如git blame(我在Sublime Text中经常使用)或git commit(我在Sublime Text中不使用,因为我更喜欢通用Git流的命令行,正如我在下面的评论中提到的)。

安装软件包:首先,确保安装了“软件包控制”。接下来,按Ctrl+Shift+P(与工具→命令面板相同)并键入“软件包控制:安装软件包”的全部或部分,然后按输入。在出现的搜索框中,搜索“Git”软件包并点击输入,或单击它,自动安装。

安装后,Ctrl+Shift+P然后搜索“git”将弹出您现在可以在Sublime Text内部使用的Git命令,例如git blame


3.使用它

现在,当您调用git commit时,例如,从命令行正常,Sublime Text将打开到我们上面创建的.gitconfig.sublime-project,以及该项目的设置!当您键入段落时,您会注意到它超出了我们设置的标尺,因为软换行已关闭。要通过每行末尾的自动插入硬返回强制硬换行,请将光标放在想要自动换行的长行上,然后按Alt+Q它现在将以72个字符进行硬包装/硬折叠,这是我们在上面的项目设置“标尺”参数中设置的。

现在,使用Ctrl+S保存您的提交消息,并使用Ctrl+Shift+W退出(以完成您的git commit)。

成交!

相关:

  1. Git mergetool with Meld on Windows
  2. https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles

这为想要链接vim以外的编辑器的人提供了一个答案。

链接的资源,由github,很可能保持最新,当编辑器更新时,即使SO上的答案(包括这个)不是。

将文本编辑器与git关联

Github的帖子准确地显示了在各种编辑器的命令行中输入什么,包括每个编辑器特定的选项/标志,以便它与git一起工作。

记事本++:
git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

崇高文本:
git config --global core.editor "'c:/Program Files/sublime text 3/subl.exe' -w"

原子:
git config --global core.editor "atom --wait"

上面的命令假设您的编辑器已安装在windows机器的默认目录中。

这些命令基本上将双引号之间的文本添加到主目录中的.gitconfig
在Windows机器上,home可能是C:\Users\your-user-name,其中you-user-name是您的登录名。
从命令行,您可以通过键入cd ~到达此目录。

例如,上面的命令将在[core]部分下添加以下行:
[core]Editor='C:/Program Files/sublime text 3/subl.exe'-w

如果您有不同的编辑器,只需使用上述任何一种方法替换为编辑器的路径。(希望不需要标志来实现最佳使用。)

当使用git-review时,我必须修改sequence.editor值才能进行交互式rebase(git rebase -i -p):

git config --global sequence.editor "gvim"  # or whatever your prefer

gvim需要:apt install vim-gtk

参考文献

对于Mac OS X,使用文本编辑或自然环境编辑器的文本:

git config --global core.editor "open -W -n"

对于IntelliJ用户

当我尝试git rebase时,我收到以下错误:'提示:等待您的编辑器关闭文件… code-n-w: code:命令未找到错误:编辑器'code-n-w'有问题。'

当我试图将IntelliJ与Git关联时,出现了同样的错误:输入图片描述

问题是我没有在我的环境PATH变量中添加命令代码。我不想从我的终端使用Visual Studio Code。这就是为什么它提示“未找到命令”。我通过删除来解决这个问题

编辑器=代码-n-w

从我的. gitconfig文件的核心部分。Git再次正常工作。

只是因为我来这里寻找一个一次性的解决方案(在我的情况下,我通常使用vim,但这一次我想使用VS Code)对于一个命令,其他人可能也想知道:

GIT_EDITOR='code -w' git rebase -i …

这是我的git/#1版本,只是为了上下文:

git version 2.24.2 (Apple Git-127)hub version 2.14.1

要使vim成为ubuntu 20:04上git的默认编辑器,请运行以下命令:

git config --global core.editor vim

对于EmEditor用户

要将EmEditor设置为Git的默认文本编辑器,请打开Git Bash,然后键入:

git config --global core.editor "emeditor.exe -sp"

需要EmEditor v19.9.2或更高版本。

在TextMate的macOS Big Sur(11.0)测试版上:没有任何环境变量选项有效。(设置所有三个:GIT_EDITOR、VISUAL和EDITOR。)

最后在git中设置全局core.editor,这是有效的:
git config --global core.editor "~/bin/mate -w"

对于Windows,Neovim:

# .gitconfig
[core]editor='C:/tools/neovim/Neovim/bin/nvim-qt.exe'

对于MAC,BBEdit:

首先,打开BBEdit,单击BBEdit徽标,然后选择安装命令行工具。

然后从命令行,

git config --global core.editor "BBEdit -w"

有一个你可以使用的逗号列表,但是对于vs代码使用这个

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

这是所有编辑器的链接:https://git-scm.com/book/en/v2/Appendix-C%3A-Git-Commands-Setup-and-Config

让Neovim成为Linux默认Git编辑器的最简单方法

git config --global core.editor "nvim"

搞定🤘

在Git配置中设置core.editor:

git config --global core.editor "nano"

设置GIT_EDITOR环境变量:

export GIT_EDITOR=nano