Git rebase得到了'unlink of file failed'错误

时间:2010-09-13 07:02:44

标签: git

使用 msysgit 1.7.0.2 ,在执行git rebase -i时,它会挂起并且没有消息。
输入 ctrl + c 后,我可以看到

'unlink of file failed, should I try again (y/n)?'

然后我尝试了git rebase --abort,但收到了同样的错误消息。所以现在它停留在rebase过程的中间。此错误似乎是由只读文件引起的。

有什么方法可以解决这个问题吗?

3 个答案:

答案 0 :(得分:21)

您是否尝试使用set GIT_ASK_YESNO=false

Google group thread在最近的mingw演变中提到它:

  

利用新的环境变量GIT_ASK_YESNO来支持最近实施的回退,以防{J} {1}},unlinkrename在Windows上使用的文件失败。

您使用的是什么版本的Git for Windows? 注意:msysgit setup is not the same than the "Git for Windows" setup,另请参阅“Different between msysgit and cygwin + git ?”)


git 2.8.4 (June 2016)确实提到issue 755,这也应该缓解这个问题(commit 2db0641):

  

确保子进程不继承临时文件句柄


另见Git 2。19(Q8 2018):“Git - Unlink of file .idx and .pack failed (The only process owned handle to this file is git.exe)”。

答案 1 :(得分:3)

我不知道它是否适用于您的情况,但我刚刚遇到类似1.7.10.msysgit.1的情况(与Ubuntu服务器上的网络共享交谈)。在我的例子中,一个失败的合并使root拥有了几个拥有权限-r-rwSr--的对象。一个简单的SSH登录和

sudo chown steve: .git/*

解决了一个问题(对于我的用户 - 除非你被称为史蒂夫,否则你需要将其更改为你的用户名!),

chmod -R 0755 .git/*

修复了另一个。

答案 2 :(得分:0)

文件的某个实例可能会导致错误在git中弹出,请尝试关闭文件的所有其他实例,然后在git中按“ y”。

希望它能解决问题!