Список локальных веток
Чтобы вывести список локальных веток используется команда:
Список удаленных веток
Чтобы показать удаленные (remote) ветки используется ключ -r :
Перед тем, как выполнять данную команду, можно сначала обновить удаленные ветки у себя в репозитории, для этого используется команда:
git fetch загружает коммиты, файлы и ссылки из удаленного репозитория. Данная команда выполняется, когда вы хотите посмотреть, что изменилось в удаленном репозитории, что кто-то другой сделал в нем. При этом очень важно, что git fetch не изменяет никаких ваших локальных данных, над которыми вы работаете.
Список всех веток
Для вывода всех веток, локальных и удаленных, используется ключ -a :
Написал небольшой скрипт, который берет название ткущего бранча в гите, и использует его в дальнейших манипуляциях.
Для того, чтобы узнать название ветки, достаточно выполнить команду git branch.
Однако проблема заключается в том, что команда выводит список всех веток, помечая рабочую ветку звездочкой (*):
Из всего этого списка нам нужно вычленить название dev, да еще и без звездочки.
Есть сервер git, туда я поставил web-интерфейс, и надо прикрутить ctags на файлы, для этого надо обработать каждый push в hook’ах, решил я сделать две ветки на репозитории origin:
Надо теперь как то узнавать элейес репозитория (origin или др.), и ветку, по http такая информация не передается.
проделал я в локальном репе:
после этого я посмотрел файл head:
в .git/HEAD на клиенте: ref: refs/heads/dev
на сервере ref: refs/heads/master
dev была создана после master
но HEAD по сути должен же указывать на последний коммит в дереве изменений? Почему на сервере master?
вот еще выполнил на сервере:
то есть, может быть информация о ветке хранится в .pack файле? который по сути является хеш-таблицей(архивом) всего проекта.
1 ответ 1
предварительное напоминание
в git-е веткой (branch) называется «скользящий» указатель на commit, а не набор commit-ов, как принято в некоторых других системах управления контролем версий.
но HEAD по сути должен же указывать на последний коммит в дереве изменений? Почему на сервере master?
в bare-репозитории файл HEAD ссылается на «ветку по умолчанию», что в первую очередь влияет на результаты клонирования этого репозитория: если при клонировании не указано, на какую ветку следует переключить рабочий каталог (working directory) по окончании клонирования, именно на эту ветку и произойдёт переключение.
может быть информация о ветке хранится в .pack файле?
информация о ветках хранится в каталоге refs/heads . в описанном вами репозитории там должно быть по крайней мере два файла master и dev , содержащие хэш коммита, на который в данный момент и указывает соответствующая ветка.