Git ветки: отслеживание вверх по течению

Я не знаю, злоупотребляю ли я при использовании Git, или если у меня есть проблема с конфигурацией, поэтому любая ясность будет оценена:)

Я клонирую свои репозитории github на машины A и B, затем на машине A:

git checkout -b branchA
// make edits
git add .
git commit -am "initial"
git push

то на машине B я do

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 без проблем?

Что происходит? Благодаря

Im, использующий msygit 1.8. на окнах

P.S. когда я делаю 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: он не знает, какую удаленную ветвь он должен объединить с локальным 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