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

于是我做了:

我们回来了

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

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

Now:

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

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


当前回答

我刚刚遇到了这个问题。这里没有一个答案能帮我解决这个问题。

最终是我在一个分支上添加的nuget包,一旦切换回主分支,似乎不存在。一旦我做了合并,它会说newtonsoft…xml不能统计。我会去文件的问题,打开它,但Windows抛出一个错误,说它无法找到文件(即使我正看着它)

我解决这个问题的方法是右键单击删除文件(这是有效的,但我无法打开它,因为windows找不到它??),并尝试再次合并,它解决了这个问题。

很奇怪。

希望这对以后的人有所帮助。

其他回答

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

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

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

在我的例子中,这个文件是一个shell脚本(*.sh文件),用于为我的开发人员将我们的项目部署到本地开发服务器。

shell脚本应该工作一致,并且可以更新;所以我跟踪它在相同的Git项目的代码,脚本是要部署。

shell脚本运行一个可执行文件,然后允许该可执行文件运行;所以脚本仍在运行;所以我的shell仍然打开脚本;所以它是锁定的。

我按Ctrl+C'd杀死脚本(所以现在我的本地开发服务器不再可访问),现在我可以自由签出。

如果您使用的IDE(如果您使用了IDE)也可能成为阻碍。这就是我在使用QtCreator时遇到的情况。

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

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

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

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

我们通过右键单击程序文件中的sh.exe并在安全选项卡中设置“以管理员身份运行”来解决权限问题。