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

于是我做了:

我们回来了

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

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

Now:

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

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


当前回答

如果你打开了Meld合并工具,关闭它。阻止文件覆盖。

其他回答

一个替代的解决方案,而不是关闭所有可能锁定目录的应用程序,就像其他答案所说的那样,将使用一个实用程序,将解锁文件/目录,而不关闭一切。(我讨厌重新启动Visual Studio)

LockHunter是我使用的一个:https://lockhunter.com/可能还有其他的,但这个对我来说非常有用。

在win10中使用SourceTree,通过关闭Atom编辑器修复了这个问题。

错误重现:

在分支B中,创建一个md文件,使用Atom编辑、保存并提交。 切换到分支A,从服务器上拉下新的提交。 尝试切换回来,哎呀,它说“错误:不能统计‘文件’:权限被拒绝”。

我也是在使用Git Shell的Windows机器上遇到同样的错误。

但是,当时我打开了多个Git终端。

第一个终端收到了你上面发布的错误,而另一个终端之前已经从yeoman运行了grunt服务终端命令(链接如下)。第二个终端需要保持打开状态以承载本地服务器实例。

关闭所有正在运行的进程的终端窗口可以使错误消失。

至少对我来说是这样的。在我关闭第二个终端窗口后,我可以轻松地签出不同的分支并操作文件。

咕哝服务命令-自耕农。I / O http://yeoman.io/learning/

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

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

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

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