Что такое «происхождение» в Git?

583

Когда я бегу:

git push origin branchname

Что именно originи почему я должен набрать его перед именем ветви?

enchance
источник
63
«origin» - это имя удаленного репозитория, в котором вы хотите опубликовать свои коммиты. По умолчанию удаленный репозиторий по умолчанию называется «происхождение», но вы можете работать с несколькими удаленными (с разными именами) одновременно. Более подробная информация здесь (например): gitref.org/remotes
Benoit Courtine
1
Также обратите внимание, что origin - это
VonC
2
Возможное дублирование значения «origin» в «git push origin master»
nawfal
Но затем при использовании git fetch, а затем в git branch -r к локальным веткам добавляется origin / ugh: - / atlassian.com/git/tutorials/syncing/git-fetch
brat
Извлеките файл .git \ config, в котором содержатся сопоставления псевдонимов URL-адресов. Папка .git по умолчанию скрыта.
Абхиджит Патель

Ответы:

569

originэто псевдоним в вашей системе для определенного удаленного хранилища. На самом деле это не свойство этого хранилища.

При выполнении

git push origin branchname

Вы говорите, чтобы подтолкнуть в originхранилище. Нет необходимости называть удаленный репозиторий origin: фактически, тот же репозиторий может иметь другой псевдоним для другого разработчика.

Remotes - это просто псевдоним, который хранит URL репозиториев. Вы можете увидеть, какой URL принадлежит каждому пульту, используя

git remote -v

В pushкоманде вы можете использовать пульты или просто напрямую использовать URL . Пример, который использует URL:

git push git@github.com:git/git.git master
doelleri
источник
1
Может ли один пульт быть псевдонимом для нескольких других пультов? Что если бы я хотел, чтобы один пульт выдвигался на несколько других пультов? Например, нажать на первичное репо, а толчок на резервное репо? Разве это было бы разумно в некоторых ситуациях? РЕДАКТИРОВАТЬ: Есть несколько решений здесь .
Янки
1
Что если я опущу ключевое слово "origin"? Когда мы говорим «git push», разве он не собирается отправлять все коммиты в удаленный репозиторий? Добавление ключевого слова «происхождение» кажется излишним.
Мюген
@Mugen В документации git pushвы можете увидеть, что сначала он проверяет конфигурацию для этого хранилища (которую вы можете проверить git config --list) на наличие ключа branch.<branchname>.remote. Если это не установлено, «по умолчанию это источник» - git-scm.com/docs/git-push
Кенмор
157

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

Это избавляет пользователя от необходимости вводить весь удаленный URL при запросе push.

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

Это псевдоним не является жестко запрограммированным и может быть изменен с помощью следующей командной строки:

git remote rename origin mynewalias

Посмотрите на http://git-scm.com/docs/git-remote для дальнейших разъяснений.

Антуан Мельцхайм
источник
1
Что если я опущу ключевое слово "origin"? Когда мы говорим «git push», разве он не собирается отправлять все коммиты в удаленный репозиторий? Добавление ключевого слова «происхождение» кажется излишним.
Мюген
74

Git имеет понятие «удаленные», которые являются просто URL-адресами других копий вашего хранилища. Когда вы клонируете другой репозиторий, Git автоматически создает удаленный сервер с именем «origin» и указывает на него.

Вы можете увидеть больше информации о пульте, набрав git remote show origin.

Джейсон Малиновский
источник
1
команды git очень запутывают новичков. Я думаю, это связано с историей этой системы контроля версий. Итак, вопрос: а git remote show originне почему бы просто git show origin? Должна быть причина, что это? Спасибо.
Stack0verflow
5
@ Stack0verflow: это, вероятно, лучше задать как новый вопрос, чтобы люди могли провести исследование, если вам интересно. 'git show' - это уже другая команда, которая показывает коммит, и технически ничто не помешает вам иметь ветку с именем 'origin' в дополнение к удаленной, называемой origin ...
Jason Malinowski
44

