我只是想在当前分支中使用 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/