起源/,远程/起源/ Git 混淆

5

我刚刚克隆了一个Git仓库并创建了一个新的分支。我已经做过很多次,没有遇到问题。今晚当我尝试使用git branch --set-upstream develop origin/develop来设置上游位置时,我遇到了这个错误:

fatal: Ambiguous object name: 'origin/develop'.

阅读周围的内容表明,这是由于同一个分支名称存在于 origin 和 remotes/origin 中所导致的。我不理解这两者之间的区别,以及为什么它们会以这种方式冲突。我输入了 git branch -a,输出如下:

* develop
  master
  origin/develop
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master

我对origin/developremotes/origin/develop之间的区别感到困惑,并且不明白为什么会导致fatal: Ambiguous object name: 'origin/develop'.错误。


(Note:原句已经非常通俗易懂,因此翻译内容较为简洁)
2个回答

2

我认为,可能是出于错误的原因,你有一个名为origin/master的本地分支。尝试运行git branch命令。如果列出了一个名为origin/master的分支,那就是它。

看看是否应该删除该分支。如果你不能或不想删除它,请改为运行git branch --set-upstream develop remotes/origin/develop命令。


1

我确认origin/develop是一个本地分支的名称,而不是指向远程分支(如remotes/origin/develop)。

分支名称中可以包含“/”:它们被称为“分层分支名称”(请参见“在Git分支名称中使用斜杠字符”)。
正如此线程中所解释的那样,这会防止您选择“develop”作为分支名称。您需要将其重命名。

 git branch -m origin/develop develop
 git branch --set-upstream develop origin/develop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接