Suppression de la branche Git

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

Sera-t-il parti du dépôt? Ou encore navigable 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 de master, que personne ne devrait l'utiliser comme point de départ, bien qu'il y ait de bonnes idées dans cette branche, donc nous aimerions la garder, pour référence.

76
demandé sur Sam 2010-02-26 18:52:08

4 réponses

Vous pouvez supprimer la branche, mais la marquer d'abord, de sorte 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 collecte des ordures). Par exemple, chaque fois que j'ai une branche qui est devenue non pertinente, mais que je ne suis pas prêt à la supprimer définitivement, je la marque comme "archive/branch-name>".

Alors que sur master ou un autre branche:

git tag archive/foo foo
git branch -D foo

Cela crée une balise nommée archive/foo à partir de la branche foo avant de supprimer foo. Vous pouvez également ajouter un message à l'étiquette, qui explique ce qu'est dans la branche, pourquoi il existe, 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 marquage par rapport au déplacement des 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 comme:

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.

152
répondu Dan Moulding 2011-01-11 13:55:51

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 finalement récupérée. En outre, si vous supprimez la branche, elle est correctement partie (de votre référentiel). Si vous voulez marquer une branche comme obsolète, mais le garder 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

Vous pouvez également créer un référentiel séparé pour les branches obsolètes, tirez-les sur puis supprimez-les 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), mais s'ils essaient de tirer à nouveau, ils devront changer leur cible dans leur configuration.

2
répondu Andrew Aylett 2010-02-26 16:15:01

git branch -D <branchName> supprimera votre branche du référentiel. Vous ne pourrez plus le voir ou naviguer. En outre, vous perdrez toutes les modifications de fichiers effectuées dans cette branche.

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

2
répondu Stewie Griffin 2017-06-16 11:12:20

Il ne sera pas navigable via la branche git et tant que la récupération de place n'est pas effectuée, il ne sera pas perdu du dépôt.

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

L'étiqueter (de quelque manière que vous préférez) comme un ouvrage de référence historique.

0
répondu Fake Code Monkey Rashid 2010-02-26 16:29:30