411 votes

Comment puis-je archiver des branches git ?

J'ai quelques vieilles branches dans mon dépôt git qui ne sont plus en développement actif. Je voudrais archiver ces branches afin qu'elles n'apparaissent pas par défaut lors de l'exécution de git branch -l -r. Je ne veux pas les supprimer, car je veux conserver l'historique. Comment puis-je faire cela ?

Je sais qu'il est possible de créer un arbitre en dehors de refs/heads. Par exemple, refs/archive/old_branch. Y a-t-il des conséquences à faire cela ?

548voto

Jeremy Wall Points 10643

Je crois que la bonne façon de procéder est de marquer la branche. Si vous supprimez la branche après l'avoir étiquetée, vous aurez effectivement conservé la branche, mais elle n'encombrera pas votre liste de branches.

Si vous avez besoin de retourner à la branche, il suffit de regarder l'étiquette. Cela restaurera effectivement la branche à partir du tag.

Pour archiver et supprimer la branche :

git tag archive/<branchname> <branchname>
git branch -d <branchname>

Pour restaurer la branche un peu plus tard :

git checkout -b <branchname> archive/<branchname>

L'histoire de la branche sera préservée exactement comme elle était lorsque vous l'avez étiquetée.

181voto

Steve Points 715

La réponse de Jeremy est correcte en principe, mais, à mon avis, les commandes qu'il spécifie ne sont pas tout à fait correctes.

Voici comment archiver une branche vers une balise sans avoir à extraire la branche (et, par conséquent, sans avoir à extraire vers une autre branche avant de pouvoir supprimer cette branche) :

> git tag archive/<branchname> <branchname>
> git branch -D <branchname>

Et voici comment restaurer une branche :

> git checkout -b <branchname> archive/<branchname>

20voto

August Lilleaas Points 25812

Vous pouvez archiver les branches dans un autre référentiel. Pas tout à fait aussi élégant, mais je dirais que c'est une alternative viable.

git push git://yourthing.com/myproject-archive-branches.git yourbranch
git branch -d yourbranch

7voto

Pitr Points 31

J'utilise les alias suivants pour cacher les branches archivées :

[alias]
    br = branch --no-merge master # show only branches not merged into master
    bra = branch                  # show all branches

Alors git br pour montrer des branches activement développées et git bra pour montrer toutes les branches, y compris "archivé" les uns et les autres.

1voto

Banezaka Points 1

Vous pouvez utiliser un script qui archivera la branche pour vous

archibranche

Il crée un tag pour vous avec le préfixe archive/ et supprime ensuite la branche. Mais vérifiez le code avant de l'utiliser.


Utilisation - $/your/location/of/script/archbranch [branchname] [defaultbranch]

Si vous voulez exécuter le script sans écrire l'emplacement à lui ajouter à votre chemin

Ensuite, vous pouvez l'appeler par

$ archbranch [branchname] [defaultbranch]

Le site [defaultbranch] est la branche vers laquelle il ira lorsque l'archivage sera effectué. Il y a quelques problèmes avec le code couleur, mais sinon, ça devrait fonctionner. Je l'utilise dans des projets depuis longtemps, mais il est toujours en développement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X