Que faire avec une branche après la fusion

342

J'avais deux branches: masteret branch1. Je viens fusionné de branch1nouveau dans masteret je suis fait avec cette branche. Dois-je le supprimer ou le laisser reposer? La suppression entraînera-t-elle une perte de données?

Alison
la source
Voir aussi: Comment utiliser git merge --squash?
Martin Thoma

Réponses:

410

Après la fusion, vous pouvez supprimer la branche en toute sécurité:

git branch -d branch1

De plus, git vous avertira (et refusera de supprimer la branche) s'il pense que vous ne l'avez pas encore complètement fusionnée. Si vous supprimez de force une branche (avec git branch -D) qui n'est pas encore complètement fusionnée, vous devez faire quelques astuces pour récupérer les validations non fusionnées (voir ci-dessous).

Il y a cependant quelques raisons de garder une succursale. Par exemple, s'il s'agit d'une branche de fonctionnalité, vous souhaiterez peut-être être en mesure de corriger des bogues sur cette fonctionnalité toujours à l'intérieur de cette branche.

Si vous souhaitez également supprimer la branche sur un hôte distant, vous pouvez faire:

git push origin :branch1

Cela supprimera de force la branche sur la télécommande (cela n'affectera cependant pas les référentiels déjà extraits et n'empêchera personne ayant un accès push de la repousser / créer).


git reflogaffiche les révisions récemment extraites. Toute branche que vous avez vérifiée dans l'historique récent du référentiel y apparaîtra également. En dehors de cela, git fscksera l'outil de choix dans tous les cas de perte de validation dans git.

Jonas Schäfer
la source
Si vous souhaitez enregistrer la branche, vous pouvez créer une balise avant de la supprimer. Si vous souhaitez revenir à ce point, vous pouvez retirer cette balise.
Joqus
3
@Joqus, je préfère le conserver en tant que branche dans ce cas. Ne le publiez pas.
Jonas Schäfer
Juste au cas où - si vous voulez «fusionner complètement» la branche avant de la supprimer, appuyez simplement sur cette branche après la fusion, mais avant de la supprimer. Quelque chose commegit checkout master && git merge branch1 && git push origin branch1 && git branch -d branch1
avtomaton
25

Je préfère RENOMMER plutôt que SUPPRIMER

Toutes mes succursales sont nommées sous la forme de

  • Fix/fix-<somedescription> ou
  • Ftr/ftr-<somedescription> ou
  • etc.

En utilisant la tour comme mon extrémité avant git, il organise soigneusement tous les Ftr/, Fix/, Test/etc. dans des dossiers.
Une fois que je suis fait avec une branche, je renomme qu'ilsDone/...-<description> .

De cette façon, ils sont toujours là (ce qui peut être utile pour fournir l'historique) et je peux toujours revenir en arrière en sachant ce que c'était (fonctionnalité, correction, test, etc.)

Yohst
la source
4
Renommez-vous également les succursales distantes?
VitalyB
22
Il semble superflu de conserver ces branches, et fou de les renommer . Est-ce que j'ai râté quelque chose? Vous pouvez toujours recréer la branche. stackoverflow.com/questions/3640764/…
ksav
n'a aucun sens de garder les succursales après leur fusion
rastaman
2
+1 pour l'idée de renommer Fix, Test and Done ... Le maintien des succursales est la façon dont les entrepreneurs sont payés pour mon entreprise.
jpfreire
1

Si vous voulez continuer et SUPPRIMER la branche après l'avoir fusionnée.
Il suffit de prendre soin de
toutes les références d'hyperliens URL de vos branches SUPPRIMÉES , seront CASSÉES .

ahmednabil88
la source