ChatGPT解决这个技术问题 Extra ChatGPT

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

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

“如何让 git 转到 vim 以获取来自 git-go 的提交评论?”
EMACS 有什么问题(微笑)?

M
Mateen Ulhaq

设置 Git 的默认编辑器

选一个:

在你的 Git 配置中设置 core.editor: git config --global core.editor "vim"

设置 GIT_EDITOR 环境变量:export GIT_EDITOR=vim

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

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

export VISUAL=vim
export EDITOR="$VISUAL"

注意: 不一定需要同时设置两者,但某些程序可能不会使用更正确的 VISUAL。请参阅VISUAL vs. EDITOR

修复兼容性问题

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

Sublime Text(如果设置正确;或使用可执行文件的完整路径代替 subl):export VISUAL="subl --wait"

VS Code(添加 shell 命令后):export VISUAL="code --wait"


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

跑:

git config --global core.editor "vim"

man git-commit

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


顺便说一句,上述情况适用于 CVS 和 SVN,我猜还有其他版本控制。
@armandino:是的,其他人可能会使用 VISUALEDITOR,但他们肯定不会使用 GIT_EDITORcore.editor
感谢您澄清马克。我的意思是 EDITOR 变量。我相信 GIT_EDITOR (如果定义)只是覆盖它。
是的 - svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-sect-1.3.2 所以理论上,如果我同时使用 svn 和 git,设置 $VISUAL 或 $EDITOR 将是默认覆盖两者的最佳解决方案!
为了完整起见, core.editor 表示文件中的 [core] editor = ...
K
Koen.

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

在 Debian 上也可以,谢谢!它默认为 pico - 啊。
当然它适用于 Debian;这是 Debian 的一个特性,就像大多数东西(哦,有争议!)一样,Ubuntu 只是继承了它。 Debian 的 alternatives 系统是管理受支持程序类型的默认值的一种更简单的方法。供参考:debian-administration.org/article/91/…
它有效,而 GIT_EDITOREDITOR 无效 --ubuntu
@haziz:在我的系统上,列出的选项之一是 Emacs(其他包括各种版本的 Vim,以及 nano 和 ed)。
@haziz update-alternatives 将显示所有已安装的编辑器。 Koen 只是没有安装 Emacs。
D
Dave Jarvis

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

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

Sublime 无法保持焦点。

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

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

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


好的!谢谢Anmol,我遇到了这个问题,它提交了一条空消息。
为什么要使用 sublime 进行 git 提交?
git commit 的任何编辑器都将主要用于添加多行注释,而 Sublime 是许多开发人员出于各种原因而选择的程序员。人们通常倾向于在大部分编码和其他工作中使用一个编辑器。 Sublime 只是个人选择,它可以是任何编辑器。
您可以使用此命令 git config --global core.editor "'C:/Program Files/Sublime Text 3/subl.exe' --wait" 而不是手动编辑 gitconfig
H
Henrik Høyer

在 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。它将弹出打开记事本++。

在文件顶部写下你的提交信息,然后保存并关闭文件。完毕!


终于有人会写简单了!谢谢。但是你应该提到,在记事本的路径中必须使用'/'或双反斜杠'\\',否则git会抱怨......
您可能需要至少将 -multiInst 作为参数添加到 notepad++,可能还需要添加 -notabbar。如果 git 似乎不知道您何时完成编辑文件并且永远等待或根本不等待,请执行此操作。
要在命令行上设置配置,我需要在单引号内使用双引号,例如 >git config --global core.editor '"C:/Program Files (x86)/Notepad++/notepad++.exe"'
仍然为我打开普通的记事本
要添加 Notepadd++ 参数,我必须这样做:editor = 'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar - 即分隔单引号之外的参数
M
Mateen Ulhaq

要将 Visual Studio Code (vscode) 设为默认 git 编辑器:

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

t
tristanbailey

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

git config --global core.editor "pico"

或者

export VISUAL=pico
export EDITOR=pico

C
Community

