Удаление ветки Git - PullRequest
       16

Удаление ветки Git

77 голосов
/ 26 февраля 2010

В Git, что означает «удаление» ветки?

Будет ли оно исчезнуть из хранилища? Или он все еще будет доступен через git branch?

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

Ответы [ 4 ]

153 голосов
/ 26 февраля 2010

Вы можете удалить ветку, но сначала отметьте ее, чтобы история не исчезла. Таким образом, ветвь не отображается в списке ветвей, что, как мы надеемся, должно удерживать людей от работы над ней, но работа не будет удалена окончательно (даже после запуска сборки мусора). Например, когда у меня есть ветка, которая стала неактуальной, но я не готова удалить ее навсегда, я помечаю ее как «архив / <<em> имя-ветви >».

Находясь на master или в другой ветке:

git tag archive/foo foo
git branch -D foo

Это создает тег с именем archive/foo из ветви foo перед удалением foo. Вы также можете добавить сообщение к тегу, которое объясняет, что находится в ветке, почему она существует, почему она теперь тупиковая и т. Д.

git tag -m 'Foo is deprecated in favor of bar' archive/foo foo

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

Если вам когда-нибудь понадобится воскресить ветку, которая была заархивирована таким образом, это просто:

git branch foo archive/foo
git tag -d archive/foo       # Optional

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

2 голосов
/ 26 февраля 2010

Ветви Git хранятся как ссылки на ревизию. Если вы удалите ветку, ссылка будет удалена; если ничто иное не ссылается на эту ревизию, она в конечном итоге будет собираться мусором. Кроме того, если вы удалите ветку, то она правильно исчезла (из вашего хранилища). Если вы хотите пометить ветку как устаревшую, но оставить ее для дальнейшего использования, вы можете переместить ветку в подкаталог:

$ git branch
* master
  testing_feature_one
  testing_feature_two
$ git branch -m testing_feature_one deprecated/testing_feature_one
$ git branch
  deprecated/testing_feature_one
* master
  testing_feature_two

В качестве альтернативы, вы можете создать отдельный репозиторий для устаревших ветвей, перетянуть их, а затем удалить их из оригинала. В любом случае вы будете влиять на любых пользователей, которые следуют за ветками - содержимое их репозитория не изменится (и ни одно из их имен ветвей), но если они попытаются снова выполнить извлечение, они будут должны изменить свою цель в своей конфигурации.

2 голосов
/ 26 февраля 2010

git branch -D <branchName> удалит вашу ветку из хранилища. Вы не сможете увидеть его или перемещаться больше. Также вы потеряете все изменения файла, сделанные в этой ветке.

https://git -scm.com / документы / ГИТ-филиал

0 голосов
/ 26 февраля 2010

Он не будет доступен через ветку git, и пока сбор мусора не будет выполнен, он не будет потерян из хранилища.

Если вы хотите пометить данную ветку как тупик, просто сделайте это (git может не сделать это для вас, но вы, конечно, можете)!

Маркировка (любым способом, который вы предпочитаете) как историческая справка работает.

...