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

bra*_*zoo 2362 git vim emacs commit-message editor

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

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

dig*_*mer 3254

如果你想设置的编辑对Git的,你要么(你不需要两者):

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

如果要为Git 和其他程序设置编辑器,请设置标准化VISUALEDITOR环境变量*:

export VISUAL=vim
export EDITOR="$VISUAL"
Run Code Online (Sandbox Code Playgroud)

*不一定需要设置两者,但有些程序可能不会使用更正确的VISUAL.见VISUALEDITOR.


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

[core]
    editor = 'subl' --wait
Run Code Online (Sandbox Code Playgroud)

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

  • EDITOR环境变量的优点是许多其他程序也会尊重它. (93认同)
  • 您可以通过尝试修改最后一次提交消息来测试您是否成功更改了它.`git commit --amend` (37认同)
  • 请注意,`git config --global`会写入您的个人(每用户)git配置文件.在Unices上它是`〜/ .gitconfig`.因此,这将为您的所有存储库配置它. (14认同)
  • 如果您在Windows中执行选项#1并且在编辑器的路径中有空格(例如,如果它位于Program Files下),那么在双引号内打单引号.例如"'C:/ Program Files(x86)/Whatever/App.exe'" - 对一些人来说很明显,但对我来说不是这样! (11认同)
  • @Abramodj`-w`不是必需的; `-w {scriptout}`保存您在编辑时键入的所有字符,以便稍后重播.也许你把它与`-f`混淆了,在调用Vim的GUI版本时*是必需的.也就是说,如果你使用`mvim`,那么你指定的编辑器应该是`mvim -f`而不是`mvim`. (5认同)
  • 对于崇高的文本 3:`git config --global core.editor "subl -n -w" ~ ` (2认同)

Mar*_*off 571

复制粘贴:

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

如果您想知道自己在做什么.来自man git-commit:

环境和配置变量

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

  • 为了完整起见,core.editor表示文件中的[core] editor = ... (12认同)
  • 是的 - http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1.3.2所以理论上,如果我同时使用svn和git,设置$ VISUAL或$ EDITOR将是默认涵盖两者的最佳解决方案! (8认同)
  • @armandino:是的,其他人可能会使用`VISUAL`或`EDITOR`,但他们当然不会使用`GIT_EDITOR`或`core.editor`. (6认同)
  • 顺便说一句,上面的内容适用于CVS和SVN,我想其他版本控制. (4认同)
  • 没有回答"如何配置git ......"的问题 (2认同)

Koe*_*en. 177

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

sudo update-alternatives --config editor
Run Code Online (Sandbox Code Playgroud)

这将提示以下内容:

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: 
Run Code Online (Sandbox Code Playgroud)

  • 在Debian上,这也有效,谢谢!它默认为pico - argh. (7认同)
  • 当然它适用于Debian; 这是一个Debian功能,就像大多数事情一样(哦,有争议!),Ubuntu只是继承.Debian的`alternative`系统是一种更简单的方法来管理支持的程序类型的默认值.供参考:https://www.debian-administration.org/article/91/Using_the_Debian_alternatives_system (2认同)
  • @haziz`update-alternatives`将显示所有已安装的编辑器。Koen尚未安装Emacs。 (2认同)

Anm*_*raf 59

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

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

Sublime无法保持关注.

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

[core]
      editor = 'F:/Program Files/Sublime Text 2/sublime_text.exe' --wait
Run Code Online (Sandbox Code Playgroud)

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

  • 任何git commit的编辑器都将主要用于添加多行注释,而Sublime是程序员的选择,因为各种开发人员的各种原因.人们通常倾向于使用一个编辑器来完成大部分编码和其他工作.Sublime只是个人选择,它可以是任何编辑器. (13认同)
  • 刚发现单引号'是必需的.它不适用于双引号". (4认同)

Rya*_*yan 53

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

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

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

  • 您可能需要将至少`-multiInst`作为参数添加到记事本++和可能的`-notabbar`.如果git在您完成编辑文件时似乎不知道并且要么永远等待,要么根本不等,请执行此操作. (10认同)
  • 在命令行上设置配置,我需要单引号内的双引号,如`> git config --global core.editor'"C:/ Program Files(x86)/ Notepad ++/notepad ++.exe"'` (4认同)
  • 要添加Notepadd ++参数,我必须这样做:`editor ='C:/ Program Files(x86)/ Notepad ++ / notepad ++。exe'-multiInst -notabbar`-也就是说,参数在定界单引号之外 (2认同)

Mar*_*son 27

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

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


tri*_*ley 23

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

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

要么

export VISUAL=pico
export EDITOR=pico
Run Code Online (Sandbox Code Playgroud)


Ham*_*fri 18

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

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


Moh*_*sen 17

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

运行此命令:

$ git config --global core.editor "/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl"
Run Code Online (Sandbox Code Playgroud)

要不就:

$ git config --global core.editor "subl -w"
Run Code Online (Sandbox Code Playgroud)

  • Visual Studio Code也支持`-w`参数.例如.`$ git config --global core.editor"code -w"`.整洁的东西 (2认同)

Phi*_*aro 17

您可以:

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

