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

于是我做了:

我们回来了

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

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

Now:

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

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


当前回答

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

其他回答

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

错误重现:

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

我遇到这个问题是由我的编辑Intellij引起的。作为其内部版本控制的一部分,它已经检查并锁定了所有隐藏的git文件。(由于各种原因,我没有使用Intellij附带的git插件…)

所以我以管理员身份打开一个普通的dos窗口,切换到目录,然后执行

attrib -R /S

这消除了文件上的锁,在那之后一切都正常了,我可以使用GitHub windows客户端同步我的更改。

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

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

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

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

我在Windows中偶尔会遇到这种情况

错误:不能stat 'filename':权限被拒绝

大多数情况下,我打开了多个bit bash实例,其中一个git bash实例位于我所从的远程分支中不存在的目录中。

关闭除了一个实例之外的所有git bash实例为我解决了这个问题。