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

于是我做了:

我们回来了

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

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

Now:

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

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


当前回答

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

其他回答

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

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

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

这通常发生在预处理软件/应用程序监视项目时,比如Prepros或Codekit。此外,Atom和Sublime(甚至notepad++)可以导致这种情况发生,如果项目中的文件当前正在编辑。

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

我在Windows 10上,我得到了这个错误,但即使在电脑重新启动并使用管理权限打开后,也没有解决我的问题。

看来问题出在我的存储库特权上。

只是为了确保我安装了所有新的Windows更新 我重启了我的电脑,最后我删除了所有不必要的特权。

以管理员身份运行powershell,执行如下命令:

attrib -s <path_to_your_directory> 
attrib -r -a <path_to_your_directory> 

powershell命令的详细信息如下: https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/attrib

在我的例子中,我有一个webpack开发服务器在后面运行。

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

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

git pull

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