originявляется псевдонимом по умолчанию для URL вашего удаленного хранилища.

Джуд Калимбас
источник
24

Просто! «origin» - это то, что вы называли своим удаленным репозиторием, когда запускали такую ​​команду:

git remote add origin git@github.com:USERNAME/REPOSITORY-NAME.git

С тех пор Git знает, что «origin» указывает на этот конкретный репозиторий (в данном случае GitHub). Вы могли бы назвать это "GitHub" или "РЕПО" или как угодно.

Trev14
источник
19

Я также был смущен этим, и ниже - то, что я изучил.

Когда вы клонируете репозиторий, например, из GitHub:

  • originэто псевдоним для URL, с которого вы клонировали репозиторий. Обратите внимание, что вы можете изменить этот псевдоним.

  • В masterудаленном хранилище есть одна ветка (с псевдонимом origin). Существует также еще одна masterветка, созданная локально.

Дополнительную информацию можно найти в этом вопросе SO: Разветвление Git: master против origin / master vs. remotes / origin / master

умеш пракаш бапат
источник
11

Когда вы клонируете репозиторий с помощью git clone, он автоматически создает удаленное соединение с именем, originуказывающим назад на клонированный репозиторий. Это полезно для разработчиков, создающих локальную копию центрального репозитория, поскольку предоставляет простой способ извлекать изменения из исходной системы или публиковать локальные коммиты. Такое поведение также объясняет, почему большинство проектов на основе Git называют свое центральное хранилище.

Владимир
источник
3

Лучший ответ здесь:

https://www.git-tower.com/learn/git/glossary/origin

В Git «origin» - это сокращенное имя для удаленного репозитория, из которого изначально был клонирован проект. Точнее, он используется вместо URL этого исходного хранилища - и, таким образом, делает ссылки намного проще.

Александр Шапкин
источник
0

С https://www.git-tower.com/learn/git/glossary/origin :

В Git «origin» - это сокращенное имя для удаленного репозитория, из которого изначально был клонирован проект. Точнее, он используется вместо URL этого исходного хранилища - и, таким образом, делает ссылки намного проще.

Обратите внимание, что происхождение отнюдь не «волшебное» имя, а просто стандартное соглашение. Хотя имеет смысл оставить это соглашение без изменений, вы можете прекрасно переименовать его, не теряя никакой функциональности.

В следующем примере параметр URL для команды «клон» становится «источником» для клонированного локального репозитория:

git clone https://github.com/gittower/git-crash-course.git
Дикша Шарма
источник
Когда вы копируете контент, написанный другими, вы должны четко дать понять, что вы делаете это, и вы всегда должны включать ссылку на источник. В противном случае это плагиат, и это причина, чтобы удалить ответ. Кроме того, ваш ответ уже был опубликован .
Фабио говорит восстановить Монику
0

Другие ответы говорят, что originэто псевдоним для URL удаленного хранилища, который не совсем точен. Следует отметить , что адрес , который начинается с httpявляется URL в то время как тот , который начинается с git@является URI идентификатора или универсального ресурса.

Все URL являются URI, но не все URI являются URL.

Короче говоря, когда вы печатаете, git remote add origin <URI>вы говорите своему локальному git, что всякий раз, когда вы используете слово, originвы на самом деле подразумеваете указанный вами URI. Думайте об этом как о переменной, содержащей значение.

И точно так же , как и переменная, вы можете назвать это все , что вы хотите (например. github, heroku, destinationИ т.д.).

Энди Линдсей
источник
0

удаленный (псевдоним URL репозитория) → источник (псевдоним восходящего потока) → мастер (псевдоним ветви);

  • remote, Уровень такой же , как working directory, index, repository,

  • origin, локальная ветвь репозитория сопоставляется с веткой удаленного репозитория

山 茶树 和 葡萄 树
источник