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

use*_*686 6 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命令也在启动(with Successfully rebased and updated refs/heads/master.)后立即完成.

  • 当使用sudorebase 执行相同的命令时,但之后会发生文件归root所有并且我不再具有写权限.

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

  • 我尝试了不同的终端(Gnome终端,LXTerminal,XTerm) - 总是同样的问题

这里有什么问题以及如何解决?它应该没有sudo工作.

编辑1

  • 某些文件.git/...由root拥有,并且是只读的.第一级中的所有目录和文件.git/都归我所有.随着ls -l --recursive .git/ | grep root我试图查出是哪个文件,但输出不给文件的路径...
  • 是否所有文件都.git/属于用户?这可能是问题的原因吗?

编辑2

  • 即使在更改了所有权和内部所有文件的写入权限后,.git用(sudo chown -R user:user .git/和现在显示类似)的问题保持不变.chmod u+w -R .git/ls -l-rw-r--r-- 1 user user

use*_*686 15

我的解决方案是:

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

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