git:无法创建上游分支
问题
由于这个git(或github?)我要去香蕉 - idiosyncrasy - 我创建了一个新的分支,但我不能将它推到github上游的repo上。 这不是我推动这个回购的第一个分支,到目前为止一切顺利。
演练
我创建了一个新的分支:
$ git checkout -b adam/no-push-bugfix
对文件进行了一些更改,并添加了一些(这意味着一些更改未提交):
$ git add --patch path/to/some/file
确保改变是正确的:
$ git diff --staged
$ git commit -v
$ git status
并试图推动:
$ git push --set-upstream origin adam/no-push-bugfix
$ fatal: adam/whatever-name-bugfix cannot be resolved to branch.
任何想法为什么我的新分支从上游拒绝?
我无法在互联网上找到正确的解释。 所以我加入这个来帮助其他人理解这个问题。
Git分支名称区分大小写,并且映射到存储库中的文件/目录(并非总是如此,但对于新的分支来说这很常见)。 结果git分支名称中的case-difference可能会导致类似于您的情况的问题。 在这种特殊情况下,我们看到现有分支以“Adam /”开头。 这意味着在.git / refs / heads中存在一个名称为“Adam”的文件夹。 当您尝试推送名称以“adam /”开头的分支时,它与退出的文件夹冲突。
TL; DR - 再次检查分支。
奇怪的是,我似乎已经以某种方式离开了这个分支。 oh-my-zsh
提示符显示我在分支中,但是git branch
显示我不在任何分支中:
在git checkout Adam/no-push-bugfix
,我似乎在分支中:
现在一切正常,我可以将分支推向上游。 我不确定是什么问题(例如, adam
和Adam
之间存在一个案例差异)。