Git ветки: отслеживание вверх по течению
Я не знаю, использую ли я Git или у меня проблемы с конфигурацией, поэтому любая ясность будет оценена:)
Я клонирую свои репозитории github на машины A и B, затем на машине A I делаю:
git checkout -b branchA
// make edits
git add .
git commit -am "initial"
git push
затем на машине B я делаю
git pull
git checkout branchA
// make edits
git commit -am "edits"
git push
на машине A я тогда делаю:
git pull
однако это говорит:
There is no tracking information for the current branch
поэтому я должен сделать:
git branch --set-upstream branchA origin/branchA
: / Почему я должен установить восходящий поток, когда он изначально подтолкнул его к origin/branchA без проблем?
В чем дело? Спасибо
Я использую мсыгит 1.8. на окнах
PS когда я делаю pull
на машине B, почему нет новой ветки branchA
отслеживается по умолчанию? git branch
не показывает это (но это делает с -r
). Могу ли я сделать так, чтобы все новые удаленные ветви отслеживались по умолчанию, когда я pull?
1 ответ
Поскольку git config push.default
ничего не возвращает, это означает, что с "git 1.8.0.msysgit.0" ваш git push
средства git push origin :
с refspec ':
'означает "совпадающая" ветвь.
Здесь это создает соответствие branchA
на удаленной стороне.
Но это не делает его удаленной ветвью отслеживания.
Другими словами, branch.branchA.merge
не установлен ни к чему.
Вот почему git pull не работает: он не знает, какую удаленную ветку он должен объединить с локальной branchA
,
Обратите внимание, ваш первый git push
должен был отобразить следующее сообщение:
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:
git config --global push.default matching
To squelch this message and adopt the new behavior now, use:
git config --global push.default simple
See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)
Итак, с Git2.0, этот git push не удастся.
Единственный способ подтолкнуть branchA
будет путем явной установки его восходящей ветви (с тем же именем):
git push -u origin branchA