Git和讨厌的“错误:不能locking现有的信息/裁判致命”

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

git push origin master 

错误与:

错误:无法locking现有的信息/裁判
致命的:git-http-push失败

这种情况下,已经存在的知识库

我之前做的是:

  1. git config –global http.sslVerify false
  2. git init
  3. git remote add [url]
  4. git clone
  5. 改变数据
  6. 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,这里是步骤:

  1. 复制现有远程的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) 
  1. 从您的本地git仓库中删除远程仓库:

    git remote rm origin

  2. 将遥控器添加回您的本地回购:

    git remote add origin git@server-address.org:account-name/repo-name.git

你想尝试做:

 git gc --prune=now 

请参阅https://www.kernel.org/pub/software/scm/git/docs/git-gc.html

对我来说,这工作:

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错误为非致命的。

这现在可能已经解决了。 但是这是对我有用的东西。

  1. 位置:

    • 如果locking的存储库在服务器端:

      1. ssh到服务器上的git存储库。
      2. 以具有修改存储库权限的用户身份login并导航到服务器上的存储库。
    • 如果locking的存储库仅在本地:

      1. 打开git控制台并导航到存储库目录。
      2. 运行这个命令:

         git update-server-info 
  2. 如果必须修复(远程或本地)存储库的权限。 在我的情况下,我不得不chmod777chownapache:apache

  3. 尝试再次从本地存储库中推送:

     git push 

这是如何为我工作的。

  1. 查看服务器上的Apache DAVlocking文件(例如/ var / lock / apache2 / DAVlock)
  2. 删除它
  3. 用Web服务器的写入权限重新创build它
  4. 重新启动networking服务器

更快的select:

  1. 查看服务器上的Apache DAVlocking文件(例如/ var / lock / apache2 / DAVlock)
  2. 清空文件: cat /dev/null > /var/lock/apache2/DAVlock
  3. 重新启动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只是右键删除),一切照常工作。