使用git push的Git问题
我有一个基础存储库,位于UNC machine share ....等。 我有一个本地克隆,我在主分支中工作,偶尔会合并到“稳定”分支。
通常我会做一个git push --all
将所有分支中的所有更改移至服务器。 在创建新的分支git branch MultiCompany
然后将其推送到服务器git push --all
这也在服务器上创建分支。 我做了一些工作,完成了multicompany分支的所有更改,然后尝试执行git push --all
并得到以下错误:
cdturner@OAHU ~/desktop/git sourcetree/maerekai.web.framework (multicompany)
$ git push --all
Counting objects: 28, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (22/22), done.
Writing objects: 100% (23/23), 11.34 KiB, done.
Total 23 (delta 8), reused 0 (delta 0)
Unpacking objects: 100% (23/23), done.
error: Ref refs/heads/multicompany is at bd5a32df35ce8d5ae30ce999af34c4c5f35581df but expected 0000000000000000000000000000000000000000
remote: error: failed to lock refs/heads/multicompany
To //pluto/users/cdturner/Git repositories/Maerekai.web.framework.git
! [remote rejected] multicompany -> multicompany (failed to lock)
error: failed to push some refs to '//pluto/users/cdturner/Git repositories/Maerekai.web.framework.git'
我试着退出最后一次提交git reset --hard HEAD^
然后重新推动.....
cdturner@OAHU ~/desktop/git sourcetree/maerekai.web.framework (multicompany)
$ git push --all
Total 0 (delta 0), reused 0 (delta 0)
error: Ref refs/heads/multicompany is at bd5a32df35ce8d5ae30ce999af34c4c5f35581df but expected 0000000000000000000000000000000000000000
remote: error: failed to lock refs/heads/multicompany
To //pluto/users/cdturner/Git repositories/Maerekai.web.framework.git
! [remote rejected] multicompany -> multicompany (failed to lock)
error: failed to push some refs to '//pluto/users/cdturner/Git repositories/Maerekai.web.framework.git'`
为了记录,我认为造成这个问题的根本原因是本地和远程分支名称之间的大写差异以及承载远程存储库的Windows共享的不区分大小写的性质。
我们刚刚遇到了这个完全相同的错误,只能通过重命名本地分支以匹配现有远程分支的大小来解决问题。
在这里看到如何重命名一个本地分支。
在Windows中,由于大写,您可能需要采取两个步骤:
git branch -m example foo
git branch -m foo EXAMPLE
在远程仓库上做一个git fsck --full。 远程回购可能已经腐败。 从远程克隆另一个。 用这个替换原来的遥控器。 你现在应该能够再次推动。 远程回购发生了一些事情。 你正在做的事情与常规使用不符。
我发现一个错误是试图将一个分支develop
到一个名为develop/1148
和develop/693
分支的存储库。 git不适合这个(我忘了为什么),所以删除这些分支(如果可能)修复了这个挂断。