Ответ 1
Вывод git branch -a
показывает, что у вас есть ветвь удаленного отслеживания, называемая origin/master
. Совершенно нормально.
Однако вывод git show-ref master
содержит
6726b4985107e2ddc7539f95e1a6aba536d35bc6 refs/origin/master
который указывает, что вы, скорее всего, выполнили что-то вроде следующей команды нижнего уровня:
git update-ref refs/origin/master master
Эта команда создает ветку (указывающую на то же сообщение, что и master
), называемое origin/master
, но живущая непосредственно под refs/
, то есть вне пространства имен refs/heads/
, где обычно живут локальные ветки. Вы хотели сделать это?
Такая ветка не будет указана в git branch -a
. Однако Git запутывается, потому что он видит две ветки, чьи образы заканчиваются на origin/master
:
-
refs/remotes/origin/master
, ветвь удаленного отслеживания и -
refs/origin/master
, локальная ветвь, созданная вами (случайно) внеrefs/heads/
.
Решение
Если вы не хотели создавать refs/origin/master
Просто удалите его:
git update-ref -d refs/origin/master
Тогда не будет никакой двусмысленности, и Git будет соответствовать, когда вы попытаетесь установить master
вверх по течению.
Если вы действительно хотели создать refs/origin/master
Чтобы избежать двусмысленности, просто укажите полное имя ветки, которую вы хотите установить как master
вверх по течению:
git branch --set-upstream-to=refs/remotes/origin/master master
Чтобы исправить идеи, вот какой код, который воспроизводит ситуацию в одном из моих репозиториев GitHub:
$ cd ~/Desktop
$ git clone https://github.com/Jubobs/gitdags && cd gitdags
$ git update-ref refs/origin/master
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
$ git show-ref master
15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/heads/master
15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/origin/master
15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/remotes/origin/HEAD
15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/remotes/origin/master
$ git branch --set-upstream-to=origin/master master
warning: refname 'origin/master' is ambiguous.
fatal: Ambiguous object name: 'origin/master'.
$ git update-ref -d refs/origin/master
$ git branch --set-upstream-to=origin/master master
Branch master set up to track remote branch master from origin.