183 votes

Git - supprimer les branches locales après les supprimer sur la télécommande

Après mon pull request a été examiné par mes copains sur Github-je les fusionner et supprimer ma branche (à distance). Comment pourrais-je avoir mon repo local pour aller chercher cette information et obtenir Git pour supprimer ma version locale de la direction de l'? De sorte que mon local et à distance de repos sont toujours synchronisées en termes de branches. Aujourd'hui, j'ai un tas de vieux inutile branches localement et je ne peux pas imaginer qu'il n'y a pas de meilleur moyen que d'aller de l'avant et de les supprimer manuellement.

EDIT: J'ai fini par trouver la réponse ailleurs. Voir ci-dessous.

git branch --merged | grep -v "\*" | xargs -n 1 git branch -d

194voto

sf89 Points 564

J'ai trouvé la réponse ici: Comment puis-je supprimer toutes les branches git qui ont été fusionnées?

git branch --merged | grep -v "\*" | xargs -n 1 git branch -d

EDIT: comme certains l'ont souligné, cela peut éventuellement supprimer votre branche master. Vous devez lire attentivement la question, cette commande nettoie votre succursale locale de la liste. Cela signifie qu'il va supprimer toute la section locale qui n'existe pas sur votre télécommande. Si vous supprimez maître il y, alors votre version locale de celui-ci va disparaître.

77voto

nicky_zs Points 1179

Essayez :

 git pull--prune 

qui supprime votre succursale locale, si ses sites distants correspondant est supprimé.

24voto

Intrepid Points 1

Cela devrait fonctionner pour éviter de supprimer les branches maîtresses et développement avec la solution acceptée :

-2voto

user3705587 Points 1

L'voté réponse n'ont le potentiel pour supprimer maître. Consdier ci-dessous un exemple pratique.

J'ai eu deux branches hemen_README et hemen_BASEBOX qui ont été fusionnées dans les élaborer et développer ensuite été fusionnés en maître. Les branches hemen_README et hemen_BASEBOX ont été supprimés à distance, mais qui étaient toujours à l'affiche jusqu'au niveau local. Aussi, je ne suis pas sur de maître localement, mais à développer.

Dans ce cas

    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git branch -v -a
    * develop                      671ad6c Merged in hemen_README (pull request #1)
        hemen_BASEBOX                a535c0f added global exec paths to puppet manifest
        hemen_README                 ba87489 Updated Readme with considerable details
        master                       8980894 [behind 7] Initial Vagrantfile, works for vagrant up. Also initial .gitignore
        remotes/origin/develop       671ad6c Merged in hemen_README (pull request #1)
        remotes/origin/hemen_BASEBOX a535c0f added global exec paths to puppet manifest
        remotes/origin/hemen_README  ba87489 Updated Readme with considerable details
        remotes/origin/master        2f093ce Merged in develop (pull request #3)

Donc, si je exécutez la commande partielle

    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git branch --merged | grep -v "\*"
        hemen_BASEBOX
        hemen_README
        master

De l'avis qu'il illustre maître, qui finira par être supprimé.

En tout cas, j'ai été en mesure de le faire. Je suis le partage de mon journal de session avec vous sur la façon dont j'ai réalisé que.

    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git remote prune origin --dry-run
    Pruning origin
    URL: git@bitbucket.org:hemenkapadiapublic/vagrant-webdev.git
     * [would prune] origin/hemen_BASEBOX
     * [would prune] origin/hemen_README
    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git remote prune origin 
    Pruning origin
    URL: git@bitbucket.org:hemenkapadiapublic/vagrant-webdev.git
     * [pruned] origin/hemen_BASEBOX
     * [pruned] origin/hemen_README

Je viens de vérifier whay seront élagués et puis taillé. à la recherche à la direction de la commande ci-dessous, nous avons pris soin de télécommandes

    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git branch -v -a
    * develop                671ad6c Merged in hemen_README (pull request #1)
        hemen_BASEBOX          a535c0f added global exec paths to puppet manifest
        hemen_README           ba87489 Updated Readme with considerable details
        master                 8980894 [behind 7] Initial Vagrantfile, works for vagrant up. Also initial .gitignore
        remotes/origin/develop 671ad6c Merged in hemen_README (pull request #1)
        remotes/origin/master  2f093ce Merged in develop (pull request #3)

Maintenant aller de l'avant et de supprimer des branches locales

    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git branch -d hemen_BASEBOX 
    Deleted branch hemen_BASEBOX (was a535c0f).
    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git branch -d hemen_README
    Deleted branch hemen_README (was ba87489).

Bon maintenant les branches sont comme souhaité.

    hemen@hemen-MXC061:~/data/projects/vagrant-webdev$ git branch -v -a
    * develop                671ad6c Merged in hemen_README (pull request #1)
        master                 8980894 [behind 7] Initial Vagrantfile, works for vagrant up. Also initial .gitignore
        remotes/origin/develop 671ad6c Merged in hemen_README (pull request #1)
        remotes/origin/master  2f093ce Merged in develop (pull request #3)

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