我正在使用git,并进行了一个小的提交,然后是一个大的提交。我决定在推送之前使用git rebase将两个提交压缩在一起。(我以前从未这样做过。)
于是我做了:
我们回来了
这给了我一个编辑器,我选择选择较早的提交并删除较晚的提交。我攒钱的时候,少不要脸的人说:
错误:不能stat 'filename':权限被拒绝
不能为以后的提交应用sha1…提交的初始文本行
Now:
当我做git日志时,也没有提交。
git状态告诉我“当前不在任何分支上”。
一个文件被列为已修改并在索引中,两个文件被列为未跟踪。我的第一次提交只有一个文件(我想),而我的第二次提交有一打。
!发生了什么?我该怎么解决呢?
我在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
此错误也可能是由于之前的git操作导致文件仍然处于“锁定”状态。它与Windows文件系统层的工作方式有关。我曾经读过一个很好的解释,但我不记得在哪里了。
然而,在这种情况下,由于它基本上是一个竞态条件,所以您所要做的就是继续中断的改基过程。不幸的是,这种情况一直发生在我身上,所以我写了这个危险的小助手来保持我的rebase运行:
#!/bin/sh
set -e
git checkout .
git clean -df
git rebase --continue
如果你想更加确定,你可以使用git rebase——edit-todo来检查下一个要应用的提交是否真的是之前应用失败的那个。使用git clean -dn来确保你不会删除任何重要文件。