В чем разница между 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 "исходное репо, из которого вы разветвились". Это становится вашим восходящим потоком, вы в основном получаете и объединяете его. Любые другие дела, такие как отправка из вашего локального в восходящий поток, должны выполняться с помощью запроса на перенос.

Другие вопросы по тегам