Atom 作为你的 git 编辑器

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

Atom 需要配置为从命令行运行才能使上述工作正常运行: OS X:从 Atom 安装 shell 命令:菜单栏 > Atom > 安装 Shell 命令 Windows:无需任何操作 - atom 配置为从命令行运行默认


VSCode 用户:git config --global core.editor "code --wait"
N
Nick Volynkin

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

不知何故,它没有将文本传递给 git。我收到“由于提交消息为空而中止提交。”错误。
我已经使用第一个命令来设置 SL。 cmd + S 然后 cmd +W 关闭编辑器
Visual Studio Code 也支持 -w 参数。例如。 $ git config --global core.editor "code -w"。整洁的东西
此处的替代答案:stackoverflow.com/a/48212377/4561887,以 Linux 为例。
H
Hamfri

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

git config --global core.editor vim

S
SherylHohman

这为遇到此问题的人提供了一个答案,他们可能想要链接除 vim 之外的编辑器。

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

Associating Text Editors with 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 机器上,主目录可能是 C:\Users\your-user-name,其中 your-user-name 是您的登录名。
来自在命令行中,您可以通过输入 cd ~ 来访问此目录。

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

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


谢谢,我正在为“vim”启动 Git 的“内部”vim 实例(没有我的偏好等)而苦苦挣扎。提供我的实例的完整路径解决了这个问题!
S
Sнаđошƒаӽ

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

git config --global core.editor notepad.exe

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

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

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

我认为对于诸如提交消息记事本之类的小型记录来说最好,因为它很简单,有窗口,可以立即打开。当你有大量插件和东西时,即使是你的崇高也可能需要一两秒钟才能被激发。


您可以将文件空白(或注释掉任何非空白行),而不是转到文件->另存为,然后 Git 将由于提交消息为空而中止。
最好添加这样的行 core.editor = 'notepad' .git/COMMIT_EDITMSG --wait 以便它打开并保存默认编辑消息,您不需要“另存为”
B
Bendlas

对于 emacs 用户

.emacs

(server-start)

shellrc

export EDITOR=emacsclient

以下是在提交 git config --global core.editor "emacs -nw" 时如何在终端模式下设置 emacs
我使用 git config --global core.editor "emacs -nw -q",其中 -q 跳过初始化文件。
G
Gabriel Staples

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

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

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

1. 使用我们想要用来编辑 Git 提交消息的设置创建一个 Sublime Text 项目

打开 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":
    [

    ]

}

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 时要打开哪个项目。

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

对于 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 别名,我们现在可以在 Windows 版 Git Bash 中使用它来轻松打开 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 可执行文件的完整路径。注意斜线的方向!使用 / NOT \ 分隔路径名中的文件夹! (感谢 VonC 帮助我看到这一点)。

我们为上面的 Git Bash 创建的 subl 别名在这里不起作用,因此您不能像我们在 Linux 示例中那样使用它,而是必须指定整个路径,如上所示。

但是,~ 符号在这里仍然可以访问您的 Windows 主目录。

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

