Определение понятий "вниз по течению" и " вверх по течению"



Я начал играть с Git и наткнулся на термины "вверх по течению" и "вниз по течению". Я видел их раньше, но никогда не понимал их полностью. Что означают эти термины в контексте SCMs ( Управление Конфигурацией Программного Обеспечения инструменты) и исходный код?

1077   5  

5 ответов:

с точки зрения управления версиями, вы"вниз по течению" при копировании (клон, кассе и т. д.) из репозитория. Информация текла" вниз по течению " к вам.

когда вы вносите изменения, вы обычно хотите отправить их обратно" вверх по течению

иногда вы читаете о менеджерах пакетов или релизов (люди, а не инструмент), говорящих о внесении изменений в "upstream". Это обычно означает, что они должны были настроить исходные источники, чтобы они могли создать пакет для своей системы. Они не хотят продолжать вносить эти изменения, поэтому, если они отправят их "вверх по течению" к исходному источнику, они не должны иметь дело с той же проблемой в следующем выпуске.

когда вы читаете в git tag на странице:

одним из важных аспектов git является то, что он распределен, и будучи распределенным в значительной степени означает, что в системе нет присущего "вверх по течению" или "вниз по течению".

, просто значит нет абсолютное вверх по течению или вниз по течению РЕПО РЕПО.
Эти понятия всегда относительны между двумя репозиториями и зависят от способа передачи данных потоки:

если "yourRepo" объявил "otherRepo" как удаленный, то:

  • вы потянув вверх по течению "otherRepo" ("otherRepo" - это " вверх по течению С ты", а ты "вниз по течению на otherRepo").
  • вы толчок вверх по течению ("otherRepo "по-прежнему" вверх по течению", куда теперь возвращается информация).

обратите внимание на "от" и "За": вы не просто" вниз по течению", вы " вниз по течению из-за", отсюда и относительный аспект.


поворот DVCS (распределенная система управления версиями): вы понятия не имеете, что на самом деле находится ниже по течению, кроме вашего собственного РЕПО относительно удаленных репо, которые вы объявили.

  • вы знаете, что такое upstream (репо, которые вы тянете или толкаете)
  • вы не знаете, что вниз по течению сделано (другие РЕПО вытягивая или толкая к ваш РЕПО).

по сути:

в "поток данных", ваше РЕПО находится внизу ("вниз по течению") потока, поступающего из восходящих РЕПО ("вытянуть из") и возвращающегося к (тому же или другому) восходящим РЕПО ("нажать на").


вы можете увидеть иллюстрацию в git-rebase на странице с абзацем " восстановление из восходящего потока Перебазировать":

это значит, что ты вытягивание из РЕПО" вверх по течению", где произошла перебаза, и вы (РЕПО" вниз по течению") застряли с следствием (много повторяющихся коммитов, потому что ветвь, перебазированная вверх по течению, воссоздала коммиты той же ветви, что и локально).

это плохо, потому что для одного "вышестоящего" РЕПО может быть много нижестоящие РЕПО (т. е. РЕПО, тянущиеся от вышестоящего, с помощью rebased branch), все они потенциально могут иметь дело с дублирующими коммитами.

опять же, с аналогией "потока данных", в DVCS одна плохая команда" вверх по течению "может иметь"эффект" вниз по течению.


Примечание: это не ограничивается данным.
это также относится к параметрам, поскольку команды git (например, "фарфоровые") часто вызывают внутренне другие команды git ("сантехнические"). Видеть rev-parse на странице:

многие команды git porcelainish принимают смесь флагов (т. е. параметры, которые начинаются с тире'-') и параметры, предназначенные для базового git rev-list команда, которую они используют внутренне и параметры и флаги для других команд, которые они используют, ниже git rev-list. Эта команда используется для различения между ними.

вверх по течению (как связано с) отслеживание

термин вверх по течению также имеет некоторое однозначное значение, как и набор инструментов GIT, особенно относительно отслеживание

например :

   $git rev-list --count --left-right "@{upstream}"...HEAD
   >4   12

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

    >error: No upstream branch found for ''
  • как уже было сказано, у вас может быть любое количество пультов для одного локального репозитория, например, если вы разветвляете репозиторий из github, а затем выдаете "запрос на вытягивание", у вас наверняка есть по крайней мере два: origin (ваше раздвоенное РЕПО на github) и upstream (РЕПО на github, из которого вы раздвоились). Это просто взаимозаменяемые имена, только 'git@...'URL-адрес идентифицирует их.

