臭名昭着的Git错误:远程拒绝(无法锁定)

Los*_*ost 26 git github

我正试图从我的本地推动到一个分支到原点.分支名称和路径相同.我一直在推动和拉动这个分支一段时间,从来没有遇到过问题.但突然间,它开始表现得很糟糕.上次我尝试使用以下命令推送到原点时:

git push origin feature/Prizefulfilment
Run Code Online (Sandbox Code Playgroud)

它让我跟随错误:

72c6c1da98e5cff4484e254a538d9e3b472156ff but expected 0000000000000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索过,但还没有找到一个令人满意的解决方案.

我的确切错误如下:

$ git push origin feature/Prizefulfilment
Counting objects: 126, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (75/75), done.
Writing objects: 100% (78/78), 8.83 KiB, done.
Total 78 (delta 61), reused 0 (delta 0)
error: Ref refs/heads/feature/Prizefulfilment is at 72c6c1da98e5cff4484e254a538d9e3b472156ff but expected 0000000000000000000000000000000000000000
remote: error: failed to lock refs/heads/feature/Prizefulfilment
To git@devtools.contestfactory.com:OpusOneSCRUM
 ! [remote rejected] feature/Prizefulfilment -> feature/Prizefulfilment (failed to lock)
error: failed to push some refs to 'git@devtools.contestfactory.com:OpusOneSCRUM'`
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Von*_*onC 34

 git push feature/prizeFulfilment: feature/Prizefulfilment
Run Code Online (Sandbox Code Playgroud)

这与答案类似:

为了记录,我认为这个问题的根本原因是本地和远程分支名称之间的大写差异,以及托管远程存储库的Windows共享的不区分大小写的性质.

我们刚刚遇到了这个完全相同的错误,只需重新命名本地分支以匹配现有远程分支的大小写就能解决问题.

尝试并确保在本地和远程分支之间使用相同的大小写.

你的第二个命令使得prizeFulfilment和远程Prizefulfilment显式之间的链接,这就是它工作的原因.但是保持本地分支具有这种差异并不是一个好的解决方案.


aml*_*szk 6

我看到发生此错误的原因是,以前的分支与我的新分支路径名同名。例:

  • 遥控器有分支: some_feature
  • 本地设有分支机构: some_feature/some_subfeature
  • 本地将分支推some_feature/some_subfeature送到远程
  • 遥控器有错误: (failed to lock)

解决方案:

  • 重命名本地分支some_feature/some_subfeaturefoo/some_subfeature
  • 删除远程分支 some_feature


jov*_*han 5

发生在我身上的是 git 改变了我本地分支的大小写。我有一个名为 Feature/blahBlah 的旧分支和一个名为 feature/fooBar 的新分支。后者被自动重命名为 Feature/fooBar,因为 git 将分支存储为文件夹,我不能使用不同大小写的相同文件夹名称。

要修复它,我必须进入 .git/refs/heads 并将“Feature”重命名为“feature” `,以便所有分支保持一致。


Mar*_*k R 5

在区分大小写的系统上出现问题的另一个可能原因是违规名称冲突.

如果远程存储库包含分支a/b并且您正在尝试推送分支a/b/c,则git将报告相同的错误(绝对应该改进此错误描述).

https://coderwall.com/p/qkofma/a-caution-about-git-branch-names-with-s https://ocroquette.wordpress.com/2011/07/10/git-failed-to-lock /