git rebase -i 显示一个空的 MacVim 文件

Posted

技术标签:

【中文标题】git rebase -i 显示一个空的 MacVim 文件【英文标题】:git rebase -i presents an empty MacVim file 【发布时间】:2012-02-02 03:28:39 【问题描述】:

我正在尝试重新提交提交。但是,任何时候我运行git rebase -i f83eff3ffc8,例如,打开一个 MacVim 窗口,它都是空的(文件中没有信息)。然后,一旦我写入并关闭文件(即使它是空的),我就会收到一条 Successfully rebased and updated refs/heads/clicktocall-hotfix 消息。

文件名为.git/rebase-merge/git-rebase-todo。我也尝试使用 sudo 运行它,但这并没有什么不同。

可能是什么问题?我从来没有成功完成过rebase。

【问题讨论】:

与 vim 无关。删除标签。 看起来 git 正在成功执行“无操作”变基。你想做什么?请描述您的分支结构以及提交f83eff 的位置。您可能会发现这很有帮助:www-cs-students.stanford.edu/~blynn/gitmagic/ch05.html 没错,一个空的 rebase -i 文件意味着你尝试对 HEAD 本身进行 rebase,这不是 git rebase 的工作方式。 重新添加 vim 标签,因为这是在发出 git rebase -i 时默认调用的标签。 我有同样的问题,但我没有使用 vim。我正在从 Cygwin 终端运行 git,我尝试将我的 core.editor 设置为一堆不同的编辑器,例如 notepad2 和 GitExtensions,但是当我尝试进行交互式 rebase 时,我不断得到空文件,我不知道为什么。当我做git commit 时,notepad2 工作。我听说rebase 实际上是一个 perl 脚本,所以也许这与它有关?我正在使用 git 版本 1.8.1.3。 【参考方案1】:

对于 atom 我可以通过将等待标志添加到 gitconfig 来修复(参考 https://help.github.com/articles/associating-text-editors-with-git/)

[core]
    editor = atom --wait 

【讨论】:

【参考方案2】:

我使用的是 Macvim,需要使用 -f 选项运行 mvim,如下所述:GIT_EDITOR not working with macvim

【讨论】:

供参考。从 Sublime 切换到 Atom 时我遇到了类似的问题,忘记更新 git 编辑器。这应该会有所帮助: git config --global core.editor "atom --wait"【参考方案3】:

您甚至不必查看git-rebase-todo 文件。 Vim 应该显示一个 noop 行和一些 cmets。保存后,您应该会得到“Successfully rebase and updated”。

您要么使用的是旧版本的 git,要么您的 git install 损坏了,要么您以某种方式触摸了 .git 文件夹,导致它以这种方式运行。

【讨论】:

【参考方案4】:

我在使用 Atom 时遇到了这个问题。我这样设置我的默认编辑器:

export VISUAL=vim
export EDITOR="$VISUAL"

现在一切正常。

TL;DR;使用 Vim。

【讨论】:

【参考方案5】:

在 VS Code 中也遇到过这个问题,问题是我忘记了编辑器配置中的“等待”标志。

通过运行解决:

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

【讨论】:

以上是关于git rebase -i 显示一个空的 MacVim 文件的主要内容,如果未能解决你的问题,请参考以下文章

intellij idea git rebase冲突不显示提示框git出现游离head的解决方法

intellij idea git rebase冲突不显示提示框git出现游离head的解决方法

分布式版本控制系统Git-----7.Git 使用git rebase合并多次commit

git rebase 中断后如何修复

git rebase 合并远程分支后的分支

找回git rebase --skip消失的代码