我从我的主人(起源)创建了一个分支,并将其命名为TEST-101
(大写)。然后,我在我的分支机构工作并承诺并将我的更改推向原点。当我登录Github时,我可以看到我创建的分支。
我使用git bash并检查了我的本地版本的分支,但我输入全部小写:test-101
。然后我使用Git Gui并将我的更改提交给以小写字母输入的分支,当我尝试推送这些更改时,它给了我一个错误:
POST git-receive-pack (390618 bytes)
remote: error: failed to lock refs/heads/test-101
Pushing to ht://example/example/example/example.git
To ht://example/example/example/example.git
! [remote rejected] test-101 -> test-101 (failed to lock)
error: failed to push some refs to 'http://example/example/example/example.git'
(请注意,我在错误中更改了一些私人信息。)
我做了一些阅读,看来我的本地分支是小写的,而远程分支是大写的可能会导致问题?
您可以执行以下操作:
git branch -m test-101 tmp_branch
git checkout tmp_branch
git merge TEST-101 // make sure your data is up to date
git branch -D TEST-101
git branch -m tmp_branch TEST-101
-m
选项重命名分支,-D
选项将删除分支。
以下解决了这个问题:
git branch -m test-101 tmp_branch
git branch -m tmp_branch TEST-101
重命名本地分支以匹配远程分支的名称(确切地说,包括大写)将解决此问题,但您也可以只显式指定本地和远程分支的git push
:
git push test-101:TEST-101
对于今后遇到这种情况的人(比如我),发现这不起作用:
git branch -m branch_name tmp
git branch -m tmp BRANCH_NAME
你很可能在你的分支名称中有斜杠,例如BRANCH/NAME
;如果确实如此,您需要执行以下操作(从repo的根目录开始):
git branch -m branch/name tmp
mv .git/refs/heads/branch .git/refs/heads/BRANCH
git branch -m tmp BRANCH/NAME
与此同时,我已将此内容提交给Git邮件列表,并等待回复。