В чем разница между origin и upstream на GitHub?
В чем разница между origin
а также upstream
на GitHub?
Когда git branch -a
команда выполнена, некоторые ветки имеют префикс origin
(remotes/origin/..
) в то время как другие имеют префикс upstream
(remotes/upstream/..
).
4 ответа
Это следует понимать в контексте форков GitHub (где вы создаете репозиторий GitHub на GitHub перед локальным клонированием этого форка).
upstream
как правило, относится к первоначальному репо, который вы разветвили
(см. также " Определение"downstream
" а также "upstream
" " Больше наupstream
срок)origin
ваша вилка: ваше собственное репо на GitHub, клон оригинального репо GitHub
Со страницы GitHub:
Когда репо клонируется, у него есть пульт по умолчанию, называемый
origin
это указывает на ваш форк на GitHub, а не на исходный репо, с которого он был разветвлен.
Чтобы отслеживать исходный репо, вам нужно добавить еще один пульт с именемupstream
git remote add upstream git://github.com/user/repo.git
Вы будете использовать upstream
извлечь из исходного репо (чтобы синхронизировать локальную копию с проектом, в который вы хотите внести свой вклад).
git fetch upstream
(git fetch
один принес бы из origin
по умолчанию, что здесь не то, что нужно)
Вы будете использовать origin
тянуть и толкать, так как вы можете внести свой вклад в свое собственное репо.
git pull
git push
(опять же, без параметров, по умолчанию используется origin)
Вы внесете свой вклад в upstream
сделайте репо, сделав запрос на извлечение.
Вкратце ответ.
- происхождение: вилка
- вверх по течению: разветвленный
вверх по течению
Upstream
обычно относится к исходному репо, которое вы разветвили. Чтобы отслеживать исходное репо, вам нужно добавить еще один удаленный файл с именем .
Когда мы запускаем эту команду:
git push -u origin master
Флаг -u означает, что ваша локальная ветка станет веткой отслеживания. То есть ветка, которая отслеживает удаленную ветку (т.upstream
ветка), чтобы в будущем git pull знал, из какой ветки выполнять слияние, и git push был направлен на правильную удаленную ветку.
Источник
Когда вы клонируете репозиторий с помощьюgit clone
команда, она автоматически создает удаленное соединение с именемorigin
указывая на клонированный репозиторий.Origin
это ваш форк собственного репозитория на GitHub, клон исходного репо GitHub.
Выполнив эту команду:
git push origin branchname
После клонирования вилки вы должны явно добавить удаленный апстрим, с помощью git add remote "исходное репо, из которого вы разветвились". Это становится вашим восходящим потоком, вы в основном получаете и объединяете его. Любые другие дела, такие как отправка из вашего локального в восходящий поток, должны выполняться с помощью запроса на перенос.