A Git remote - это просто короткое имя, под которым Git хранит некоторые данные.Это не каталог.Запуск git remote
выводит список всех удаленных имен, о которых знает Git, и это в основном все, что git config --list
будет перечислять, начиная с remote.
: вы увидите:
remote.chris.url = <some url>
remote.origin.url = <another url>
remote.prime.url = <yet another url>
и, возможно, дополнительные строки, такие как:
remote.chris.fetch = +refs/heads/*:refs/remotes/chris/*
и так далее.Именно эти строки существование создают так называемый пульт.В частности, строки fetch
сообщают git fetch
, что ваш Git должен скопировать из другого Git, а строки url
сообщают вашему Git, как связываться с каждым из других Git.
A имя ветви , напротив, это имя, которое ваш Git использует для хранения одного конкретного хеш-идентификатора коммита.Это имя зависит от вас - оно не контролируется любым другим Git, оно контролируется вами, когда вы просите свой Git создать имена веток.В общем, если ваш пульт с именем origin
имеет ветку с именем master
, , ваш Git запомнит это имя как origin/master
, и вы можете захотеть, чтобы имя вашей ветви master
запомнило origin/master
, чтоваш Git запоминает master
на Git, который ваш Git вызывает через remote.origin.url
.
Git называет эти имена - origin/master
и т. д. имена для удаленного слежения или имена филиалов удаленного отслеживания .На самом деле они не являются именами ветвей, и они отличаются (но, очевидно, связаны) с пультами .Они используются для того, чтобы ваш Git запоминал («отслеживал») ветви на пульте, поэтому они называются именами удаленного отслеживания .
Обычно, ничего из этого не вызывает особого замешательства, потому что большинство пользователей в своих репозиториях Git имеют только один пульт с именем origin
, поэтому их master
будет соответствовать origin/master
.Но в вашем случае у вас есть три пультов.Git по адресу, названному через prime
, вероятно , также имеет master
, который ваш Git запомнит через prime/master
.Так что теперь у вас есть и origin/master
и prime/master
.Если вы хотите работать с ними, обычной рекомендацией будет использование вашей ветки с именем master
для работы с origin/master
и вашей ветки с именем master
для работы с prime/master
.Но это обречено на провал - поэтому вам нужно будет использовать некоторые другие имена локальных веток, и вот тут все становится запутанным.
К счастью, как мы только что видели, вашимена собственных ветвей не должны совпадать с именем какого-либо пульта.Вы можете иметь ветку типа EliasWork
, которая связана или не подключена к любому ваших имен для удаленного отслеживания.Ограничение состоит в том, что каждое имя ветви может иметь только один из этих наборов.Git называет это upstream ветви.
Очень странно, когда мы устанавливаем имя удаленного отслеживания в качестве восходящего потока ветви, Git говорит, что эта ветка теперь«отслеживание» это имя удаленного отслеживания.Итак, теперь у нас есть:
- A имя ветви , которое является локальным именем, которое мы создаем для себя ...
- , то есть tracking (как отдельное слово) восходящий поток из ...
- a имя удаленного отслеживания или удаленное отслеживание ветви-имя , которое, как завершенная фраза, на самом деле является локальным именем ...
- , которое запоминает имя ветви , как видно на удаленном ...
- , где remote - это короткое имя для URL-адреса для некоторого другого Git-репозитория (вот так!).
Обратите внимание, что это продолжает повторное использование различныхслова, и иметь их означают разные вещи!По терминологии, это оставляет желать лучшего.
В любом случае, ни один из этих каталогов не будет отображаться в вашем рабочем дереве , где вы выполняете свою работу,(Git иногда создает некоторые каталоги в .git
, используя эти имена, но каталог .git
, в котором хранится сам репозиторий, технически не включен в ваше рабочее дерево.)