Git rebase出现“unlink of file failed”错误

22

使用 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个回答

24

你尝试过使用 set GIT_ASK_YESNO=false 吗?

这个Google group 的帖子提到了最近的mingw进展:

使用新的环境变量GIT_ASK_YESNO支持Windows上出现文件被使用时unlinkrenamermdir失败的回退操作。

您正在使用哪个确切版本的Git for Windows?
注意:msysgit设置与“Git for Windows”设置不同,另请参阅“msysgit和cygwin+ git之间的区别?


git 2.8.4 (2016年6月)提到了问题755,这也应该能缓解这个问题(提交2db0641):

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


还可以参阅Git 2.19(2018年第三季度):“Git - Unlink of file .idx and .pack failed (The only process owned handle to this file is git.exe)”。


7
如果将 GIT_ASK_YESNO 设置为 false,它会回答什么?是还是不是? - Klas Mellbourn
1
@KlasMellbourn 我认为这个想法是避免git询问任何东西。 - VonC

3

我不确定这是否适用于您的情况,但我最近遇到了与1.7.10.msysgit.1类似的情况(与Ubuntu服务器上的网络共享对话)。在我的情况下,一个失败的合并导致多个对象由root所有,并具有-r--rwSr--权限。简单的SSH登录和

sudo chown steve: .git/*

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

chmod -R 0755 .git/*

修复了其他的问题。


我之前在Windows上运行,没有管理员权限。但是在以管理员权限运行命令提示符后,它可以工作了。所以...我从你的回答中得到了一些东西! - Paulo Pozeti

1

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

希望它能解决问题!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接