В чем разница между origin и upstream на GitHub?


409

В чем разница между originи upstreamна GitHub ?

Когда git branch -aкоманда выполнена, некоторые ветви имеют префикс origin( remotes/origin/..), в то время как другие имеют префикс upstream( remotes/upstream/..).


Ответы:


806

Это следует понимать в контексте форков GitHub (где вы создаете репозиторий GitHub на GitHub перед локальным клонированием этого форка).

  • upstreamобычно относится к первоначальному репо, который вы разветвили
    (см. также « Определение« downstream»и upstream« »для более подробной информации о upstreamсроке)
  • origin ваша вилка: ваше собственное репо на GitHub, клон оригинального репо GitHub

Со страницы GitHub:

Когда репо клонируется, у него есть пульт по умолчанию, originкоторый указывает на ваш форк на GitHub, а не на тот репо, с которого он был разветвлен.
Чтобы отслеживать исходный репо, вам нужно добавить еще один пульт с именемupstream

git remote add upstream git://github.com/<aUser>/<aRepo.git>

(со aUser/aRepoссылкой на оригинального создателя и хранилище, которое вы разветвили)

Вы будете использовать upstreamдля извлечения из исходного репо (чтобы синхронизировать вашу локальную копию с проектом, в который вы хотите внести свой вклад).

git fetch upstream

( по умолчанию git fetchизвлекается только один origin, что здесь не то, что нужно)

Вы будете использовать , originчтобы тянуть и толкать , так как вы можете внести свой вклад в наше хранилище.

git pull
git push

(опять же, без параметров, по умолчанию используется origin)

Вы внесете свой вклад в upstreamрепо, сделав запрос на извлечение .

вилка и вверх по течению


11
Это также помогает узнать, что upstreamв целом: stackoverflow.com/questions/2739376/…
VonC

2
@MaxRydahlAndersen true, но мне нравится использовать Git без оболочки, поэтому я пока буду придерживаться этого соглашения (upstream и origin).
VonC

22
Безусловно лучшее объяснение того, как работают вилки, которое я видел. Вы получите мой голос.
CodeChimp

9
Отличная работа над визуалом. Очень прямой и понятный ответ. Это было именно то, что я искал.
Тайопи

1
@iamrudra, если git remote -v показывает один и тот же URL для источника и восходящего потока, тогда да, вы продвигаетесь к одному и тому же удаленному репо.
VonC
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.