web-dev-qa-db-fra.com

Suppression de branche Git

Dans Git, que signifie la "suppression" d'une branche?

Sera-t-il parti du référentiel? Ou sera-t-il toujours accessible via git branch?

Ce que je veux vraiment faire, c'est marquer une branche comme "impasse", c'est-à-dire que la branche est si loin d'être maître, que personne ne devrait l'utiliser comme point de départ, bien qu'il y ait de bonnes idées dans cette branche, nous tiens à le garder, pour référence.

77
bobobobo

Vous pouvez supprimer la branche, mais la marquer d'abord, pour que son historique ne disparaisse pas. De cette façon, la branche n'apparaît pas dans la liste des branches, ce qui devrait, espérons-le, dissuader les gens de travailler dessus, mais le travail ne sera pas définitivement effacé (même après l'exécution de la récupération de place). Par exemple, chaque fois que j'ai une branche qui n'est plus pertinente, mais que je ne suis pas prêt à la supprimer définitivement, je la marque comme "archive/<nom de la branche>".

Sur master ou sur une autre branche:

git tag archive/foo foo
git branch -D foo

Cela crée une balise nommée archive/foo de la branche foo avant de supprimer foo. Vous pouvez également ajouter un message à la balise, qui explique ce qui se trouve dans la branche, pourquoi elle existait, pourquoi c'est maintenant une impasse, etc.

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

La possibilité d'enregistrer pourquoi une branche est obsolète est peut-être un avantage du balisage par rapport au déplacement de branches vers un autre espace de noms.

Si jamais vous avez besoin de ressusciter une branche qui a été archivée de cette façon, c'est aussi simple que:

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

Maintenant, la branche est de retour comme si elle n'avait jamais été supprimée.

154
Dan Moulding

Les branches Git sont stockées en tant que références à une révision. Si vous supprimez la branche, la référence est supprimée; si rien d'autre ne fait référence à cette révision, elle sera éventuellement récupérée. De plus, si vous supprimez la branche, elle disparaîtra correctement (de votre référentiel). Si vous souhaitez marquer une branche comme obsolète mais la conserver pour une utilisation ultérieure, vous pouvez déplacer la branche dans un sous-répertoire:

$ 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

Alternativement, vous pouvez créer un référentiel séparé pour les branches obsolètes, les faire glisser puis les supprimer de l'original. Dans les deux cas, vous allez affecter tous les utilisateurs qui suivent les branches - le contenu de leur référentiel ne changera pas (et aucun de leurs noms de branche non plus), mais s'ils essaient de tirer à nouveau, ils doivent changer leur cible dans leur configuration.

2
Andrew Aylett

git branch -D <branchName> supprimera votre branche du référentiel. Vous ne pourrez plus le voir ni naviguer. Vous perdrez également toutes les modifications de fichiers apportées dans cette branche.

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

2
Stewie Griffin

Il ne sera pas navigable via la branche git et tant que le ramasse-miettes n'aura pas été effectué, il ne sera pas perdu du référentiel.

Si vous voulez marquer la branche en question comme une impasse, faites-le simplement (git ne le fera peut-être pas pour vous mais vous pouvez certainement)!

L'étiqueter (de la manière que vous préférez) en tant que référence historique fonctionne.

0