Git rebase -i 不在终端中/仅适用于 sudo

标签 git vim ubuntu git-rebase

我只是想在当前分支中使用 git rebase -i HEAD~2 编辑一些提交。 我使用 Ubuntu 10.10 并且必须先安装 gvim 才能使命令工作。 之后,该命令会打开一个带有正常 rebase 内容的 gvim 窗口。 但是当我想保存文件时 gvim 说

".git/rebase-merge/git-rebase-todo" E212

[无法打开要写入的文件]

此外,rebase 命令在启动后立即完成(Successfully rebased and updated refs/heads/master.)。

  • 当使用 sudo 执行相同的命令时,rebase 有效,但之后文件归 root 所有,我不再有写权限。

  • 在我的 ArchLinux 系统上,gvim 直接在我运行 git rebase -i 的终端中打开,一切正常。

  • 我尝试了不同的终端(Gnome 终端、LXTerminal、XTerm)——总是出现同样的问题

这里有什么问题,如何解决?它应该在没有 sudo 的情况下工作。

编辑1

  • .git/... 中的一些文件属于 root 并且是只读的。 .git/ 第一层的所有目录和文件都归我所有。使用 ls -l --recursive .git/| grep root 我试图检测哪些文件是但输出没有给出文件的路径...
  • .git/ 中的所有文件都应该属于用户吗?这可能是问题的原因吗?

编辑2

  • 即使在使用 sudo chown -R user:user .git/chmod u+ 将 .git 中所有文件的所有权和写入权限更改为用户之后w -R .git/ (ls -l now shows sth. like -rw-r--r-- 1 user user) 问题仍然存在一样。

最佳答案

我的解决方案是:

运行

$ git config --global core.editor "gvim -f"

首先,我认为这是因为我的存储库位于 ntfs 驱动器上,所以文件权限无法正常工作。但即使在使用正确的文件权限安装驱动器后,问题仍然存在。使用 -f 选项启动 vim 会有所帮助(我读到其他人用同样的方式解决它),但我不知道为什么。

关于Git rebase -i 不在终端中/仅适用于 sudo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9785829/

相关文章:

bash - Ubuntu 中的无效日期选项

git - 有没有办法从 master 中检查出落后于许多 Git 提交的单个文件?

git - 在pre-push hook中,获取 "git push"命令的全部内容?

Vim:你能从另一行中删除一个特定的行号吗?

vim - 是否可以在不重新启动的情况下应用 vim 配置?

ubuntu - "Stereo Mix"类似 Ubuntu 的功能

ubuntu - 当 Jenkins 在 Ubuntu 14.04 中使用 Selenium 时,无法启动 chrome/firefox session

git - 无论大小写如何忽略git中的文件扩展名?

git - "git reset --hard"和 "git checkout ."有什么区别?

vim - 全新 Vim 安装、Vim 权限错误、Vundle 不起作用