2

问题

由于这个 git(或 github?)特质,我要疯了 - 我创建了一个新分支,但我无法将它推送到 github 上的上游 repo。这不是我推动这个 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.

知道为什么我的新分支被上游拒绝了吗?

4

2 回答 2

6

我在互联网上找不到这个问题的正确解释。所以我添加这个是为了帮助其他人理解这个问题。

Git 分支名称区分大小写,它映射到存储库中的文件/目录(并非总是如此,但对于新分支来说很常见)。因此,git 分支名称中的大小写差异可能会导致与您的情况类似的问题。在这种特殊情况下,我们看到现有分支以“Adam/”开头。这意味着 .git/refs/heads 中存在一个名为“Adam”的文件夹。当您尝试推送到名称以“adam/”开头的分支时,它与退出文件夹冲突。

于 2016-06-02T16:37:12.400 回答
2

TL;DR - 再次检查分支。

奇怪的是,我似乎不知何故离开了分支。提示显示oh-my-zsh我在分支中,但git branch显示我不在任何分支中:

在此处输入图像描述

之后git checkout Adam/no-push-bugfix,我似乎在分支中:

在此处输入图像描述

现在一切正常,我可以将分支推送到上游。我不确定是什么问题(例如,在adam和之间存在大小写差异Adam)。

于 2015-10-28T07:16:23.467 回答