Что делать с веткой после слияния

342

У меня было две ветви: masterи branch1. Я только что слился branch1обратно, masterи я закончил с этой веткой. Я должен удалить это или просто позволить этому сидеть без дела? Вызовет ли это потерю данных?

Alison
источник
Смотрите также: Как использовать git merge --squash?
Мартин Тома

Ответы:

410

После объединения можно безопасно удалить ветку:

git branch -d branch1

Кроме того, git предупредит вас (и откажется удалить ветку), если решит, что вы еще не полностью слили ее. Если вы принудительно удалите ветвь (с git branch -D), которая еще не полностью объединена, вам придется сделать несколько трюков, чтобы вернуть не слитые коммиты (см. Ниже).

Есть несколько причин, чтобы держать ветвь, хотя. Например, если это ветвь функции, вы можете захотеть исправлять ошибки для этой функции, все еще находящейся внутри этой ветви.

Если вы также хотите удалить ветку на удаленном хосте, вы можете сделать:

git push origin :branch1

Это принудительно удалит ветку на удаленном компьютере (однако это не повлияет на уже извлеченные репозитории и не помешает кому-либо с принудительным доступом повторно открыть / создать его).


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

Йонас Шефер
источник
Если вы хотите сохранить ветку, вы можете создать тег перед его удалением. Если вы хотите вернуться к этому моменту, вы можете проверить этот тег.
Joqus
3
@Joqus Я бы предпочел оставить это как ветку в этом случае. Только не публикуй это.
Йонас Шефер
На всякий случай - если вы хотите «полностью объединить» ветку перед ее удалением, просто нажмите эту ветку после объединения, но перед удалением. Что-то вродеgit checkout master && git merge branch1 && git push origin branch1 && git branch -d branch1
автомат
25

Я предпочитаю RENAME, а не DELETE

Все мои ветви названы в виде

  • Fix/fix-<somedescription> или
  • Ftr/ftr-<somedescription> или
  • и т.п.

Используя башню , как мой мерзавец конца переднего, он аккуратно организует все Ftr/, Fix/, и Test/т.д. в папки.
Как только я закончу с веткой, я переименую их в Done/...-<description>.

Таким образом, они все еще там (что может быть полезно для предоставления истории), и я всегда могу вернуться назад, зная, что это было (функция, исправление, тестирование и т. Д.)

Yohst
источник
4
Вы также переименовываете удаленные ветки?
VitalyB
22
Кажется излишним сохранять эти ветви и безумно переименовывать их. Я что-то здесь упускаю? Вы всегда можете воссоздать ветку. stackoverflow.com/questions/3640764/…
ksav
не имеет смысла держать ветви после того, как они были объединены
растаман
2
+1 за идею переименования в Fix, Test and Done ... Сохранение веток - это то, как подрядчикам платят за мою компанию.
19
1

Если вы продолжите и УДАЛИТЕ ветвь после слияния.
Просто позаботьтесь о
всех гиперссылках, URL-адресах ссылок ваших УДАЛЕННЫХ веток, будет РАЗРЫВ .

ahmednabil88
источник