код .git/configгласит :

   [remote "origin"]
       fetch = +refs/heads/*:refs/remotes/origin/*
       url = [email protected]:myusername/reponame.git
   [remote "upstream"]
       fetch = +refs/heads/*:refs/remotes/upstream/*
       url = [email protected]:authorname/reponame.git
  • С другой стороны, @{upstream}значение для GIT уникально:

это 'филиал' (если есть) - сказал удаленного', который отслеживает 'ветки' на локальный репозиторий'.

это ветка, которую вы приносите / тянете от всякий раз, когда вы выдаете обычный git fetch/git pull, без аргументов.

допустим, вы хотите установить удаленную ветвь origin / master в качестве ветви отслеживания для локальной главной ветви, которую вы проверили. Просто вопрос :

   $ git branch --set-upstream  master origin/master
   > Branch master set up to track remote branch master from origin.

это добавляет 2 параметра в .git/config:

   [branch "master"]
       remote = origin
       merge = refs/heads/master

теперь попробуйте (при условии, что' upstream 'remote имеет ветвь 'dev')

   $ git branch --set-upstream  master upstream/dev
   > Branch master set up to track remote branch dev from upstream.

.git/config гласит:

   [branch "master"]
       remote = upstream
       merge = refs/heads/dev

git-push(1) Страница Руководства:

   -u
   --set-upstream

для каждой ветви, которая обновлена или успешно нажата, добавьте вверх по течению (отслеживание) ссылка, используемая без аргументов git-pull (1) и другими командами. Дополнительные сведения см. В разделе branch.<name>.merge в git-config (1).

git-config(1) Страница Руководства:

   branch.<name>.merge

определяет, совместно с branch.<name>.remote на вверх по течению ветвь для данной ветви. Он предписывает принести/ГИТ тянуть/ГИТ перебазирования ветви для слияния, а также может повлиять на настройки git'а (см. пуш.неисполнение.) \ (...)

   branch.<name>.remote

когда в ветке , он сообщает git fetch и git push, какой пульт для извлечения из/push. По умолчанию источник, если удаленный не настроен. origin также используется, если вы не находитесь в какой-либо ветке.

вверх по течению и толчок (попался)

посмотри git-config(1) Страница Руководства

   git config --global push.default upstream
   git config --global push.default tracking  (deprecated)

это для предотвращения случайных толчков к ветвям, которые вы еще не готовы нажать.

Это немного неформальная терминология.

Что касается Git, каждый другой репозиторий является просто удаленным.

вообще говоря, вверх по течению-это то, откуда вы клонировали (происхождение). Downstream-это любой проект, который объединяет вашу работу с другими работами.

условия не ограничиваются репозиториями Git.

например, Ubuntu является производной Debian, поэтому Debian находится выше по течению для Ubuntu.

Вверх По Течению Называется Вредным

есть, увы, другое использование "вверх по течению", что другие ответы здесь не получают, а именно, чтобы ссылаться на отношения родитель-потомок коммитов в репо. Скотт Чакон в Pro Git book особенно склонен к этому, и результаты печальны. Не подражайте этому способу говорить.

например, он говорит о слиянии в результате быстро вперед, что это происходит потому, что

в фиксация, на которую указывает ветвь, в которой вы слились, была непосредственно выше по течению от фиксации вы находитесь на

Он хочет сказать, что commit B является единственным ребенком единственного ребенка ... единственного потомка commit A, поэтому для слияния B в A достаточно переместить ref A в точку для фиксации B. почему это направление должно называться "вверх по течению", а не" вниз по течению", или почему геометрия такого чистого прямолинейного графа должна быть описана "непосредственно вверх по течению", совершенно неясно и наверное, произвольно. (К Man-странице git-merge гораздо лучше объясняет эту связь, когда говорит, что " текущий руководитель филиала является предком именованного коммита.- Именно это и должен был сказать Чакон.)

действительно, сам Чакон, похоже, использует "вниз по течению" позже, чтобы означать точно то же самое, когда он говорит о переписывании всех дочерних коммитов удаленного коммита:

вы должны переписать все коммиты вниз по течению от 6df76 до полностью удалять этот файл из вашей истории Git

в основном он, кажется, не имеет четкого представления, что он имеет в виду под "вверх по течению" и "вниз по течению", когда обращается к истории коммитов с течением времени. Таким образом, это использование является неофициальным и не должно поощряться, поскольку оно просто сбивает с толку.

совершенно ясно, что каждый коммит (кроме одного) имеет по крайней мере одного родителя, и что родители родителей являются, таким образом, предками; и в другом направлении коммиты имеют детей и потомки. Это общепринятая терминология и однозначно описывает направленность графа, так что это способ говорить, когда вы хотите описать, как коммиты связаны друг с другом в геометрии графа РЕПО. Не используйте" вверх по течению "или" вниз по течению " свободно в этой ситуации.

[дополнительное примечание: Я думал о связи между первым предложением Чакона, которое я цитирую выше, и git-merge man page, и мне кажется, что первый может быть основан на a непонимание последнего. На справочной странице описывается ситуация, когда использование "восходящего потока" является законным: быстрая переадресация часто происходит, когда "вы отслеживаете вышестоящий репозиторий, вы не совершили никаких локальных изменений, и теперь вы хотите обновить до более новой версии восходящего потока.- Так что, возможно, Чакон использовал слово "вверх по течению", потому что видел его здесь, на главной странице. Но в man-странице есть удаленный репозиторий; в приведенном примере быстрой переадресации Chacon нет удаленного репозитория, всего пара локально созданных филиалов.]

Comments

    Ничего не найдено.