J'ai créé une branche pour les tests dans mon repo ( test-branch
) local vers lequel j'ai poussé Github
.
Si je vais sur mon Github
compte et le sélectionne, test-branch
il affiche les informations:
This branch is 1 commit ahead and 2 commits behind master
Mes questions sont:
- Comment puis-je afficher ces informations localement (c'est-à-dire: une commande qui les affiche sur le terminal, plutôt que d'avoir à les ouvrir
Github
pour les voir)? Je sais que je peux voir les différences entre les branches en utilisant:
git diff master..test-branch
ou en utilisant
Meld
(que je préfère):git difftool master..test-branch
mais je me demandais s'il y avait un moyen de voir les engagements avant et arrière séparément. IE: existe-t-il un moyen de montrer que 1 s'engage à l'avance par lui-même, puis que ces 2 s'engagent derrière eux-mêmes?
git for-each-ref --format="%(push:track)" refs/heads
. Voir ma réponse ciRéponses:
Voici une astuce que j'ai trouvée pour comparer deux branches et montrer combien de validations chaque branche est en avance sur l'autre (une réponse plus générale à votre question 1):
Pour les succursales locales :
git rev-list --left-right --count master...test-branch
Pour les succursales éloignées :
git rev-list --left-right --count origin/master...origin/test-branch
Cela donne une sortie comme celle-ci:
1 7
Cette sortie signifie: "Par rapport à
master
,test-branch
est 7 commits en avance et 1 commit en arrière."Vous pouvez également comparer les succursales locales avec les succursales distantes, par exemple
origin/master...master
pour savoir combien de validations lamaster
succursale locale est devant / derrière sa contrepartie distante.la source
git rev-list --left-right --count origin/master...@
) - à condition que l'utilisateur le fassegit fetch
avant; utile pour empêcher les demandes d'extraction de branches obsolètes.git rev-list --left-right --count origin/master...@ | cut -f1
--left-only
ou--right-only
Tout d'abord pour voir combien de révisions vous êtes en retard localement, vous devriez faire un
git fetch
pour vous assurer que vous avez les dernières informations de votre télécommande.La sortie par défaut de
git status
vous indique combien de révisions vous êtes en avance ou en retard, mais généralement je trouve cela trop détaillé:Je préfère
git status -sb
:En fait, je l'alias simplement
git s
, et c'est la commande principale que j'utilise pour vérifier l'état.Pour voir la différence dans les "révisions à venir" de
master
, je peux exclure les "révisions à venir " deorigin/master
:Pour voir la différence dans les "révisions" de
origin/master
, je peux exclure les "révisions" demaster
:S'il y a 5 révisions devant ou derrière, il pourrait être plus facile d'écrire comme ceci:
METTRE À JOUR
Pour voir les révisions avant / arrière, la branche doit être configurée pour suivre une autre branche. Pour moi, c'est le comportement par défaut lorsque je clone un référentiel distant et après avoir poussé une branche avec
git push -u remotename branchname
. Ma version est la 1.8.4.3, mais ça fonctionne comme ça depuis aussi longtemps que je me souvienne.Depuis la version 1.8, vous pouvez définir la branche de suivi comme ceci:
Depuis la version 1.7, la syntaxe était différente:
la source
git
utilisez-vous? Je ne peux pas reproduire ce que vous obtenez avec ougit status
avecgit status -sb
. Si j'essaie l'une ou l'autre des commandes (après l'avoir faitgit fetch
), je n'obtiens aucune information sur les validations avant / arrière.master
etorigin/master
je veux voir les diffs pourmaster
et une autre branchetest-branch
. Pourriez-vous reformater votre réponse pour résoudre ce problème?Avec Git 2.5+, vous avez maintenant une autre option pour voir en avant / en arrière pour toutes les branches qui sont configurées pour pousser vers une branche.
En savoir plus sur " Affichage des validations Git non poussées "
la source
refs/heads
avec le nom de la branche actuelle ( stackoverflow.com/a/12142066/6309 ):refs/heads/$(git rev-parse --abbrev-ref HEAD)
Vous pouvez également utiliser
awk
pour le rendre un peu plus joli:Vous pouvez même créer un alias qui récupère toujours l'origine en premier, puis compare les branches
la source
Après avoir effectué une extraction git, vous pouvez exécuter l'état git pour afficher le nombre de validations de la branche locale devant ou derrière la version distante de la branche.
Cela ne vous montrera cependant pas combien de validations il est devant ou derrière une branche différente. Vos options sont le diff complet, en regardant github, ou en utilisant une solution comme Vimhsa liée ci-dessus: Statut Git sur tous les repo
la source