Задать вопрос
@kuramaa922

Что такое upstream в Git?

Всем привет, можете подсказать, что вообще такое upstream в контексте Git? Не получилось найти конкретный ответ на вопрос простыми словами
  • Вопрос задан
  • 3515 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Гит — это распределенная система. Мы можем иметь много равноправных репозиториев и обмениваться информацией между ними. Тот репозиторий, в который мы сейчас коммитим, будет локальным. А другие репозитории, в которые отправляем (push) или из которых получаем (fetch), они внешние (вышестоящие, upstream, remotely)
Часто говорят удаленные, но это не очень уместный перевод слова remote в данном контексте. Потому что появляются странные формулировки типа «удалить удаленный»

Именем upstream ещё принято обозначать исходный репозиторий, от которого мы сделали форк на GitHub, так как имя origin уже занято и указывает на форк. Поэтому адрес исходного репозитория, при необходимости, сохраняем в переменной upstream. В данном контексте это просто традиция, и назвать ссылки на внешние репозитории мы вольны как угодно. Команда git remote лишь создаёт переменные, в которых мы храним URL внешних репозиториев, чтобы затем использовать имя переменной в командах, вместо того, чтобы писать длинный URL.
Ответ написан
Комментировать
@sergiodev
upstream - это буквально означает "вверх по течению". Можно представить течение изменений (коммитов) от главного репозитория в ответвившиеся репозитории (форки) в виде реки и ручейков.

В Git upstream могут называть удалённый репозиторий (remote), от которого форкнули.

Вне контекста Git - это основная версия кода, публикуемая его автором. Например, кто-то пишет программу и публикует новую версию на своём сайте, а разработчики Debian упаковывают её в .deb-пакеты, возможно даже с дополнительными патчами. Для них код автора программы будет upstream.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
miraage
@miraage
Старый прогер
upstream это название для remote, зачастую в open-source & fork контексте.

Дефолтный ремоут обычно называется origin, когда мы клонируем репозиторий локально.
Однако когда имеем дело с форками, то надо добавлять другие ремоуты. И вот оригинальный ремоут, с которого мы делали форк, как раз называют upstream.

Чтиво

https://git-scm.com/book/en/v2/Git-Basics-Working-...
https://www.atlassian.com/git/tutorials/syncing
https://www.atlassian.com/git/tutorials/git-forks-...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы