MyTetra Share
Делитесь знаниями!
Что показывают команды git branch --remotes и git ls-remote
Время создания: 11.03.2024 16:07
Текстовые метки: git, branch, remotes, команда, ветки, удаленная, отслеживаемая, просмотр, список
Раздел: Компьютер - Программирование - Системы контроля версий (VCS) - Git
Запись: xintrea/mytetra_syncro/master/base/1710162420q38xxqre4x/text.html на raw.github.com

В Git существует два метода, которые показывают удаленные (в смысле расположенные на сервере, а не локально) ветки. Так, во всеком случае, можно понять из документации. На самом деле эти две команды показывают совершенно разные вещи.


* * *


Команда git branch --remotes показывает ссылки на удаленные ветки, которые существуют локально. Грубо говоря, когда происходит связывание локальной и удаленной ветки, тогда локально создается ссылка на удаленную ветку. Именно эти ссылки на удаленные ветки и показываются данной командой.


Кстати, эти ссылки хранятся в файлах с именем ветки, расположенных в каталоге ./git/refs/remotes/origin. Один файл - одна ссылка на удаленную ветку. Имя файла - это имя ветки. В файле находится хеш коммита, на который указывает данная ссылка (здесь надо понимать, что ветка в Git - это всего лишь указатель на определенный коммит, подробности в этой статье).


Если дать команду разрыва связи между локальной и удаленной веткой, это значит только что будет разорвана связь. Это не значит, что ссылка на удаленную ветку будет удалена из локального репозитария. Поэтому команда git branch --remotes все так же будет показывать все ветки, на которые локально хранятся ссылки.


* * *


Команда git ls-remote связывается с удаленным сервером и выводит на экран ветки, которые существуют в репозитарии, и которые находятся на удаленном сервере. По сравнению с предыдущей командой, данная команда может показать больше веток, потому что программист может связывать не все локальные ветки с удаленными.


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



git fetch --all -p



Она получит список всех веток на удаленном сервере, и локально удалит те внешние ссылки на ветки, для которых которых на сервере нет веток (при этом список локальных веток и сами локальные ветки затронуты не будет).


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования