使用vim来更新janus之后破坏的git commit消息
在更新janus vim分发之后,使用vim提交消息似乎有问题。 最好的例子就是在做一个git pull来取得别人的改变。 显示vim编辑器,我键入我的提交信息,我input: w q而不是提交工作,我得到以下错误信息:
error: There was a problem with the editor 'vi'. Not committing merge; use 'git commit' to complete the merge.
然后我必须手动提交:(
我怎样才能让git和vim很好的搭配?
经过一番search后,结果发现答案是运行以下内容:
git config --global core.editor $(which vim)
Nat Ritmeyer已经给出了正确的解决scheme 。 我会给你的理由。
正如Steve Tooke所解释的那样 ,隐藏你的~/.vimrc或者明确告诉git使用vim的完整path来解决这个问题。 然而,他以“我还想解决问题的根源”为结尾。
尝试这个:
- 启动一个
git commit让自己进入一个vim编辑器。 - 按
<CTRL> + Z停止进程并退回到TTY -
做一个
ps并注意你的TTY(你用tty命令得到的号码),就像…$ tty /dev/ttys005 $ ps PID TTY TIME CMD 17547 ttys005 0:00.15 -bash 65126 ttys005 0:00.02 git commit 65127 ttys005 0:00.10 vi .git/COMMIT_EDITMSG $ which vi /usr/bin/vi $ ll /usr/bin/vi lrwxr-xr-x 1 root wheel 3 Oct 3 17:40 /usr/bin/vi -> vim $ jobs [1]+ Stopped git commit -
回到你的vim进程,用
fg %1(或者你的git commit被列为的停止工作号)。
那个shell输出告诉我们的是…
- 我正在使用ttys005
- 在称为
git的TTYbash,称为vigit -
vi的完整path是/usr/bin/vi -
vi命令是vim的符号链接 - 调用
<CTRL> + Z停止了git commit命令,它在作业堆栈中是#1。
所以, vi是和vim相同的命令?!?! 是的,但vim注意到它的argv[0]是vi并且以兼容模式运行 。 这可能会导致问题取决于你的.vimrc 。
最好的解决scheme是告诉git使用vim,但是我build议你不要假设你的vimpath和其他人一样(也许你是通过brew install vim )
git config --global core.editor $(which vim)
这可能是一个插件或你的.vimrc文件中的东西。 在安全模式下加载vim来编辑提交消息的最好方法是使用:
git config --global core.editor '/usr/bin/vim -f -u NONE'
每当我从远程仓库获取并将其与另一个分支合并时,我都面临同样的问题。
在terminalinput这个固定它给我
git config --global core.editor $(which vim)
如果由于某种原因, git config --global core.editor /usr/bin/vim不起作用,请尝试不使用--global标志。 我只能在没有--global标志的情况下才能使用它。