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

于是我做了:

我们回来了

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

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

Now:

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

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


当前回答

我同意上述“关闭Visual Studio”的答案。

然而,即使在我关闭Visual Studio之后,我还必须做一个额外的步骤,那就是在任务资源管理器中手动杀死“devenv.exe”Visual Studio进程。 在我这样做之后,我能够再次运行gitbash:

git pull

并且“不能统计文件名”错误消失了。这可能是由于Visual Studio扩展使进程在关闭后仍然保持更长的时间。

其他回答

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

当我在我的机器上看到这个时,它比“某个进程打开了文件”更糟糕。文件的实际所有权上升到我(以管理员身份运行)只能在重新启动后才能访问它的位置。

据我所知,IIS是问题的一部分。如果我在两个需要修改大量文件的主要分支之间切换,git会在IIS试图对其进行某些操作时删除一个文件或目录(通常是dll)。此时,IIS进程会自动用一个锁定的版本覆盖磁盘上的文件,该版本似乎不属于任何人。

在这里停止IIS并不能做到这一点。我发现最好的方法是重新启动,并且记住在将来跨主要分支进行更改之前停止IIS。

我知道这并不能真正回答问题,但可能对其他人有帮助。

我刚刚遇到了这个问题。问题是-如果你打开了文件,它在rebase之后被删除/替换(你有一个不再有这个文件的分支),git系统就会崩溃。所以我关闭了所有打开的文件,然后尝试在其他分支签出

我只是偶然发现了这个答案-这个错误是一个虚假的错误 错误:不能统计'reddit/app/views/links':权限被拒绝

这就是我在尝试合并时得到的。 我读了一些答案,然后意识到——我所要做的就是关闭我的代码编辑器,这恰好是Atom。

一旦关闭编辑器-我再次运行“git合并”,它工作了。

真是一个毫无意义的错误:(

关闭你的IDE (VISUAL STUDIO/ATOM等)。可能会有用