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

时间:2012-03-20 11:24:13

标签: 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

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

4 个答案:

答案 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可以恢复它。