Расположение файла ветки Git - PullRequest
2 голосов
/ 16 апреля 2019

В моей локальной системе почти сто филиалов, большинство из которых устарели.Я хочу открыть файл, который содержит все ветви, чтобы я мог легко удалить большинство из них, вместо того, чтобы кропотливо удалять ветви одну за другой.Есть способ сделать это?Файл, который мы можем открыть, чтобы увидеть все ветви?

Ответы [ 2 ]

2 голосов
/ 16 апреля 2019

Каждая ветвь в Git представлена ​​одним текстовым файлом, содержащим SHA-1 фиксации последней в этой ветке. Эти файлы называются " ссылки " .

Вы можете видеть пути ветви refs и соответствующий коммит SHA-1, на который они указывают, говоря:

git show-ref --heads

, который вернет что-то вроде:

923eccb90415758c74bb3418007bf5691a0d4a1c refs/heads/some-branch
60e2e7f120f5410ec0ba97fa5093bae4dba4ee57 refs/heads/master

Теперь, если вы хотите, вы можете просто удалить ссылку на ветку, сказав:

rm .git/refs/heads/some-branch

но я бы не советовал возиться с внутренней структурой хранилища напрямую; вместо этого вы должны использовать собственные команды Git для этого.

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

git branch --list 'feature-*'

, чтобы получить список подходящих названий ветвей. Оттуда вы можете удалить эти ветки, сказав:

git branch --list 'feature-*' | xargs git branch -D

, где опция -D указывает Git удалить ветку независимо от того, была ли она включена в текущую ветку или нет.

1 голос
/ 16 апреля 2019

В git у вас нет файла, содержащего список ветвей, но есть каталог, содержащий один файл на ветку, названный точно в его честь.

Это .git/refs/heads, и, например, ваша основная ветвь состоит из файла .git/refs/heads/master (без расширения), а его содержимое - хеш коммита master, на который в данный момент указывает.

(обратите внимание на ветви с косой чертой в имени: они будут разбиты на определенные каталоги, т.е. файл для ветви feature/new-homepage будет находиться в подкаталоге feature и будет иметь имя new-homepage)


Также, возможно, проверьте упакованные ссылки . Либо использовать его в своем репо, либо проверить, упаковал ли кто-нибудь какие-либо ссылки.

...