Git和讨厌的“错误:不能locking现有的信息/裁判致命”
从远程git仓库克隆(在bettercodes)后,我做了一些改变,承诺,并试图推动:
git push origin master
错误与:
错误:无法locking现有的信息/裁判
致命的:git-http-push失败
这种情况下,已经存在的知识库
我之前做的是:
-
git config –global http.sslVerify false
-
git init
-
git remote add [url]
-
git clone
- 改变数据
-
git commit
在'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 remote(bitbucket.org)更改了他们的IP地址时,这发生在我身上。 快速修复是删除并重新添加远程,然后一切按预期工作。 如果你不熟悉如何删除和重新添加远程git,这里是步骤:
-
复制现有远程的SSH git URL。 您可以使用以下命令将其打印到terminal:
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仓库中删除远程仓库:
git remote rm origin
-
将遥控器添加回您的本地回购:
git remote add origin git@server-address.org:account-name/repo-name.git
对我来说,这工作:
git remote prune origin
我通过执行以下操作来解决此问题
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
这假设你的本地和远程分支是alignment的,你只是得到refs错误为非致命的。
这现在可能已经解决了。 但是这是对我有用的东西。
-
位置:
-
如果locking的存储库在服务器端:
- ssh到服务器上的git存储库。
- 以具有修改存储库权限的用户身份login并导航到服务器上的存储库。
-
如果locking的存储库仅在本地:
- 打开git控制台并导航到存储库目录。
-
运行这个命令:
git update-server-info
-
-
如果必须修复(远程或本地)存储库的权限。 在我的情况下,我不得不
chmod
到777
和chown
到apache:apache
-
尝试再次从本地存储库中推送:
git push
这是如何为我工作的。
- 查看服务器上的Apache DAVlocking文件(例如/ var / lock / apache2 / DAVlock)
- 删除它
- 用Web服务器的写入权限重新创build它
- 重新启动networking服务器
更快的select:
- 查看服务器上的Apache DAVlocking文件(例如/ var / lock / apache2 / DAVlock)
- 清空文件:
cat /dev/null > /var/lock/apache2/DAVlock
- 重新启动networking服务器
这听起来像一个权限问题 – 是否有可能你打开两个窗口,执行单独的权利? 也许检查.git文件夹的所有权。
也许检查是否有一个优秀的文件锁打开,也许使用lsof来检查,或相当于您的操作系统。
检查你(实际上是git进程)是否有权访问文件.git/info/refs
,这个文件没有被其他进程locking。
更新:
你可能需要编辑你的〜/ .netrc文件:
https://bugs.launchpad.net/ubuntu/+source/git-core/+bug/293553
原始答案:
你为什么禁用ssl? 我想这可能与您无法通过https推送有关。 我把它设置回来,并尝试再次推动:
git config –global http.sslVerify true
在bettercodes.org的情况下,解决scheme更具诗意 – 唯一的问题可能是分配给项目成员的权利。 简单的成员没有写权限! 请确保您拥有版主或pipe理员权限。 当然,这需要由pipe理员在项目设置的bettercodes.org上设置。
在我的情况下,一个分支被移动到一个子目录,该目录被称为分支。 Git被这个混淆了。 当我删除本地分支(在SourceTree只是右键删除),一切照常工作。