【发布时间】:2016-04-26 08:46:26
【问题描述】:
在我们公司,使用我们的名字来扩展功能的情况并不少见。因此,如果我们在master 上并想要分支一个新功能,我们将创建john/feature-test 或bob/feature-test2。这一直很有效,直到最近我们的一名队友失去了将任何东西推到我们原点的能力。
她可以创建其他分支就好了,但是如果分支以mira/... 开头,那么它会像这样失败:
$ git push -f
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 243 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: error: Cannot update the ref 'refs/heads/mira/testing': unable to create directory for logs/refs/heads/mira/testing: No such file or directory
To git@bitbucket.org:<team>/<repo>.git
! [remote rejected] mira/testing -> mira/testing (failed to update ref)
error: failed to push some refs to 'git@bitbucket.org:<team>/<repo>.git'
当我在我的机器上尝试这个时,我得到了同样的结果。所以问题似乎出在 Bitbucket 上的远程 git 服务器上。我们尝试删除所有以mira/... 开头的分支,但没有帮助。我已经修剪了远程和本地,运行了git gc,等等。似乎没有任何效果。
有趣的是我们可以进入 Bitbucket,创建一个名为 mira/testbranch 的分支,运行 git fetch,运行 git checkout mira/testbranch,进行更改,提交,然后推送……但推送仍然会失败问题。
有谁知道这是怎么发生的以及我们可以做些什么来解决它?
【问题讨论】:
-
如果我猜的话,那是因为您的分支的名称中有一个斜线,并且不知何故,您启用的某些接收后日志钩子无法处理它。它尝试为分支创建一个目录,但不是运行
mkdir -p $branchname,而是运行mkdir $branchname,但是当分支名称中有斜杠时,它会失败。这只是基于 git 知识的疯狂猜测,以及错误消息,但根本不了解 bitbucket。 -
尝试这里描述的解决方案:stackoverflow.com/a/42846055/2786215