832 votes

Comment arrêtez-vous de suivre une branche distante dans Git?

Comment pouvez-vous arrêter le suivi d'une branche à distance dans Git?

Je demande à arrêter le suivi parce que dans mon cas concret, je veux supprimer la branche locale, mais pas la distance. La suppression du local et en poussant la suppression à distance va supprimer la branche distante ainsi:

Puis-je simplement faire git branch -d the_branch, et il ne sera pas propagée lors de plus tard, j' git push?

Il va seulement se propager si je devais courir git push origin :the_branch plus tard?

1158voto

VonC Points 414372

Vous n'avez pas à supprimer votre succursale locale.

Il suffit de supprimer votre suivi à distance de la branche:

git branch -d -r origin/<remote branch name>

(Ce sera pas supprimer la branche sur la télécommande repo!)

Voir "Avoir du mal à comprendre git-fetch"

il n'y a pas de notion de local de suivi des branches, seulement suivi à distance des branches.
Donc, origin/master est un suivi à distance de la branche pour l' master dans la origin des pensions de

Comme mentionné dans le cadre du projet dobes Vandermeer's réponse, vous avez aussi besoin de réinitialiser la configuration associée au local de la branche:

git config --unset branch.<branch>.remote
git config --unset branch.<branch>.merge

Qui fera tout son push/pull complètement inconscients origin/<remote branch name>.

116voto

Dobes Vandermeer Points 1846

Pour supprimer l'association entre la branche locale et la branche distante:

 git config --unset branch.<local-branch-name>.remote
git config --unset branch.<local-branch-name>.merge
 

Supprimez éventuellement la branche locale par la suite si vous n'en avez pas besoin:

 git branch -d <branch>
 

Cela ne supprimera pas la branche distante.

43voto

Jacob Groundwater Points 2346

Le plus simple est d'éditer .git/config

Voici un exemple de fichier

 [core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        ignorecase = true
[remote "origin"]
        url = git@example.com:repo-name
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "test1"]
        remote = origin
        merge = refs/heads/test1
[branch "master"]
        remote = origin
        merge = refs/heads/master
 

Supprimer la ligne merge = refs/heads/test1 dans la section de branche test1

18voto

CletusW Points 1561

Vous pouvez supprimer la distance de suivi de la branche à l'aide de

git branch -d -r origin/<remote branch name>

comme VonC mentionne ci-dessus. Toutefois, si vous gardez votre copie locale de la branche, git push sera toujours essayer de pousser la branche (qui pourrait vous donner un non-avance rapide d'erreur comme il l'a fait pour ruffin). C'est parce que la config push.default par défaut est matching qui signifie:

correspondant pousser tous les branches. Toutes les branches ayant le même nom dans les deux extrémités sont considérés comme de la correspondance. C'est la valeur par défaut.

(voir http://git-scm.com/docs/git-config en vertu de l' push.default)

Vu que c'est probablement pas ce que vous vouliez quand vous avez supprimé la distance de suivi de branche, vous pouvez configurer push.default de upstream (ou tracking si vous avez git < 1.7.4.3)

de l'amont à pousser le courant branche à son amont de la branche.

à l'aide de

git config push.default upstream

et git va cesser d'essayer de pousser les branches qui vous ont "arrêté de suivi."

Remarque: la solution La plus simple serait de simplement renommer votre agence locale pour quelque chose d'autre. Cela permettrait d'éliminer certains risques de confusion, aussi bien.

0voto

Mark Caudill Points 78

La manière la plus simple de le faire est de supprimer la branche à distance, puis d'utiliser:

git fetch --prune (alias git fetch -p)

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