Je sais que je peux le faire git branch --all
, et cela me montre à la fois les succursales locales et distantes, mais ce n'est pas très utile pour me montrer les relations entre elles.
Comment puis-je répertorier les branches d'une manière qui montre quelle branche locale suit quelle télécommande?
git remote show origin
Remplacez «origine» par le nom de votre télécommande.
la source
git remote show
commande se connecte réellement au référentiel distant ... et par conséquent, il échoue si vous êtes hors ligne ou incapable de vous connecter au référentiel pour une raison quelconque ...git remote show -n origin
pour obtenir des informations même hors ligne. Dans la documentation git remote : "Avec l'option -n, les têtes distantes ne sont pas interrogées en premier avec git ls-remote <nom>; les informations mises en cache sont utilisées à la place."git remote show | xargs git remote show -n
pour afficher les informations de suivi combinées pour toutes les télécommandes.Si vous consultez la page de manuel de
git-rev-parse
, vous verrez que la syntaxe suivante est décrite:Donc pour trouver l'amont de la branche
master
, vous feriez:Pour imprimer les informations de chaque branche, vous pouvez faire quelque chose comme:
C'est plus propre que d'analyser les références et de configurer manuellement.
la source
done < <(git for-each-ref --format='%(refname:short)' refs/heads/**)
Notez les deux astérisques à la fin du modèle glob.git rev-parse --abbrev-ref HEAD@{upstream}
semble bien fonctionner pour la branche actuelle. Cela fait également un joli alias git.while
syntaxe de boucle me semble un peu bizarre. Vous pouvez simplement utilisergit for-each-ref ... | while read branch; do ...
ce qui n'a pas besoin d'un FIFO et s'exécute dans le même ordre que les commandes écrites.git for-each-ref --format='%(refname:short) tracks %(upstream:short)' refs/heads/*
Une alternative à la réponse de kubi est de jeter un œil au
.git/config
fichier qui montre la configuration du référentiel local:cat .git/config
la source
git config --get-regex branch
affichera une ligne pour chaque branche locale. Une branche de suivi ressemblera à:
Un non-suivi ressemblera à:
la source
git branch -vv
. 🙏git config --global alias.track 'for-each-ref --format='\''%(refname:short) <- %(upstream:short)'\'' refs/heads'
Pour la branche actuelle , voici deux bons choix:
ou
Cette réponse se trouve également ici , à une question légèrement différente qui a été (à tort) marquée comme doublon.
la source
git for-each-ref --shell --format='%(refname:short) %(upstream:short)' refs/heads
.Pour la branche actuelle, vous pouvez également dire
git checkout
(sans aucune branche). Il s'agit d'un no-op avec des effets secondaires pour afficher les informations de suivi, si elles existent, pour la branche actuelle.la source
git checkout .
, ce qui n'est pas un no-op.J'utilise cet alias
puis
la source
D'après la réponse d'Olivier Refalo
Il affiche uniquement local avec piste configurée.
Écrivez-le sur un script appelé git-track sur votre chemin et vous obtiendrez une commande git track
Une version plus élaborée sur https://github.com/albfan/git-showupstream
la source
git config --get-regexp "branch\.$current_branch\.remote"
vous donnera le nom de la télécommande qui est suivie
git config --get-regexp "branch\.$current_branch\.merge"
vous donnera le nom de la branche distante qui est suivie.
Vous devrez remplacer $ current_branch par le nom de votre branche actuelle. Vous pouvez obtenir cela dynamiquement avec
git rev-parse --abbrev-ref HEAD
Le mini-script suivant combine ces choses. Collez-le dans un fichier nommé
git-tracking
, rendez-le exécutable et assurez-vous qu'il se trouve sur votre chemin.alors tu peux dire
notez que le nom de la branche distante peut être différent du nom de votre branche locale (bien qu'il ne le soit généralement pas). Par exemple:
comme vous pouvez le voir dans le code, la clé est d'extraire les données de la configuration git. J'utilise simplement sed pour effacer les données superflues.
la source
En voici une nette et simple. Peut vérifier
git remote -v
, qui vous montre toute l'origine et en amont de la branche actuelle.la source