取消链接文件失败。 我应该再试一次吗?

我的本地git存储库中的一个文件出错了。 当我试图改变分支时说:

Unlink of file 'templates/media/container.html' failed. Should I try again? (y/n) 

这是什么意思?

这可能意味着另一个程序正在使用这个文件,当你试图改变分支的时候,这个文件阻止了git将文件“移动”到或者移出工作目录。

我在Windows Vista上发生过这种情况,eclipse是“使用”文件的程序。 该文件可能实际上并没有在eclipse中打开,但可能已被eclipse运行的进程打开。

在这种情况下,请尝试closures可能使用过的应用程序中的文件。 如果这不起作用,请彻底退出可能已经打开文件的任何应用程序。

我有这个问题,并通过命令解决它: git gc上面的命令删除临时和不必要的文件。 (垃圾收集器。)

这个解决scheme从这里为我工作:

这是一个Windows特定的答案,所以我知道这与你无关……我只是为了未来的search者的利益而包括它。

就我而言,这是因为我从一个非提升的命令行运行Git。 “以pipe理员身份运行”为我解决了这个问题。

我在做一个git pull时候遇到了这个问题。

我试过git gc ,它解决了我的问题。

在我的情况下,没有进程接触文件或目录。 如果path很长,可能会发生这种情况,因为操作系统限制(windows)。 尝试启用全局gitconfiguration中的longpath支持标志,如下所示:

 git config --global core.longpaths true 

或者如果它对您没有冲突,则尝试设置是/否回答标志

 set GIT_ASK_YESNO=false 

如果path太长,我还没有find一个成功的解决scheme。

我在做'git pull'时面临同样的问题。 我尝试手动pipe家git命令'git gc',它解决了我的问题。

在我的情况下(Win8.1,TortoiseGit正在运行),这是一个名为“TortoiseSVN状态caching”的进程,正在locking文件。

杀死它让我运行“git gc”没有任何问题。 上面的过程由TortoiseGit启动,所以不需要手动重启。

我在Windows中遇到了这个问题。 我closures了我的IDE(Android Studio)并在git shell中select了YES。 有效。

我在Windows 7上遇到过这种问题,事实certificate这是由于一些孤立的git.exe进程造成的。

要解决它,打开任务pipe理器并杀死所有的git.exe进程。

由于git命令是短暂的,你通常应该永远不会在任务pipe理器中看到任何git.exe 。 当他们在那里,通常意味着什么是错的,你应该杀死这些进程。

在Windows 8上:我运行了git gc,它说git gc已经在运行了,我运行了git gc –force并运行了垃圾收集器。

我可以切换分支和合并没有任何问题,请尝试git gc –force。

gc过程可能因为某种原因没有优雅地停止。

我在/.git/objects/pack文件夹中有.tmp文件。 我认为推或拉过程中失败了,所以我删除了这些临时文件,并将HEAD重置为最后一次提交。 不知道这是否是build议,但它为我工作。 此外, git count-objects -v给了我一个不属于包文件夹的.tmp文件列表。

或者在Windows git open cmd.exe y / n消息, git open cmd.exe并运行:

 SETX GIT_ASK_YESNO false 

看到这里: https : //twitter.com/petercamfield/status/494805475733807104

终于尝试了各种解决scheme后, git clean -f帮助了我。

编辑:我再次打这个问题几次 – closures所有依赖于git的进程似乎帮助(如gitbash,Eclipse的IDE等)

这是一个Windows特定的答案,所以我知道这与你无关……我只是为了未来的search者的利益而包括它。

就我而言,这是因为我从一个非提升的命令行运行Git。 “以pipe理员身份运行”为我解决了这个问题。

非常感谢

这可能是一个单独的gitk窗口运行看到一些git的历史。

只要closures那个窗口来解决这个问题。

我遇到这个问题同时运行git Bash和Eclipse EGit。 解决scheme:closuresEclipse。 也不会伤害运行git gc作为@khilo提到。

上述答案似乎没有工作,运行git fetch -p为我做了这项工作。

https://git-scm.com/docs/git-fetch

如上所述,其他东西是保存文件。 事情是这个程序不看我们的可疑。 GitKraken打开时,我试图从控制台上做一个git pull。 closuresGitKraken解决了这个问题。

这可能对某人有用; 如果以上所有内容都不适合您,请按照以下步骤操作:

  1. closures你的IDE(我的是Eclipse,不知道它是否适用于Intellij和其他)或者其他可能使用git的应用程序。

  2. 从命令行打开git(在我的情况下,我有git bash)并运行git gc正如其他人所说的那样。

这对我来说是神奇的。

我在Windows中遇到了这个问题,你可能想要以pipe理员身份运行git bash,然后执行所需的命令,为我解决了这个问题。

在Windows上,在一个相当大的仓库的git clone上看到了这个错误。 closuresSmartGit,并暂停我的备份软件(CrashPlan),之后它工作。 不知道哪两个技巧,但如果运行,这也可能为你做。

我在做一个git pull的时候遇到了同样的问题,正如上面所说的那样,这是因为一个程序持有这些文件,并且不允许git pull。 closures程序帮助。 通常,从文件正在签入的IDE(如Eclipse)将在后台保存它。 closures相同和重新运行git pull解决了我的问题。

尝试重新启动Apache或其他Web服务器,因为它可能已经locking了一些文件。