我只想在当前分支中编辑一些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
的终端中打开,一切正常。
这里有什么问题以及如何解决?它应该没有sudo。
.git/...
中的某些文件归root所有,并且是只读的。第一级.git/
中的所有目录和文件都归我所有。使用ls -l --recursive .git/ | grep root
我试图检测哪些文件但输出没有给出文件的路径...... .git/
中的所有文件是否都属于该用户?这可能是问题的原因吗?.git
内的所有文件的所有权和写入权限更改为使用sudo chown -R user:user .git/
和chmod u+w -R .git/
的用户(ls -l
现在显示为-rw-r--r-- 1 user user
)问题保持不变。答案 0 :(得分:15)
我的解决方案是:
运行
$ git config --global core.editor "gvim -f"
首先,我认为这是因为我的存储库位于ntfs驱动器上,因此文件权限无法正常工作。但即使在使用正确的文件权限安装驱动器之后,问题也保持不变。使用-f
选项启动 vim 有助于(我读到其他人以同样的方式解决它),但我不知道为什么。
答案 1 :(得分:0)
sudo chown -R user .git
授予user
文件所有权。您不应该使用git
运行sudo
,因为这样做可能会导致此类问题。
答案 2 :(得分:0)
我有同样的问题。更改文件夹中的权限并不能解决问题 在我的情况下,这是因为umask设置为27,默认情况下使用
创建文件-rw-R -----
权限, 显然git轮胎创建一个用户无法保存的目录。 因此这是git中的一个错误。
注意:我注意到使用编辑器vim解决了这个bug。 似乎gedit和kate在权限方面存在问题。
答案 3 :(得分:0)
我正在使用spf13 conf,我通过以下步骤解决了问题:
rm -rf ~/.vimswap
rm -rf ~/.vimviews
rm -rf ~/.vimbackup
似乎你的一些rebase过程已被打破,删除这些dirs可以恢复它。