Comment puis-je afficher les validations locales que j'ai effectuées et qui n'ont pas encore été transférées vers le référentiel distant? Occasionnellement, git status
imprimera que ma branche est X s'engage avant origin/master
, mais pas toujours.
Est-ce un bug avec mon installation de Git, ou est-ce que je manque quelque chose?
git log @{push}..
. Voir ce nouveau raccourci@{push}
(référençant la branche de suivi à distance vers laquelle vousgit status --all
aurait dû apparaître en 2010; ougit status -v
devrait en fait fournir la sortie détaillée qui inclut les informations supplémentaires.Réponses:
Vous pouvez également afficher le diff en utilisant la même syntaxe
la source
git config --global alias.ahead "log origin/master..HEAD --oneline"
pour pouvoir rapidement trouver où je suis. Encore plus de bonbons:for i in *; do echo $i && git ahead 2>/dev/null; done
git log --stat origin/master..HEAD
pour un peu de génialité supplémentaire@{u}
syntaxe n'était pas encore disponible, elle n'est devenue disponible que le 12 février 2010 . De plus,@{u}
ne fonctionnera pas si la branche locale n'est pas configurée avec un amont. Enfin, la@{u}
prise en charge<remote>/<branch>
de la tabulation n'est pas actuellement prise en charge, la complétion de la tabulation reste l'un des moyens les plus rapides d'obtenir ces informations, et cela fonctionnera si un amont est configuré ou non.Si vous voulez voir tous les commits sur toutes les branches qui ne sont pas encore poussées, vous cherchez peut-être quelque chose comme ceci:
Et si vous voulez seulement voir le commit le plus récent sur chaque branche, et les noms de branche, ceci:
la source
git log master..HEAD
ne fonctionnerait pas car il y avait plusieurs amonts. Ce post m'a amenégit log MyBranch --not --remotes
à montrer tous les commits qui n'ont été poussés vers aucun amont en une seule branche.--decorate
montre également les branches.--graph
le rend encore plus évident.Vous pouvez afficher tous les commits que vous avez localement mais pas en amont avec
@{u}
ou@{upstream}
désigne la branche amont de la branche actuelle (voirgit rev-parse --help
ougit help revisions
pour plus de détails).la source
git log @{u}.. -p
Une des options les plus utiles est -p , qui montre les différences introduites dans chaque confirmation.Cela a fonctionné pour moi:
Comme indiqué chez Git: Voir tous les commits non poussés ou les commits qui ne sont pas dans une autre branche .
la source
Vous pouvez le faire avec
git log
:En supposant que
origin
c'est le nom de votre amont, en laissant tout nom de révision après..
impliqueHEAD
, qui répertorie les nouveaux commits qui n'ont pas été poussés.la source
git log
et "2 points pas 3", cela me rappelle toujours stackoverflow.com/questions/53569/… ;)git branch --set-upstream master origin/<branch>
configuration en amont si vous êtes enclin à utiliser cette commande pour voir les validations qui sont organisées.Toutes les autres réponses parlent de "amont" (la branche d'où vous tirez).
Mais une branche locale peut pousser vers une autre branche que celle dont elle tire.
master
peut ne pas pousser vers la branche de suivi à distance "origin/master
".La branche amont pour
master
pourrait êtreorigin/master
, mais elle pourrait pousser vers la branche de suivi à distanceorigin/xxx
ou mêmeanotherUpstreamRepo/yyy
.Celles-ci sont définies par
branch.*.pushremote
pour la branche actuelle avec laglobal remote.pushDefault
valeur.C'est cette branche de suivi à distance qui compte lors de la recherche de commits non poussés: celle qui suit
branch at the remote
où la branche locale serait poussée.Le
branch at the remote
peut être, encoreorigin/xxx
ou mêmeanotherUpstreamRepo/yyy
.Git 2.5+ (Q2 2015) introduit un nouveau raccourci pour cela:
<branch>@{push}
Voir commit 29bc885 , commit 3dbe9db , commit adfe5d0 , commit 48c5847 , commit a1ad0eb , commit e291c75 , commit 979cb24 , engager 1ca41a1 , engager 3a429d0 , engager a9f9f8c , engager 8770e6f , engager da66b27 , engager f052154 , engager 9e3751d , engager ee2499f [tous du 21 mai 2015], et commit e41bf35 [01 mai 2015] par Jeff King (
peff
) .(Fusionné par Junio C Hamano -
gitster
-dans commit c4a8354 , 05 juin 2015)Commit adfe5d0 explique:
Le commit 29bc885 ajoute:
Si vous voulez voir combien de commit vos succursales locales sont avance / en retard par rapport à la branche vers laquelle vous appuyez:
la source
Alias git pratique pour rechercher des validations non poussées dans la branche actuelle :
Ce que cela fait essentiellement:
mais détermine également le nom de la branche actuelle.
la source
git alias <alias-name> <command>
dans ce cas, la commande doit être entourée de guillemets simples, pour échapper les caractères spéciaux du shell.git config --global alias.unpushed '!GIT_CURRENT_BRANCH=$(git name-rev --name-only HEAD) && git log origin/$GIT_CURRENT_BRANCH..$GIT_CURRENT_BRANCH --oneline'
Tu pourrais essayer....
Je sais que ce n'est pas une option de ligne de commande pure, mais si vous l'avez installé et que vous êtes sur un système GUI, c'est un excellent moyen de voir exactement ce que vous recherchez et bien plus encore.
(Je suis en fait assez surpris que personne ne l'ait mentionné jusqu'à présent.)
la source
gitk --all
pour voir toutes les branches.tig
est l'alternative ncurses.gitk
est génial! Je n'ai jamais su que cela existe! Pratique pour parcourir les changements dans une belle interface utilisateur.tig
est plus utile dans une situation de «terminal uniquement» - où vous n'avez pas accès à l'interface graphique du bureau. Je l'apprends pour la première fois! INTÉRESSANT:tig
c'est INVERSE degit
!git branch -v
affichera, pour chaque branche locale, si elle est "en avance" ou non.la source
devel
, la ligne correspondante sera* devel 8a12fc0 [ahead 1] commit msg
(*
sera uniquement sur la ligne correspondant à la branche extraite ).ahead 1
signifie "avance d'un commit", c'est-à-dire qu'il y a un commit non poussé.git branch -vv
? Cf. docs: "Si donné deux fois, imprimez également le nom de la branche en amont (voir aussi git remote show <remote>)."behind
et / ouahead
pour chaque branche locale, ce qui est suffisant pour résoudre le problème d'OP (détecter les validations non poussées).git branch -v
est suffisant pour cela, juste testé à nouveau avec Git 2.16.2 :)J'avais fait un commit précédemment, pas poussé vers une branche, ni distant ni local. Juste le commit. Rien des autres réponses n'a fonctionné pour moi, mais avec:
Là, j'ai trouvé mon engagement.
la source
J'utilise l'alias suivant pour obtenir uniquement la liste des fichiers (et le statut) qui ont été validés mais qui n'ont pas été poussés (pour la branche actuelle)
alors faites juste:
la source
Je pense que la façon la plus courante de procéder consiste à exécuter quelque chose comme:
Cependant, je préfère personnellement exécuter:
qui montre les validations de toutes les branches qui ne sont pas fusionnées en amont, plus la dernière validation en amont (qui apparaît comme un nœud racine pour toutes les autres validations). Je l'utilise si souvent que je lui ai créé un alias
noup
.la source
Je vous suggère d'aller voir le script https://github.com/badele/gitcheck , j'ai codé ce script pour vérifier en un seul passage tous vos dépôts git, et il montre qui n'a pas commis et qui n'a pas poussé / tiré.
Voici un exemple de résultat
la source
Cela répertoriera votre historique de commentaires local (pas encore poussé) avec le message correspondant
la source
Ce n'est pas un bug. Ce que vous voyez probablement, c'est l'état git après une fusion automatique échouée où les modifications de la télécommande sont récupérées mais pas encore fusionnées.
Pour voir les validations entre le dépôt local et distant, procédez comme suit:
Ceci est 100% sûr et ne simulera pas votre copie de travail. S'il y avait des changements, cela se
git status
verraitX commits ahead of origin/master
.Vous pouvez maintenant afficher le journal des validations qui sont dans le distant mais pas dans le local:
la source
Cela a mieux fonctionné pour moi:
ou:
la source
@{upstream}
est littéral (upstream
est un mot magique), tandis queremotebranch
n'est que le nom de votre branche.Il existe un outil nommé non poussé qui analyse tous les dépôts Git, Mercurial et Subversion dans le répertoire de travail spécifié et affiche la liste des fichiers non validés et des validations non poussées. L'installation est simple sous Linux:
ou
pour installer à l'échelle du système.
L'utilisation est également simple:
Voir
unpushed --help
ou description officielle pour plus d'informations. Il dispose également d'un script cronjobunpushed-notify
pour la notification à l'écran des modifications non validées et non poussées.la source
Pour répertorier facilement toutes les validations non poussées dans toutes les branches, vous pouvez utiliser cette commande:
la source
Similaire: pour afficher les branches non fusionnées:
Ceux-ci peuvent être suspects mais je recommande la réponse de cxreg
la source
Si le nombre de validations qui n'ont pas été repoussées est un nombre à un chiffre, ce qui est souvent le cas, la manière la plus simple est:
git répond en vous disant que vous êtes "en avance N s'engage" par rapport à votre origine. Alors maintenant, gardez ce chiffre à l'esprit lorsque vous consultez les journaux. Si vous êtes "en avance de 3 commits", les 3 premiers commits de l'histoire sont toujours privés.
la source
une façon de procéder consiste à répertorier les validations disponibles sur une branche mais pas sur une autre.
la source
Comme dit ci-dessus:
git diff origine / master..HEAD
Mais si vous utilisez git gui
Après avoir ouvert l'interface graphique, sélectionnez "Référentiel" -> Sous " Visualiser l'historique "
Remarque: Certaines personnes aiment utiliser l'invite / le terminal CMD tandis que d'autres aiment utiliser l'interface graphique Git (pour plus de simplicité)
la source
Voici ma solution portable (script shell qui fonctionne aussi sur Windows sans installation supplémentaire) qui montre les différences d'origine pour toutes les branches: git-fetch-log
Un exemple de sortie:
Les paramètres passés pour log, par exemple
--oneline
ou--patch
peuvent être utilisés.la source
affichera toutes les différences dans vos commits locaux.
affichera l'ID de validation local et le nom de la validation.
la source
git show
ne montre que le commit le plus récent, qu'il ait été poussé vers la télécommande ou non, il ne vous montrera pas tous vos commits non poussés.En supposant que votre branche est configurée pour suivre l'origine, cela devrait vous montrer les différences.
Vous donnera un résumé des commits.
la source
git log origin
vous montrera les validations qui ont déjà été poussées , mais il ne montrera pas les validations qui n'ont pas été poussées , ce qui correspond davantage à ce que l'affiche originale demandait.