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

于是我做了:

我们回来了

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

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

Now:

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

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


当前回答

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

其他回答

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

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

git pull

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

Windows 10 64位同样问题,运行Git Bash版本2.9.0.windows1 使用Atom作为我的编辑器。

这对我来说很有效:我将Git软件文件夹(对我来说,这是C:\Program Files\ Git)添加到Windows Defender的排除项中。

在排除添加后,git签出'file'工作正常。

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

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

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

git rebase --abort

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

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

我也遇到过类似的问题。但是解决起来很简单。 在一台Windows机器上,我的文件资源管理器打开了一个文件夹,它存在于一个分支中,但不存在于我签出的另一个分支中。 关闭文件资源管理器解决了这个问题。