Une branche locale est une branche que vous seul (l'utilisateur local) pouvez voir. Il n'existe que sur votre machine locale.
git branch myNewBranch # Create local branch named "myNewBranch"
Une succursale distante est une succursale située sur un site distant (dans la plupart des cas origin
). Vous pouvez pousser la branche locale nouvellement créée myNewBranch
vers origin
. Maintenant, d'autres utilisateurs peuvent le suivre.
git push -u origin myNewBranch # Pushes your newly created local branch "myNewBranch"
# to the remote "origin".
# So now a new branch named "myNewBranch" is
# created on the remote machine named "origin"
Une branche de suivi à distance est une copie locale d'une branche distante. Lorsque myNewBranch
est poussé à origin
utiliser la commande ci-dessus, une branche de suivi à distance nommée origin/myNewBranch
est créée sur votre machine. Cette branche de suivi à distance suit la branche distante myNewBranch
sur origin
. Vous pouvez mettre à jour votre branche de suivi à distance pour qu'elle soit synchronisée avec la branche distante à l' aide de git fetch
ou git pull
.
git pull origin myNewBranch # Pulls new commits from branch "myNewBranch"
# on remote "origin" into remote tracking
# branch on your machine "origin/myNewBranch".
# Here "origin/myNewBranch" is your copy of
# "myNewBranch" on "origin"
Une succursale de suivi locale est une succursale locale qui suit une autre succursale. Ceci afin que vous puissiez pousser / tirer des commits vers / depuis l'autre branche. Les branches de suivi locales dans la plupart des cas suivent une branche de suivi à distance. Lorsque vous pousser une branche locale à origin
utiliser l' option git push command
avec une -u
(comme illustré ci-dessus), vous configurez la branche locale myNewBranch
pour suivre la branche de suivi à distance origin/myNewBranch
. Ceci est nécessaire pour utiliser git push
et git pull
sans spécifier d'amont vers lequel pousser ou tirer.
git checkout myNewBranch # Switch to myNewBranch
git pull # Updates remote tracking branch "origin/myNewBranch"
# to be in sync with the remote branch "myNewBranch"
# on "origin".
# Pulls these new commits from "origin/myNewBranch"
# to local branch "myNewBranch which you just switched to.
Voici la longue réponse.
Télécommandes:
Si vous utilisez Git en collaboration, vous devrez probablement synchroniser vos commits avec d'autres machines ou emplacements. Chaque machine ou emplacement est appelé un distant , dans la terminologie de Git, et chacun peut avoir une ou plusieurs branches. Le plus souvent, vous n'en aurez qu'un, nommé
origin
. Pour lister toutes les télécommandes, exécutezgit remote
:Vous pouvez voir les emplacements pour lesquels ces noms distants sont des raccourcis, en exécutant
git remote -v
:Chaque télécommande a un répertoire sous
git/refs/remotes/
:Branches sur votre machine:
TLDR: sur votre machine locale, vous avez trois types de succursales: les succursales locales sans suivi, les succursales locales de suivi et les succursales à distance. Sur une machine distante, vous n'avez qu'un seul type de branche.
1. Succursales locales
Vous pouvez afficher une liste de toutes les branches locales sur votre ordinateur en exécutant
git branch
:Chaque succursale locale a un fichier sous
.git/refs/heads/
:Il existe deux types de succursales locales sur votre ordinateur: les succursales locales sans suivi et les succursales locales.
1.1 Succursales locales non suivies
Les succursales locales sans suivi ne sont associées à aucune autre succursale. Vous en créez un en courant
git branch <branchname>
.1.2. Suivi des succursales locales
Les succursales locales de suivi sont associées à une autre succursale, généralement une succursale de suivi à distance. Vous en créez un en courant
git branch --track <branchname> [<start-point>]
.Vous pouvez voir laquelle de vos succursales locales suit les succursales en utilisant
git branch -vv
:À partir de la sortie de cette commande, vous pouvez voir que la branche locale
master
suit la branche de suivi à distanceorigin/master
et que la branche localenew-feature
ne suit rien.Une autre façon de voir quelles branches suivent les branches est de jeter un œil à
.git/config
.Le suivi des succursales locales est utile. Ils vous permettent d'exécuter
git pull
etgit push
, sans spécifier quelle branche en amont utiliser. Si la branche n'est pas configurée pour suivre une autre branche, vous obtiendrez une erreur comme celle-ci:2. Branches de suivi à distance (toujours sur votre machine)
Vous pouvez afficher une liste de toutes les branches de suivi à distance sur votre machine en exécutant
git branch -r
:Chaque branche de suivi à distance a un fichier sous
.git/refs/<remote>/
:Considérez vos branches de suivi à distance comme votre cache local pour ce que contiennent les machines distantes. Vous pouvez mettre à jour vos branches de suivi à distance en utilisant
git fetch
, quigit pull
utilise les coulisses.Même si toutes les données d'une branche de suivi à distance sont stockées localement sur votre machine (comme un cache), elles ne sont toujours jamais appelées une branche locale. (Au moins, je n'appellerais pas ça comme ça!) C'est juste appelé une branche de suivi à distance.
Branches sur une machine distante:
Vous pouvez afficher toutes les branches distantes (c'est-à-dire les branches sur la machine distante), en exécutant
git remote show <remote>
:Cette
git remote
commande interroge la machine distante sur le réseau sur ses branches. Il ne met pas à jour les branches de suivi à distance sur votre machine locale, utilisezgit fetch
ougit pull
pour cela.À partir de la sortie, vous pouvez voir toutes les branches qui existent sur la machine distante en regardant sous la rubrique "branches distantes" (ignorez les lignes marquées comme "périmées").
Si vous pouviez vous connecter à la machine distante et trouver le référentiel dans le système de fichiers, vous pourriez jeter un œil à toutes ses branches sous
refs/heads/
.Aide-mémoire:
Pour supprimer une succursale locale, qu'elle soit avec ou sans suivi, en toute sécurité:
Pour supprimer une succursale locale, qu'elle soit avec ou sans suivi, de force:
Pour supprimer une branche de suivi à distance:
Pour créer une nouvelle branche locale sans suivi:
Pour créer une nouvelle branche de suivi locale: (Notez que si
<start-point>
est spécifié et est une branche de suivi à distance commeorigin/foobar
, alors l'--track
indicateur est automatiquement inclus)Exemple:
Pour supprimer une branche sur une machine distante:
Pour supprimer toutes les branches de suivi à distance qui sont périmées, c'est-à-dire là où les branches correspondantes sur la machine distante n'existent plus:
Vous avez peut - être remarqué que dans certaines commandes, utilisez - vous
<remote>/<branch>
, et d' autres commandes,<remote> <branch>
. Exemples:git branch origin/hello-kitty
etgit push --delete origin hello-kitty
.Cela peut sembler arbitraire, mais il existe un moyen simple de se rappeler quand utiliser une barre oblique et quand utiliser un espace. Lorsque vous utilisez une barre oblique, vous faites référence à une branche de suivi à distance sur votre propre machine, tandis que lorsque vous utilisez un espace, vous avez en fait affaire à une branche sur une machine distante sur le réseau.
la source
Branche locale:
Une branche sur votre machine dans laquelle vous pouvez travailler et ajouter des validations. Vous pouvez lister ces branches avec
git branch
.Succursale locale (avec suivi):
Une branche locale ordinaire configurée pour correspondre à une branche distante. Cela a des avantages tels que la possibilité de spécifier le référentiel et le nom de la branche
git pull
etgit push
sans avoir à spécifier. Le suivi a égalementgit status
pour effet de vous informer lorsque votre succursale est devant ou derrière la télécommande.Succursale distante:
Simplement une branche sur un référentiel distant, généralement sur un serveur tel que GitHub, etc.
Branche de suivi à distance:
Une copie locale d'une branche distante. Cette branche ne doit jamais être modifiée. Son objectif est de garder une trace de l'état actuel d'une branche distante. Les branches de suivi à distance peuvent être visualisées avec
git branch -r
et ressemblent généralement à quelque chose commeorigin/master
(nom du dépôt suivi d'une barre oblique suivie du nom de la branche). L'exécutiongit fetch
mettra à jour les branches de suivi distantes pour refléter l'état des branches distantes correspondantes.git branch -avv
est mon préféré pour afficher un aperçu rapide des branches sur ma machine, des branches sur la télécommande et du dernier commit de chacune. La-a
partie spécifie que toutes les branches doivent être affichées (distantes et locales). Lesv
's à la fin signifient verbose (il montre le dernier hachage et message de validation). Merci à @Flimm d'avoir signalé que le secondv
ajoute des informations sur quelle branche locale suit quelle télécommande.la source