或者,在你的.gitconfig

[core]
    editor = vim
Run Code Online (Sandbox Code Playgroud)


2To*_*oad 16

Atom作为你的git编辑器

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

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

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

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


Sна*_*ƒаӽ 11

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

git config --global core.editor notepad.exe
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:或者,更轻松地从打开的记事本窗口中删除所有内容并点击保存.(感谢mwfearnley的评论!)

我认为对于小写,例如提交消息,记事本服务最好,因为它很简单,有窗口,立即打开.当你有大量的插件和东西时,即使你的崇高也可能需要一两秒才能被激怒.

  • 您可以将文件空白(或注释掉任何非空白行),而不是转到文件 - >另存为,然后Git将因空提交消息而中止. (2认同)

She*_*man 11

这为遇到此问题的人们提供了一个答案,他们可能希望链接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,其中your-user-name是您的登录名。
在命令行中,输入可以访问此目录cd ~

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

如果您使用的是其他编辑器,请使用上述两种方法替换为编辑器的路径。(并希望不需要标记来实现最佳用法。)


Ben*_*las 9

对于emacs用户

.emacs:

(server-start)
Run Code Online (Sandbox Code Playgroud)

shellrc:

export EDITOR=emacsclient
Run Code Online (Sandbox Code Playgroud)

  • 这里是如何在命令`git config --global core.editor"emacs -nw"时在终端模式下设置emacs (6认同)

Gab*_*les 7

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

要在Windows中按照这些说明操作,请确保已安装适用于Windows的git.在Windows中,我喜欢使用Git BASH,因此感觉更像Linux.

首先,我们想要创建一个特殊的Sublime Text项目,这样我们就可以在git调用编辑器时指定我们想要设置的特殊项目设置,以便在git中编辑时更容易.例如,我通常把我的尺子120个字符的大部分项目,但对于git的承诺的消息我希望它是72个字符,这样当你调用一个终端非常适合git loggit lg.


1.创建一个Sublime Text项目,其中包含我们要用来编辑git commit消息的设置

打开Sublime Text并转到"File" - >"New Window"以创建一个新的匿名项目.转到"项目" - >"将项目另存为..."并选择要保存的位置.在Linux中,我使用文件名将其保存在我的Linux主目录中.gitconfig.sublime-project.因此,它的路径是:~/.gitconfig.sublime-project.在Windows中也将其保存在您的主目录中,例如:C:\Users\MY_USER_NAME\.gitconfig.sublime-project 现在转到"项目" - >"编辑项目"以编辑项目设置.粘贴以下内容并保存设置.如果需要,可以对项目设置进行进一步编辑.

{
    // 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":
    [

    ]

}
Run Code Online (Sandbox Code Playgroud)

2.设置git使用的编辑器

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

对于Linux:

您的用户副本将位于~/.gitconfig.打开此文件并添加以下行.一定要使用正确的路径名来创建上面刚刚创建的git项目!我正在使用~/.gitconfig.sublime-project.

[core]
    editor = subl --project ~/.gitconfig.sublime-project --wait
Run Code Online (Sandbox Code Playgroud)

--wait很重要,因为它迫使git等到你继续之前关闭文件.该--project行重要的是要知道哪些项目时混帐崇高打开你想要打开的崇高文本.

Per @ digitaldreamer上面的答案(/sf/answers/181778481/)," subl可以替换为可执行文件的完整路径,但[ subl正确]安装时,[ 别名]通常可用."

对于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"
Run Code Online (Sandbox Code Playgroud)

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

(必选):

编辑.gitconfig主目录中的文件:C:\Users\MY_USER_NAME\.gitconfig,添加以下内容.请注意上面Linux指令的细微变化:

[core]
  editor = 'C:/Program Files/Sublime Text 3/subl.exe' --project ~/.gitconfig.sublime-project --wait
Run Code Online (Sandbox Code Playgroud)
  • 请注意,您必须指定Sublime Text可执行文件的完整路径.注意斜线的方向!使用/NOT \来分隔路径名中的文件夹!(感谢VonC 帮助我看到这个).
  • 我们subl上面为Git BASH制作的别名在这里不起作用,所以你不能像在Linux示例中那样使用它,而是必须指定如上所示的整个路径.
  • ~但是,该符号仍可用于访问Windows主目录.

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

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

要安装软件包:首先,确保安装了"软件包控制".接下来,按Ctrl+ Shift+ P(与工具→命令选项板相同)并键入"Package Control:Install Package"的全部或部分,然后按Enter键.在出现的搜索框中,搜索包"Git"并按Enter键,或单击它,自动安装它.

一旦安装,Ctrl+ Shift+ P然后搜索"git"将调出你可以在Sublime Text内部使用的git命令,例如git blame.


3.使用它

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

现在,保存与提交信息Ctrl+ S,并退出(以完成git commit用)Ctrl+ Shift+ W.

完成!


big*_*heo 5

有一个您可以使用的命令列表,但对于 VS Code 使用此命令

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

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


小智 5

在 Git 配置中设置 core.editor:

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

设置 GIT_EDITOR 环境变量:

export GIT_EDITOR=nano
Run Code Online (Sandbox Code Playgroud)