从远程git存储库克隆后(在bettercodes) 我做了一些改变,承诺 并试图推动:

git push origin master

错误:

错误:不能锁定现有的信息/引用 致命:git-http-push失败

本案例涉及已经存在的存储库。

我之前做的是:

Git配置-global http。sslVerify假 git init Git远程添加[url] git克隆 更改数据 git提交

在'bettercodes'我没有访问git日志。

我用的是Windows。 具体的错误是:

C:\MyWorkStuff\Projects\Ruby\MyProject\>git push origin master
Unable to create branch path https://user:password@git.bettercodes.org/myproject/info/
error: cannot lock existing info/refs
fatal: git-http-push failed

我之前克隆过,然后修改代码并提交。


当前回答

当我试图运行git filter-branch将许多子目录分离到一个新的、单独的存储库(如这个答案)时,我看到了这个错误。

我尝试了以上所有的解决方案,但没有一个有效。最终,我决定我不需要在新的分支中保存我的标签,只是运行:

git remote remove origin
git tag | xargs git tag -d
git gc --prune=now
git filter-branch --index-filter 'git rm --cached -qr --ignore-unmatch -- . && git reset -q $GIT_COMMIT -- apps/AAA/ libs/xxx' --prune-empty -- --all

其他回答

在我的情况下,在收到这条消息后,我执行了checkout命令,并得到了以下消息:

Your branch is based on 'origin/myBranch', but the upstream is gone.
  (use "git branch --unset-upstream" to fixup)

执行这个命令后,我恢复了正常。

运行命令git update-ref -d refs/heads/origin/branch修复。

对我来说,当我试图用这样的名字创建一个新分支时,就发生了这种情况:

master/pre-upgrade

将其更改为另一个名称,例如:

pre-upgrade/master

成功了!

关于这个问题的一些附加信息

Git将分支信息存储为文件夹结构中的文件,其中/后面的最后一个字符串是包含分支头的提交SHA#的文件。

这意味着分支调用

a/b/c

将存储在

.git/refs/heads/a/b/c

如果您尝试添加一个名为

a/b/c/d

Git会尝试存储它

.git/refs/heads/a/b/c/d 

但这是不可能的,因为b是一个文件,不能存储其他文件在它。

i.e.将git分支名视为路径,因为它们被git用作路径。

我遇到这个问题是因为我所在的分支与上游分支具有类似的名称。例如,上游分支被称为示例分支,我的本地分支被称为示例分支/后端。解决方案是更改我的本地分支机构的名称,如下所示:

git branch -m <new name goes here>

当我试图创建一个以当前分支开始的分支时,我遇到了这个问题。我有一个名为develop的分支,我试图创建一个名为develop/myFeature的分支。