Когда выполняется команда git branch -a, некоторые ветки имеют префикс origin (remotes/origin/..), а другие имеют префикс upstream (remotes/upstream/..).
Ответ 1
Это следует понимать в контексте форков GitHub (где вы создаете репозиторий GitHub на GitHub перед локальным клонированием этого форка).
upstream обычно относится к первоначальному репо, который вы разветкили.
(см. также "Определение" downstream "и" upstream "", чтобы узнать больше о термине upstream)
origin - это ваш форк: ваше собственное репо на GitHub, клон оригинального репо GitHub
Со страницы GitHub:
Когда репо клонируется, у него есть пульт по умолчанию origin, который указывает на ваш форк на GitHub, а не на тот репо, с которого он был разветвлен. Чтобы отслеживать исходный репо, вам нужно добавить еще один пульт с именем upstream
(с aUser/aRepo ссылкой на оригинального создателя и хранилище, которое вы разветкили)
Вы будете использовать upstream для извлечения из исходного репо (чтобы синхронизировать локальную копию с проектом, в который вы хотите внести свой вклад).
git fetch upstream
(по умолчанию git fetch будет извлекать из origin, что здесь не то, что нужно)
Вы будете использовать origin, чтобы тянуть и толкать, поскольку вы можете внести свой вклад в свой собственный репозиторий.
git pull
git push
(опять же, без параметров, по умолчанию используется 'origin')