Voir aussi:
Comment puis-je voir quelles branches Git suivent quelle branche distante / en amont?
Comment savoir quelle succursale distante une succursale locale suit?
Dois-je analyser la git config
sortie ou existe-t-il une commande qui ferait cela pour moi?
git
branch
git-remote
Lecture seulement
la source
la source
git remote show origin
. La réponse principale dans l'autre question est un script bash enroulé autour de la réponse simple ici, qui pourrait être utile à certains. Espérons que cette question ne sera pas complètement close.Réponses:
Voici une commande qui vous donne toutes les branches de suivi (configurées pour 'pull'), voir:
Vous devez parcourir le SHA et tous les messages de validation à longue enveloppe, mais il est rapide à taper et j'aligne les branches de suivi verticalement dans la 3e colonne.
Si vous avez besoin d'informations sur la configuration «pull» et «push» par branche, consultez l'autre réponse sur
git remote show origin
.Mise à jour
À partir de git version 1.8.5, vous pouvez afficher la branche amont avec
git status
etgit status -sb
la source
git branch -av
ougit remote show origin
, ce qui vous donne BEAUCOUP de données, pas seulement la télécommande suiviegit status
etgit status -sb
- donc une fois que vous avez mis à niveau vers 1.8.5.x, cette question (et réponse) n'a plus d'importance.Deux choix:
ou
la source
%(refname:short)
est le nom de la référence actuelle à l'intérieur--format
.git help revisions
(l'une des parties les moins connues mais les plus utiles de la documentation) et recherchezupstream
.git diff `git rev-parse --abbrev-ref --symbolic-full-name @{upstream}`
echo 'git for-each-ref --format=\'%(refname:short) -> %(upstream:short)\' refs/heads/$1' > ~/bin/git-show-upstream; chmod +x ~/bin/git-show-upstream
git for-each-ref --format='%(upstream:short)' $(git rev-parse --symbolic-full-name SOMEBRANCH)
remplacer SOMEBRANCH par le nom de la branche, ou "HEAD" pour la branche actuelleJe pense
git branch -av
que vous indique uniquement les branches que vous avez et à quel engagement elles se trouvent, vous permettant de déduire quelles branches distantes les branches locales suivent.git remote show origin
vous indique explicitement quelles branches suivent quelles branches distantes. Voici un exemple de sortie d'un référentiel avec un seul commit et une branche distante appeléeabranch
:contre
la source
git remote show origin
vous montre les branches locales et ce qu'elles suivent à la fois pour pousser et tirer.origin
, alors qu'elle pourrait être n'importe quoi (par exemple, plusieurs télécommandes, avec différentes branches suivant les branches de différentes télécommandes).Mise à jour: Eh bien, cela fait plusieurs années que j'ai posté ça! Pour mon objectif spécifique de comparer HEAD à amont, j'utilise maintenant
@{u}
, qui est un raccourci qui fait référence à HEAD de la branche de suivi en amont. (Voir https://git-scm.com/docs/gitrevisions#gitrevisions-emltbranchnamegtupstreamemegemmasterupstreamememuem ).Réponse originale: J'ai également rencontré ce problème. J'utilise souvent plusieurs télécommandes dans un même référentiel, et il est facile d'oublier celui contre lequel votre branche actuelle effectue le suivi. Et parfois, il est utile de le savoir, par exemple lorsque vous souhaitez consulter vos commits locaux via
git log remotename/branchname..HEAD
.Tout cela est stocké dans des variables de configuration git, mais vous n'avez pas besoin d'analyser la sortie de configuration git. Si vous appelez git config suivi du nom d'une variable, il affichera simplement la valeur de cette variable, aucune analyse requise. Dans cet esprit, voici quelques commandes pour obtenir des informations sur la configuration du suivi de votre branche actuelle:
Dans mon cas, comme je ne suis intéressé que par le nom de ma télécommande actuelle, je fais ceci:
la source
git name-rev --name-only HEAD
ne vous dirait pas sur quelle branche vous vous trouvez. Pour cela, je viens d'utilisergit branch | grep '^\*' | cut -d' ' -f2
@{u}
alias / raccourci et c'est exactement ce que je cherchais! Aucune raison de comparer avec la branche principale si vous voulez seulement déterminer si vous devez tirer ou non.@{u}
est la bombe. Et existe depuis la 1.7.0, ce qui signifie que s'il n'est pas disponible dans un git que quelqu'un utilise en 2018, ils sont probablement dus à une mise à niveau.Les succursales locales et leurs télécommandes.
Toutes les branches et télécommandes de suivi.
Voyez où les branches locales sont explicitement configurées pour push et pull.
la source
Cela vous montrera la branche sur laquelle vous vous trouvez:
Cela ne montrera que la branche actuelle sur laquelle vous vous trouvez:
par exemple:
Vous pouvez trouver l'URL de la télécommande utilisée par la branche actuelle avec laquelle vous vous trouvez:
par exemple:
la source
Vous pouvez utiliser
git checkout
, c'est-à-dire "vérifier la branche actuelle". 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
Je ne sais pas si cela compte pour analyser la sortie de git config, mais cela déterminera l'URL de la télécommande que le maître suit:
la source
git config branch.$(git symbolic-ref -q HEAD).remote
si vous voulez simplement le nom de la télécommande en cours de suivi de la branche actuelle -git config remote.$(git config branch.$(git symbolic-ref -q HEAD).remote).url
pour l'URL.--short
option pour que cela fonctionne. Donc, pour obtenir le nom distant de la branche actuelle:git config branch.$(git symbolic-ref -q --short HEAD).remote
et pour obtenir l'URL de la télécommande de la branche actuelle:git config remote.$(git config branch.$(git symbolic-ref -q --short HEAD).remote).url
Encore une autre façon
Cela vous donnera
la source
Un autre moyen simple consiste à utiliser
cat .git/config
dans un git repoCette liste répertorie les détails des succursales locales
la source
type .git/config
au lieu decat .git/config
bien sûr sur la ligne de commande ordinaire ..Une autre méthode (merci osse), si vous voulez juste savoir si elle existe ou non:
la source
git branch -vv | grep 'BRANCH_NAME'
git branch -vv
: Cette partie montrera toutes les branches locales ainsi que leur branche en amont.grep 'BRANCH_NAME'
: Il filtrera la branche actuelle de la liste des branches.la source
répertorie toutes les branches, y compris à distance.
la source
Répertorie les succursales locales et distantes:
Production:
la source
La sortie de la porcelaine git-status (lisible par machine) ressemble à ceci:
Et pour obtenir la branche en amont uniquement:
Si la branche n'a pas en amont, la commande ci-dessus produira une sortie vide (ou échouera avec
set -o pipefail
).la source
Si vous souhaitez trouver l'amont pour n'importe quelle branche (par opposition à celle que vous utilisez), voici une légère modification de la réponse de @ cdunn2001:
git rev-parse --abbrev-ref --symbolic-full-name YOUR_LOCAL_BRANCH_NAME@{upstream}
Cela vous donnera le nom de la branche distante de la branche locale nommée
YOUR_LOCAL_BRANCH_NAME
.la source
Vous pouvez essayer ceci:
branch_name
doit être remplacé par votre succursalela source
git remote show origin
- s'il est appelémerges
ouconfigure
?J'utilise cet alias
puis
notez que le script peut également être utilisé pour configurer le suivi.
Plus d'alias géniaux sur https://github.com/orefalo/bash-profiles
la source
J'utilise EasyGit (aka "eg") comme un emballage super léger sur (ou le long de) Git. EasyGit a une sous-commande "info" qui vous donne toutes sortes d'informations super utiles, y compris la branche de suivi à distance des branches actuelles. Voici un exemple (où le nom de la branche actuelle est "foo"):
la source
En améliorant cette réponse , j'ai trouvé ces
.gitconfig
alias:la source
Si vous utilisez Gradle,
la source
La commande suivante fera référence à la fourchette actuelle d'origine distante
Pour ajouter un chemin distant,
la source