В чем разница между "origin" и "remote" в командах git? [дубликат]
этот вопрос уже есть ответ здесь:
- что такое "происхождение" в Git? 8 ответов
на жаргоне git, are origin
и remote
то же самое? Или делает origin
обратитесь к локальному каталогу?
в случае git push -u origin master
: какое из следующих толкований является правильно?
- "подтолкните все вверх по течению к удаленному РЕПО под названием "origin" и его ветви "master""
- "push все от локального исходного РЕПО под названием "origin" до восходящей ветви "master""
признателен за любые разъяснения!
ответы на мой вопрос прояснить для меня два вопроса:
-
origin
относится к удаленному РЕПО, а не к локальной клонированной копии удаленного РЕПО. Этот не ясно, когда читаешь, чтоorigin
- это псевдонимremote
и создается в моментgit clone
-
origin
относится к удаленному РЕПО вgit push -u origin master
потому что локальные копии РЕПО подразумеваются и"редко ссылаются".
5 ответов:
на жаргоне git
origin
- Это просто имя по умолчанию для удаленных от РЕПО был первоначально клонирован. Его с таким же успехом можно было бы назватьsource
илиremote1
или простоremote
.помните, что
git
является одноранговой, распределенной системой, а не с каким-либо встроенным понятием отношений клиент/сервер, ведущий/ведомый, Родительский/дочерний (хотя они могут быть наложены на него Пользователем в определенном сценарии).все пульты одинаковы.
origin
просто (и буквально) первый среди этих равных (для клонированного РЕПО). :)и как Ян указывает в комментариях, имя, связанное с каждым пультом дистанционного управления, предназначено для вашего удобства. Если вы найдете, что
origin
на самом деле не работает для вас, то вы можете изменить его.что касается ваших интерпретаций
push
заявление, ваш первый ближе всего к правильности, но команда push, как написано, будет толкать локальныйmaster
филиала кmaster
филиала на удаленный идентифицируется (локально настроенным) именемorigin
.если нет
master
филиал в удаленном, то один будет создан.полная информация о команды Push и флаги, опции и т. д. Конечно, в документах.
вы редко (если вообще) ссылаетесь на "локальное" РЕПО явно, так как ваши операции выполняются в контексте РЕПО.
вы можете иметь несколько пультов дистанционного управления, каждый с другим именем - например, по умолчанию "origin"
ваш вопрос предполагает, что в настоящее время вы проверили главную ветвь.
git push -u origin master
нажимаем местного филиала по имени учителя "происхождения" удаленный филиал имени мастера. Параметр-U флаг говорит локальные Git, чтобы отслеживать, что удаленный филиал, как вверх по течению в ваш местный филиал.
нет, это не одно и то же.
remote
, вgit
- speak, относится к любому удаленному репозиторию, такому как ваш GitHub или другойgit
сервер.
origin
- это, по соглашению, удаленное имя по умолчанию вgit
. Когда вы делаетеgit clone <url>
,<url>
автоматически добавляется в локальное РЕПО под именемorigin
. Вы можете, конечно, добавить другие пульты дистанционного управления под разными именами с помощьюgit remote add
.когда вы
git push -u origin master
, что это означает "нажмите все, от моего местного мастера до пульта дистанционного управления с именемorigin
". Структура этой команды, конечно, более общая - более общая формаgit push -u <remote> <branch>
, который будет толкать ветку с названиемbranch
для назначенного пульта дистанционного управления, создавая его на дальнем конце, если пульт дистанционного управления еще не имеет его (вот что-u
флаг делает).в качестве дополнительного добавления,
git push
, по умолчанию, будет толкать текущую ветку вorigin
, что соответствуетgit push origin <current-branch>
.
A remote это просто слово: имя, которое можно использовать для идентификации какого-то другого репозитория Git где-то.
строка
origin
- Это имя по умолчанию (единственное) пульт, которыйgit clone
вставляется автоматически, когда вы клонируете из другого ("origin"-al) репозитория Git. Вы можете выбрать другое имя и/или добавить дополнительные пульты дистанционного управления. Каждый пульт имеет, по крайней мере, URL-адрес, в котором должен быть найден другой репозиторий.на
git push
, третий word-при необходимости отрегулируйте это число, если вы добавляете различные флаги; в этом случае вы добавили-u
Так что теперь это четвертое слово-это обычно название какого-нибудь пульта.остальные слова все refspecs, который можно суммировать (хотя и не на 100% точно ... на самом деле, менее 50% точно, в зависимости от того, как вы считаете :-) ) как пара имен ветвей, разделенных двоеточием.
если вы пишете только одно имя ветви, как
master
, Git это означает " использовать (часть) восходящего потока, если он установлен, в противном случае используйте то же имя после двоеточия."Обычно восходящий поток, если он установлен, имеет одно и то же основное имя, поэтомуmaster
обычно заканчивается значениеmaster:master
. Мерзавец отправляет их в git по адресу-совершает пульта нашел на код филиал (имя слева), а затем просит их установить их ветвь (имя справа) к тому же кончик фиксации вы только что нажали на эту ветвь.если вы не кладете в любом refspecs, git по умолчанию зависит от вашей версии Git. Начиная с версии git 2.0, по умолчанию нужно нажать ваш текущая филиала в ветку с тем же именем на пульте дистанционного управления.
The
-u
флаг говоритgit push
что, если толчок удастся, он должен set вверх по течению для ветки, которую вы только что нажали.The вверх по течению филиала состоит из двух частей: имя удаленного, и имя ветки на удаленном. С ты дал
git push
оба элемента-имя пульта былоorigin
, а ветка была второй (после двоеточия)master
от подразумеваемыхmaster:master
Сmaster
-это будет, если это удастся, установить программы дляmaster
доorigin/master
.(Edit: вы могли бы, вполне законно, задаться вопросом, где
/
приехали в вверх по течению заданиеorigin/master
. Это отчасти исторический артефакт. К сожалению, это приводит к огромному количеству недоразумений. Для теперь, просто имейте в виду, что remote,филиала и пульт дистанционного отслеживания ветви все разные вещи в Git. Все они связаны по-разному, но важно помнить, что они не одинаковы, и термины имеют очень специфические значения. Слово трек тоже перегружен. Новый термин вверх по течению лучше, но не все описания использовать его.)
нет,
remote
является родительской структуройorigin
. Это просто имя по умолчаниюremote
Git создается при клонировании репозитория.дополнительная информация в этом вопросе:что такое "происхождение" в Git?