В чем разница между "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. Это просто имя по умолчаниюremoteGit создается при клонировании репозитория.дополнительная информация в этом вопросе:что такое "происхождение" в Git?