git rebase:"错误:无法统计'文件':权限被拒绝"

Rya*_*ndy 319 git git-rebase

我正在使用git,并做了一个小提交,然后是一个大提交.git rebase在推动它们之前,我决定将两个提交压缩在一起.(我以前从未这样做过.)

所以我做了:

git rebase -i HEAD~2

这给了我我的编辑,在那里我选择了先前的提交并压缩了后一个提交.当我救了,git说:

错误:无法统计' 文件名 ':权限被拒绝

无法将sha1应用于以后的提交 ... 该提交的初始文本行

现在:

  • 我这样做时都没有提交git log.
  • git status 告诉我,我"目前不在任何分支机构."
  • 一个文件在修改后列在索引中,两个文件列为未跟踪.我的第一次提交只有一个文件(我认为),我的第二次提交有很多.

发生了什么!?我如何解决它?

小智 606

尝试关闭打开文件夹的所有程序,例如编辑器,资源管理器窗口,命令提示符和FTP程序.这总能解决我在Windows上的问题.

  • 我得到了同样的错误.我刚关闭了视觉工作室,一切正常. (64认同)
  • 我在Windows上看到的这个错误的最常见来源是Visual Studio锁定文件.按照规定,在切换分支,合并等之前关闭VS. (7认同)
  • 当我尝试合并时,Visual Studio对nuget包进行了锁定.关闭VS为我工作. (6认同)
  • 在我记得WinLess LESS - > CSS转换器隐藏在后台之前,我关闭了我能想到的一切. (5认同)
  • "我也是"Atom的答案.它似乎锁定文件和目录; 关闭它可以解决问题. (4认同)

Man*_*Jan 259

只需关闭您的IDE(VISUAL STUDIO/ATOM等).它可能会奏效

  • 在 IntelliJ 中,停止正在运行的 Tomcat 服务对我有用。比重新启动 IDE 稍微容易一些。 (2认同)

CB *_*ley 183

我在Windows上只看到过这个错误,它似乎意味着git在尝试应用补丁时阻止git修改文件.

Windows倾向于给予进程对文件的独占访问权限,而实际上并不是必需的,过去病毒检查程序一直是怀疑的来源,但我从来没有证明这一点.

可能最容易做的就是中止并再试一次,希望下次不会发生这种情况.

git rebase --abort
Run Code Online (Sandbox Code Playgroud)

您可以尝试使用git apply和了解git在执行操作之前实际尝试执行的操作,git rebase --continue但是不诚实地我不建议这样做.我见过这种情况的大多数时候,尝试过的事情比偶然错过或搞砸了更好.

  • 好吧,我仍然不确定究竟发生了什么,但最好的我可以说,VS 2010锁定了文件(奇怪,因为它是一个.xml doc文件).Process Explorer没有找到任何锁定该文件的东西,但在我退出VS之后,我能够使用`git checkout`来恢复文件(在`git status`它被删除了),现在一切都回来了,因为它是在我试图改变/挤压之前.也许我应该再试一次,虽然此时我感到有些不安. (47认同)
  • 关闭Visual Studio 2010也为我修复了它 (43认同)
  • @Kyralessa:嗯,你试过重启吗?如果某些内容持续锁定该文件然后在重新启动后(或稍微不那么激烈的东西释放文件),您应该能够`git checkout - previous-locked-file`并重新启动并运行. (4认同)
  • 后续行动,许多月后:我再没有遇到过这个问题.Rebasing工作得很好,甚至包括交互式变基.它一定是一个瞬间的VS文件锁定故障. (3认同)
  • Atom显然还锁定文件。重新启动修复它。 (2认同)

Mik*_*lin 24

当我在我的机器上看到这个时,它比仅仅"某个进程打开文件"更糟糕.文件的实际所有权被提升到我(以管理员身份运行)只能在重新启动后访问它的程度.

最近我可以说,IIS是问题的一部分.如果我在需要修改大量文件的两个主要分支之间切换,git将删除一个文件或目录(通常是DLL),而IIS正试图用它做一些事情.此时,IIS进程会自动使用已锁定且似乎由nobody拥有的版本覆盖磁盘上的文件.

此时停止IIS不会这样做.我发现最好的办法是重新启动,并记得在将来更改主要分支之前停止IIS.

我知道这并没有真正回答这个问题,但可能对其他人有所帮助.


rom*_*nlv 13

在Windows上,它可以是阻止这些文件的TortoiseGIT进程.打开任务管理器并结束进程TGitCache.exe.

  • 很高兴知道,尽管就我而言,我没有使用TortoiseGit。我只是使用命令行。 (2认同)

The*_*eIT 13

我只是偶然发现了这个问题的答案 - 这个错误是一个虚假的错误.#error:无法统计'reddit/app/views/links':权限被拒绝

这就是我得到的 - 当试图合并时.我阅读了一些答案然后才实现 - 我所要做的就是关闭我的代码编辑器,它恰好是Atom.

一旦关闭编辑器 - 我再次运行"git merge"并且繁荣,它起作用了.

多么无意义的错误:(


Cri*_*nja 10

我偶尔在Windows中发生这种情况

错误:无法统计“文件名”:权限被拒绝

大多数情况下,我会打开多个bit bash实例,而git bash实例之一位于我要从其获取的远程分支中不存在的目录中。

关闭一个实例以外的所有git bash可以为我解决问题。


Muh*_*ssa 9

如果使用vscode,请杀死终端并打开一个新终端。否则也可能关闭终端


rgn*_*ngl 8

如果你使用的IDE(如果你使用的话)可能也会妨碍你.这就是使用QtCreator时发生的事情.


ahn*_*cad 6

当您使用SublimeText并且弹出窗口要求您购买该程序时,也会发生这种情况.


att*_*lee 6

在Win 10中使用SourceTree,通过关闭Atom编辑器解决了该问题。

错误重现:

  1. 在分支B中,使用Atom创建一个md文件,对其进行保存,提交。
  2. 切换到分支A,从服务器下拉新的提交。
  3. 尝试“切回”,“操作”,它显示“错误:无法统计'文件':权限被拒绝”。


Lou*_*uis 6

我在 Windows 上在IntelliJ 集成终端内变基时发生了这种情况。我注意到我有并行运行的Git bash客户端实例。

关闭Git bash解决了这个问题。


Ste*_*lia 5

当您有预处理软件/应用程序观察项目时,通常会发生这种情况,例如Prepros或Codekit.此外,如果当前正在编辑项目中的文件,Atom和Sublime(甚至是Notepad ++)可能会导致这种情况发生.

解决问题的最简单方法是关闭项目文件打开的任何内容,合并分支,然后重新打开它们以刷新它.这也将避免程序不再发生任何已发生的更改的任何问题,从而迫使您手动刷新项目.


小智 5

如果您正在运行webpack,请关闭它。也请关闭您的IDE。做完这些事情后应该可以正常工作。


Nav*_*ame 5

尝试关闭 IDE(例如 Sublime、VS Code、Webstorm...)并关闭打开该文件夹的程序(例如 CMD、Powershell、CMDer、Terminal...)将解决该问题。