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

于是我做了:

我们回来了

这给了我一个编辑器,我选择选择较早的提交并删除较晚的提交。我攒钱的时候,少不要脸的人说:

错误:不能stat 'filename':权限被拒绝 不能为以后的提交应用sha1…提交的初始文本行

Now:

当我做git日志时,也没有提交。 git状态告诉我“当前不在任何分支上”。 一个文件被列为已修改并在索引中,两个文件被列为未跟踪。我的第一次提交只有一个文件(我想),而我的第二次提交有一打。

!发生了什么?我该怎么解决呢?


当前回答

杀死与存储库相关的w3wp.exe进程为我修复了这个问题。

其他回答

杀死与存储库相关的w3wp.exe进程为我修复了这个问题。

我只在Windows上见过这个错误,这似乎意味着当git试图应用补丁时,有什么东西阻止了它修改文件。

Windows倾向于在不必要的时候给予进程对文件的独占访问,在过去病毒检查一直是怀疑的来源之一,但我从未最终证明过这一点。

也许最简单的方法就是放弃,然后再试一次,希望下次不会发生这种情况。

git rebase --abort

你可以尝试使用git apply和commit git在做git rebase之前试图做的事情的知识——continue,但说实话,我不建议这样做。大多数时候,我看到这种尝试,有一个比偶数更好的机会,一些东西被不小心错过或搞砸了。

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

当我的VS1013在一个针对8.1的分支上,我试图签出一个8.0分支时,我得到了这个错误。我需要回到VS并允许它UpdateAll。然后我就可以顺利地签出8.0的分支了。

同样的问题,但使用SourceTree(或任何其他git客户端)。我加上我的答案,因为没有一个答案与我的情况相对应。

将分支从“develop”更改为“main”将更改本地文件夹的实际文件和子文件夹。可能发生的情况是,一个不存在于“master”中的文件夹没有被完全擦除,windows认为你只是失去了访问权限(即使你是管理员)。 当从main合并到develop时,git客户端尝试访问该文件夹。如果没有访问权限,则返回上述错误。

从一个分支切换到最新的分支可以解决问题,然后 回到主(再次检查是否文件夹/文件实际上 在本地删除)。 关闭客户端和/或编辑器并不能解决问题! 重启有帮助,但是浪费时间(恕我直言)