从远程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进程)是否可以访问文件.git/info/refs,并且这个文件没有被其他进程锁定。

其他回答

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

这发生在我身上,当我的git远程(bitbucket.org)改变了他们的IP地址。快速解决方法是删除并重新添加遥控器,然后一切都能正常工作。如果你不熟悉如何在git中删除和重新添加一个远程,以下是步骤:

复制现有远程的SSH git URL。你可以使用下面的命令打印到终端: Git remote -v

它会打印出如下内容:

 origin git@server-address.org:account-name/repo-name.git (fetch)
 origin git@server-address.org:account-name/repo-name.git (push)

从本地git repo中删除远程: Git远程rm来源 将遥控器添加回本地回购: Git远程添加源git@server-address.org:account-name/repo-name.git

如果您很幸运,没有本地工作要提交/推送,也没有时间去喝咖啡,您可以简单地删除回购的本地副本并重新克隆

作为Visual Studio Code (vscode, Code)(也可能是其他ide)的参考

我必须执行命令:Git: Fetch (Prune)

命令行替代方案应该是:git fetch——prune

然后重新启动整个IDE。

为了给出一些观点,我将引用BitBucket的码头:

What’s the Difference Between Git Prune,Git Fetch --prune, and Git Remote Prune? git remote prune and git fetch --prune do the same thing: delete the refs to branches that don't exist on the remote. This is highly desirable when working in a team workflow in which remote branches are deleted after merge to main. The second command, git fetch --prune will connect to the remote and fetch the latest remote state before pruning. It is essentially a combination of commands: git fetch --all && git remote prune The generic git prune command is entirely different. As discussed in the overview section, git prune will delete locally detached commits.

在我的情况下,我不得不手动删除旧标签已被删除的远程。