В чем разница между "origin" и "remote" в командах git? [дубликат]


этот вопрос уже есть ответ здесь:

на жаргоне git, are origin и remote то же самое? Или делает origin обратитесь к локальному каталогу?

в случае git push -u origin master: какое из следующих толкований является правильно?

  1. "подтолкните все вверх по течению к удаленному РЕПО под названием "origin" и его ветви "master""
  2. "push все от локального исходного РЕПО под названием "origin" до восходящей ветви "master""

признателен за любые разъяснения!

ответы на мой вопрос прояснить для меня два вопроса:

  1. origin относится к удаленному РЕПО, а не к локальной клонированной копии удаленного РЕПО. Этот не ясно, когда читаешь, что origin - это псевдоним remote и создается в момент git clone
  2. origin относится к удаленному РЕПО в git push -u origin master потому что локальные копии РЕПО подразумеваются и"редко ссылаются".
5 56

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?