116 votes

Comment fermer une branche Git ?

Je commence par utiliser Git + GitHub.

Dans notre équipe distribuée, chaque membre crée sa propre branche pour chaque problème/exigence qui lui est attribué.

  1. git branch Issue#1 <-- create this branch
  2. git checkout issue#1 <-- switch over to this branch

maintenant code code , commit , code , commit etc...

puis pull request , code-fixup , commit , code , commit etc.

et finalement la demande de pull est acceptée.

Mais, et maintenant ?

La personne qui a créé la branche sur sa machine de développement local doit-elle fermer la branche ? Il a été suggéré que la personne chargée du développement supprime la branche. ( ... -D ...) et ensuite faire un pull / refresh du master qui obtiendra alors tout leur code de branche.

18 votes

Une branche dans Git est juste une étiquette sur un commit spécifique - donc, en gros, si vous n'en avez plus besoin, supprimez simplement cette "branche" (cette "étiquette" sur ce commit). Localement, il suffit de faire un git branch Issue#1 -d et c'est tout ce qu'il y a - aucun code n'est perdu, juste une étiquette est retirée de votre référentiel

1 votes

@marc_s je suggère d'en faire une réponse :)

0 votes

Donc @marc_s - vous dites que la pratique standard une fois que vous avez terminé votre branche et la branche a été poussée nous la supprimons ? Et pour la fusion ?

190voto

Bill Door Points 2561

Nous demandons au développeur qui demande la pull request de préciser qu'il souhaite que la branche soit supprimée. La plupart du temps, c'est le cas. Il arrive qu'une branche soit nécessaire (par exemple, pour copier les changements dans une autre branche de la version).

Mes doigts ont mémorisé notre processus :

git checkout <feature-branch>
git pull
git checkout <release-branch>
git pull
git merge --no-ff <feature-branch>
git push
git tag -a branch-<feature-branch> -m "Merge <feature-branch> into <release-branch>"
git push --tags
git branch -d <feature-branch>
git push origin :<feature-branch>

Une branche, c'est pour le travail. Une étiquette marque un endroit dans le temps. En étiquetant chaque fusion de branche, nous pouvons ressusciter une branche si cela est nécessaire. Les balises de branche ont été utilisées à plusieurs reprises pour revoir les changements.

10 votes

Nous avons récemment modifié notre procédure. Utilisation de git push --tags a la main lourde et télécharge tous les tags. Il est donc difficile d'avoir ses propres balises locales. A la place, nous utilisons git push origin branch-<feature-branch> pour ne pousser qu'un seul tag.

0 votes

Donc la dernière ligne, vous devez vous rappeler d'utiliser le nom de balise pour la branche de fonctionnalité, que nous avons défini précédemment à "branch-<feature-branch>", plutôt que juste <feature-branch>. C'est correct ?

0 votes

@PremierBromanov la dernière ligne est pour supprimer la branche à distance. Pour se rappeler le tag @BillDoor a utilisé git push --tags .

43voto

Dau Points 1939

Après avoir terminé le code, il faut d'abord fusionner la branche avec le master puis supprimer cette branche.

git checkout master
git merge <branch-name>
git branch -d <branch-name>

0 votes

Et c'est sur MA propre machine de développement, n'est-ce pas ? la personne principale qui accepte tout nouveau code sa machine est ailleurs.

2 votes

Si quelqu'un d'autre fait la fusion, il a le pointeur de votre branche dans un autre endroit habituellement distant, par exemple sender/branch-name. Il aura besoin d'utiliser git remote prune sender de s'en débarrasser aussi après vous - bien que dans la plupart des cas, il n'ait pas à s'en soucier.

1 votes

Vous Vous ne devriez jamais fusionner votre propre branche à moins que vous ne soyez le responsable de son intégration dans l'arbre principal. Si ce n'est pas le cas et que vous avez demandé à quelqu'un d'autre de l'intégrer, mettez à jour votre branche principale avec les nouveaux commits distants - ils devraient contenir ce que vous avez demandé à être retiré - puis supprimez votre branche. Cela vous assure de ne pas avoir de problèmes si l'autre personne a changé des choses.

40voto

Gaurav Gupta Points 2107

Oui, il suffit de supprimer la branche en exécutant git push origin :branchname . Pour corriger un nouveau problème plus tard, faites une nouvelle branche à partir de master.

3 votes

Cela supprimera la branche distante, pas la branche locale.

6 votes

Je ne sais pas pourquoi cette question est modérée à -2, c'est la réponse correcte. Ils ont certainement une branche distante, sinon comment pourraient-ils publier un PR contre elle ?

0 votes

Si vous faites cela, et que vous faites ensuite un git pull, cela ne va-t-il pas supprimer votre branche locale également ? (Edit : nm, je vois que cela ne le fait pas explicitement, sauf si vous exécutez git remote prune).

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