Git: фатальный: текущий мастер ветвей имеет несколько ветвей вверх по течению, отказываясь толкать
У меня есть эта странная проблема, когда я делаю git push
, она отказывается что-то делать:
fatal: The current branch master has multiple upstream branches, refusing to push.
Когда я делаю git push -u origin master
, он, кажется, устанавливает его как ветку отслеживания:
Branch master set up to track remote branch master from origin.
Но в следующий раз, когда я попробую git push
, он отказывается это делать снова. Я попытался Google, но, похоже, проблема довольно новая, и я не мог найти объяснения этого поведения. Идеи?
Обновление: ./git/config
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = [email protected]:milk.git
[branch "master"]
remote = origin
merge = refs/heads/master
Обновление2:. Решено с помощью git config remote.origin.push HEAD
в разделе .git/config
to [remote "origin"]
появилась следующая строка:
push = HEAD
Update3:
$ git branch -vv
billing 633c796 [origin/billing: behind 889] links
* master 1a0de50 [origin/master: ahead 1] more fixes
new_master 3b880d7 [origin/new_master] branches diverged
photo_stacks 29c8f0d [origin/photo_stacks] 1st try
responsive 1dad980 [origin/responsive] update
$ git push
fatal: The current branch master has multiple upstream branches, refusing to push.
Ответы
Ответ 1
Возможно, вы захотите сделать следующее:
git config remote.origin.push HEAD
Нажатие без каких-либо аргументов в главном ветки может привести к вашему сообщению об ошибке. Я не уверен, что это проблема регрессии, или если это всегда было так.
Ответ 2
Запустите git config -l
и посмотрите, есть ли у вас несколько строк, содержащих ссылки branch.master *
Раздел [ведущий] [ветвь] может быть дублирован ~/.gitconfig
и .git/config.
Удаление этого параметра в ~/.gitconfig
исправило для меня обнаружение разметки вверх по течению.
Ответ 3
Вы должны указать, к какой ветки вы нажимаете. git push
автоматически попытается вытолкнуть все ссылки и теги, которые отслеживают локальные ветки. Возможно, что ветки онлайн на сервере продвинулись вперед. Поэтому вы можете столкнуться с этой ситуацией. Вы должны просто использовать
git push origin master
А также для согласования изменений выполните git pull
, которые будут обновлять ваши локальные ссылки с помощью сервера.
Ответ 4
Хорошо, после двухкратного обращения с новыми репозиториями у меня есть ответ.
git remote -v
git удаленный rm (все, кроме источника, если вы добавили какие-либо другие пульты)
git remote rm origin
! предупреждение: более одной ветки .master.remote < - это хорошо
git удаленный добавочный источник git @github.com: yourname/yourrepo
pull + push = FIXED
Ответ 5
Скорее всего это потому, что в вашем git config есть 2 или более branch.master.remote
. Один из вашего глобального конфига git, а другой из вашего локального конфига git.
Когда в конфигурации git указано 2 из них, git проигрывает, чтобы не предполагать одно или другое, даже если последнее определило приоритет над первым.
Современные репозитории, которые вы клонируете, должны включать конфигурацию локально, но вполне вероятно, что в вашей глобальной конфигурации git также определен branch.master.remote
.
Чтобы проверить, установлен ли он в вашей глобальной конфигурации, используйте:
git config --global --list | grep branch.master
Вы можете удалить или закомментировать раздел branch
в вашем глобальном конфиге git, и вам будет хорошо.
git config --global --remove-section branch.master
Это полностью удалит [branch "master"]
.
Если вы хотите сохранить его в своей глобальной конфигурации на всякий случай, вы можете переименовать его в другую ветку, которую вы, вероятно, не будете использовать.
git config --global --rename-section branch.master branch.someothername
При этом вы не должны получать ошибку множественных веток upstream, когда вы делаете git push
на master ветке.
git remote show origin
также больше не должен вызывать предупреждение.