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

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

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

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

Ответ 1

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

Пока на 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

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

https://git-scm.com/docs/git-branch

Ответ 3

Разделы

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

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

Ответ 4

Он не будет доступен для навигации через ветвь git и пока не будет собрана сборка мусора, она не будет потеряна из репозитория.

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

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