这使您可以突出显示 git commit 消息的语法,以及访问其他 Git 命令,例如 git blame(我在 Sublime Text 中经常使用)或 git commit(我在 Sublime Text 中不使用它,因为我'我更喜欢通用 Git 流程的命令行,正如我在这个答案下面的评论中提到的那样)。

要安装软件包:首先,确保安装了“Package Control”。接下来,按 Ctrl + Shift + P(与工具 → 命令面板相同)并键入全部或部分“包控制:安装包”,然后按 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 保存您的提交消息,并使用 Ctrl + Shift< 退出(完成您的 git commit) /kbd> + W

完毕!

有关的:

在 Windows 上使用 Meld 的 Git 合并工具 https://github.com/ElectricRCAaircraftGuy/eRCaGuy_dotfiles


这看起来很详细。 +1
在 Sublime Text 3 中,现在有一个 Git Commit 语法类型。您现在可以跳过自定义的“sublime-text 项目”步骤。
我不同意:那只会突出显示语法。我的自定义项目不涉及语法高亮显示:它设置标尺并为您的 git 提交提供上下文以打开,因此它们不会在您拥有或上次打开的任何项目中打开。两者无关;做他们两个。
我刚刚添加了第 2.5 步,但是(这里有点“但是”):我并不总是使用 Sublime Text 3 作为我的编辑器(有时我使用 Eclipse,因为它具有比 Sublime 更好的符号跟踪和索引,即使它是一个蹩脚的编辑器与 Sublime 相比),而且我更喜欢从命令行使用 Git,所以我绝对不建议跳过步骤 1,即使您将“Git”包安装到 Sublime 中,正如我刚才在步骤 2.5 中描述的那样。是的,您可以直接从 Sublime 执行 Git Commits,但我更喜欢命令行。
提示:如果您将 sublimegit 一起使用,并且还使用 trim_trailing_white_space_on_save,则您希望为补丁添加添加别名,因为删除尾随空格会破坏补丁编辑,这非常有意义。这可以通过以下方式实现:git config --global alias.patch "-c core.editor=vim add --patch"
M
Matteo Rolla

Mvim 作为你的 git 编辑器

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

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

--remote-wait-silent 以避免丑陋的错误信息 :)
P
Peter Mortensen

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

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

b
bigtheo

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

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

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


b
brcolow

对于想要将 neovim 与适用于 Linux 的 Windows 子系统一起使用的 Windows 用户:

git config core.editor "C:/Windows/system32/bash.exe --login -c 'nvim .git/COMMIT_EDITMSG'"

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


B
Ben Saufley

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

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

这是我的 git/hub 版本,仅供参考:

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

X
Xiao Hanyu

试试 EDITOR=vim git commit

或者您可以在 bashrc 中通过 export EDITOR=vim 将 EDITOR 设置为 vim。


D
DLRdave

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

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

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

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

解释:

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

-W 表示等到应用程序退出后再使用编辑文件的内容作为提交消息。

-a TextWrangler 表示使用 TextWrangler 应用程序打开文件。

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


如果 TextWrangler 已经打开,您的解决方案将打开另一个与第一个具有相同文件集的实例。这似乎很危险。
我确实安装了 TextWrangler 命令行工具 (barebones.com/support/textwrangler/cmd-line-tools.html),然后使用了 git config --global core.editor "edit -w"。这将在当前实例中打开提交消息,并且只要您仅关闭此提交消息文档,提交就会继续。
É
Édouard Lopez

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

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

gvim 要求:apt install vim-gtk

参考

#2944 交互式 Rebase 失败并出现警告:“Vim:警告:输出不是终端”

sjurba/rebase-editor 的安装部分


l
leanne

在 TextMate 的 macOS Big Sur (11.0) beta 上:环境变量选项均无效。 (设置所有三个:GIT_EDITOR、VISUAL 和 EDITOR。)

最后在 git 中设置了全局 core.editor,并且成功了:
git config --global core.editor "~/bin/mate -w"


C
Carson

对于 Windows,Neovim:

# .gitconfig

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

P
Petra

对于 IntelliJ 用户

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

https://i.stack.imgur.com/iKVF5.png

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

编辑器 = 代码 -n -w

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


Y
Yutaka

对于 EmEditor 用户

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

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

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


s
saulspatz

对于 MAC,BBEdit:

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

然后从命令行,

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

N
Nick Volynkin

对于 Textmate 用户

当您想要编辑提交时,这会打开 Textmate 编辑器。需要安装 textmate 命令行工具。

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


@givanse 你是什么意思?
我猜他的意思是类比 vim 答案是微不足道的?
嗯,不,不是,但是如果您使用 vim 以外的其他东西(例如 textmate)。
textmate 还有一个“等待”选项,所以对我来说,是这样的:git config --global core.editor "/usr/local/bin/mate -w"
M
Mike Cheel

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

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

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

在 git 提示符下输入:

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