web-dev-qa-db-fra.com

Quel est le bon moment pour supprimer une branche de fonctionnalité git?

Je ne veux pas finir avec 82 branches de fonctionnalités qui traînent , donc je me demande quels sont les inconvénients potentiels de simplement supprimer la branche de fonctionnalités dès que je la fusionne pour la maîtriser.

Flux de travail:

git co -b feat-xyz
hack hack
git ci
hack some more
git ci
git co master
git merge feat-xyz
smoke test
git br -d feat-xyz

Des problèmes ici?

77
bstpierre

Supprimer après fusion est la méthode habituelle. C'est pourquoi git branch -d vérifie que la branche est complètement fusionnée avant d'être supprimée.

Il y a quelques raisons pour lesquelles je peux penser à garder une branche: vous voudrez peut-être la conserver au cas où vous auriez des bugs qui reviendraient une fois qu'elle sera en production, ou vous voudrez peut-être un enregistrement historique.

Dans les deux cas, vous avez la possibilité de marquer le chef de la branche avant de la supprimer. Une balise est comme une branche en ce qu'elle est un pointeur vers une validation, à l'exception de quelques différences mineures: 1) la porcelaine n'affiche généralement pas de balises dans les commandes exploratoires comme git show-branch ou tab-auto complete in checkout, 2) en en retirant une vous place dans une pièce détachée (non-ref) HEAD 3) vous pouvez laisser un " message de balisage ", ce qui fait que la balise est enregistrée en tant que objet dans le magasin d'objets comme un commit.

De cette façon, vous conservez l'historique, et si jamais vous avez besoin de corriger un bogue, je vous recommande de simplement créer une nouvelle branche hors master pour le correctif.

52
masonk

Je supprime après la fusion, mais je fais toujours un git merge --no-ff, pour éviter une avance rapide afin que l'historique des branches soit visible sur le graphique. J'aime avoir l'historique de l'endroit où la branche de fonctionnalité est partie de la branche de développement et où elle a rejoint:

Merging with or without fast-forwards

Ceci est tiré de n modèle de branchement Git réussi par Vincent Driessen, un flux de travail très agréable à utiliser avec git que j'applique pour la plupart de mes projets.

87
lkraider

Je peux penser à deux raisons pour lesquelles vous voudrez peut-être garder une branche de fonctionnalité un peu:

  • Il y a une chance qu'il vous soit renvoyé pour plus de travail en amont.
  • D'autres développeurs peuvent vouloir cette fonctionnalité sans vouloir tout le reste en master.

En pratique, la plupart du temps, la suppression après la fusion est très bien.

7
Karl Bielefeldt

Le flux de travail typique sera

 // Create new branch
 $ git checkout -b myfeature
 // and then do some changes and commit them

 // Switch to master branch
 $ git checkout master

 // Merge myfeature to master. --no-ff will always keep branch information.
 $ git merge --no-ff myfeature

 // Delete myfeature branch
 $ git branch -d myfeature

 // Push the changes
 $ git Push Origin master
6
Fizer Khan

je pense que c'est le workflow typique (suppression après fusion)

EDIT Donc, plutôt que de fusionner, au moins pour les branches de courte durée, je pense que l'idée est de les rebaser sur le maître. vous vous retrouvez alors avec un historique de changement linéaire, et la branche entière devient une partie du tronc principal. dans ce cas, vous avez toutes les modifications, vous n'avez donc clairement pas besoin d'une copie.

1
second