从远程git存储库克隆后(在更好的代码中)我做了一些更改,提交并尝试推送:
git push origin master
Run Code Online (Sandbox Code Playgroud)
错误:
错误:无法锁定现有信息/引用
致命错误:git-http-push失败
此案例涉及已存在的存储库.
我以前做过的是:
git config –global http.sslVerify falsegit initgit remote add [url] git clonegit commit在'bettercodes'我无法访问git log.
我正在使用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
Run Code Online (Sandbox Code Playgroud)
我之前克隆过,然后更改了代码并提交了.
arn*_*o_v 507
对我来说,这工作:
git remote prune origin
由于这个答案似乎对很多人有所帮助,所以我挖了一下这里实际发生的事情.这样做是删除对文件夹中远程分支的引用.git/refs/remotes/origin.因此,这不会影响您的本地分支,也不会更改远程任何内容,但它会更新您对远程分支的本地引用.在某些情况下,这些引用似乎包含Git无法正确处理的数据.
kir*_*vaz 409
你想尝试做:
git gc --prune=now
Run Code Online (Sandbox Code Playgroud)
请参阅https://www.kernel.org/pub/software/scm/git/docs/git-gc.html
joh*_*lem 181
当我的git remote(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)
Run Code Online (Sandbox Code Playgroud)
从本地git仓库中删除远程:
git remote rm origin
将遥控器添加回本地仓库:
git remote add origin git@server-address.org:account-name/repo-name.git
ali*_*him 59
这就是我为摆脱所有锁定引用问题所做的工作:
git gc --prune=now
git remote prune origin
Run Code Online (Sandbox Code Playgroud)
这可能也是您唯一需要做的。
有关git gc命令的更多信息:https : //git-scm.com/docs/git-gc
更多关于git remote prune这里:https : //git-scm.com/docs/git-remote#Documentation/git-remote.txt-empruneem
emi*_*irc 33
对我有用的是:
.git/logs/refs/remotes/origin/branch.git/refs/remotes/origin/branchgit gc --prune=now有关git gc命令的更多信息:https : //git-scm.com/docs/git-gc
jav*_*web 28
As a reference for Visual Studio Code (vscode, code) (and possibly other IDEs)
\n我必须执行命令:Git: Fetch (Prune)
命令行替代方案应该是:git fetch --prune
然后重新启动整个IDE。
\n为了给出一些观点,我将引用BitBucket 的文档:
\n\n\nGit Prune 之间的区别是什么\xe2\x80\x99,
\n
Git Fetch --prune, and Git Remote Prune?\n
git remote prune并git fetch --prune做同样的事情:删除对远程上不存在的分支的引用。当在团队工作流程中工作时,这是非常需要的,其中远程分支在合并到 后被删除main。第二个命令git fetch --prune将连接到远程并在修剪之前获取最新的远程状态。它本质上是命令的组合:\ngit fetch --all && git remote prune\n
通用git prunecommand is entirely different. As discussed in the overview section, git prune will delete locally detached commits.
小智 27
运行命令git update-ref -d refs/heads/origin/branch修复它.
Fra*_*nza 22
我通过执行以下操作来解决此问题
git branch --unset-upstream
rm .git/refs/remotes/origin/{branch}
git gc --prune=now
git branch --set-upstream-to=origin/{branch} {branch}
#or git push --set-upstream origin {branch}
git pull
Run Code Online (Sandbox Code Playgroud)
假设您的本地和远程分支已对齐,并且您只是将refs错误视为非致命错误.
Dha*_*ata 21
在拉取之前,您需要清理本地更改。以下命令帮我解决。
git remote prune origin
Run Code Online (Sandbox Code Playgroud)
然后之后
git pull origin develop
Run Code Online (Sandbox Code Playgroud)
希望这有帮助!
小智 10
这可能现在已经解决了.但这对我有用.
地点:
如果锁定的存储库位于服务器端:
如果锁定存储库仅限本地:
运行此命令:
git update-server-info
Run Code Online (Sandbox Code Playgroud)如果必须,修复(远程或/和本地)存储库的权限.在我而言,我不得不chmod到777与chown以apache:apache
尝试再次从本地存储库推送:
git push
Run Code Online (Sandbox Code Playgroud)小智 10
我遇到这个问题是因为我所在的分支与上游分支的名称相似。即上游分支被调用example-branch而我的本地分支被调用example-branch/backend。解决方案是这样更改本地分支的名称:
git branch -m <new name goes here>
Run Code Online (Sandbox Code Playgroud)
这就是它对我有用的方式.
更快的选择:
cat /dev/null > /var/lock/apache2/DAVlock这听起来像是权限问题-您是否可能打开了两个窗口并以单独的权限执行?也许检查.git文件夹的所有权。
也许检查一下是否有未打开的文件锁打开,也许使用lsof进行检查,或者与您的操作系统等效。
| 归档时间: |
|
| 查看次数: |
244963 次 |
| 最近记录: |