158 votes

Comment puis-je voir les commits entrants dans git ?

Duplicata possible :
Avec Git, comment trouver les fichiers modifiés entre le local et le distant ?

Comment puis-je voir les commits entrants dans git ? Ou encore mieux, voir ce que je viens de git fetch / git pull ed ?

Editar: Pour clarifier la question : quelqu'un me dit que, pour obtenir certains correctifs, je devrais tirer de leur dépôt. Mon but est de voir quels sont les changements antes de Je les accepte. git pull fusionne automatiquement, ce qui n'est pas ce que je veux. git fetch va les saisir sans fusionner, mais je ne sais pas comment visualiser ce que je viens de saisir exactement. La raison de la formulation originale est que j'utilise normalement Mercurial, où la commande serait la suivante hg incoming <repo name here> -une commande pour laquelle git semble manquer d'analogie.

183voto

Dustin Points 35205

incoming n'est pas tout à fait une correspondance directe dans git parce que vous pouvez (et je le fais souvent) avoir plusieurs dépôts d'où vous tirez, et chaque dépôt a plusieurs branches.

S'il y avait un équivalent de la commande incoming de hg, ce serait probablement ceci :

git fetch && git log ..origin/master

C'est-à-dire, "aller chercher tous les éléments de l'amont, et ensuite comparer ma branche actuelle avec la branche maîtresse de l'amont".

De la même façon, le sortant serait ceci :

git fetch && git log origin/master..

En pratique, je me contente de les taper manuellement (même si j'ai créé un alias pour l'un d'entre eux) parce qu'il est facile d'avoir beaucoup de branches locales qui suivent et sont suivies par beaucoup de branches distantes sans avoir de problème pour garder l'ensemble.

87voto

Greg Hewgill Points 356191

Vous pouvez également être intéressé par git whatchanged qui donne une bonne vue d'ensemble des changements qui ont été faits dans une série de commits.

Si vous voulez revoir ce que vous êtes sur le point de tirer, faites une git fetch d'abord, ce qui ne met à jour que les branches de suivi locales pour le référentiel distant (et non pas l'une ou l'autre de ces branches). su ), puis utilisez une commande qui vous montre les nouveaux commits que vous êtes sur le point de tirer. Par exemple :

git whatchanged ..origin

C'est un raccourci pour montrer les commits entre "l'ancêtre commun de l'endroit où je suis maintenant et l'origine" et "l'origine".

14voto

Netzpirat Points 4248

Vous pouvez examiner la différence entre deux référentiels. En supposant que vous avez une branche locale 'master' et une branche de suivi à distance 'origin/master', où d'autres personnes commettent leur code, vous pouvez obtenir différentes statistiques sur les différences entre les deux branches :

git diff --summary master origin/master

git diff --stat master origin/master

git diff --numstat master origin/master

git diff --dirstat master origin/master

git diff --shortstat master origin/master

git diff --name-only master origin/master

git diff master origin/master

6voto

Sitaram Points 21

Lorsque quelqu'un vous dit de tirer, il vous donne l'URL du dépôt et une branche (par défaut, il s'agit de master ).

Je ferais juste

git fetch URL branch

suivi d'un (par ordre décroissant de préférence) :

# note 3 dots in next 3 commands
gitk HEAD...FETCH_HEAD
    # shows all commits on both sides since the "fork" point
gitk --cherry-pick HEAD...FETCH_HEAD
    # as above but skips identical patches so you really see the differences
git log --graph --boundary --left-right --cherry-pick --decorate HEAD...FETCH_HEAD
    # I have a nice alias for this; it's the text mode eqvt of the above

J'utilise aussi " tig "parfois, mais ce cas d'utilisation spécifique (voir les deux côtés) n'est pas bien servi par tig .

Cependant, si vous le ramenez à deux points (ce qui correspond mieux à votre question, même si je préfère toujours les versions à trois points), vous pouvez procéder comme suit

tig HEAD..FETCH_HEAD

Voici les alias pour plus de commodité :

incoming = !sh -c 'git fetch && git log --graph --boundary --left-right --cherry-pick --decorate HEAD..FETCH_HEAD'
outgoing = !sh -c 'git fetch && git log --graph --boundary --left-right --cherry-pick --decorate FETCH_HEAD..HEAD'

1voto

Joseph Silvashy Points 14960

Il n'y a pas de "commits entrants", les utilisateurs commettent localement et les poussent. J'ouvrirais gitx ou gitk (qui est fourni avec git) et vérifierais à quoi ressemble le dépôt... Je pense que cela vous donnera une vision claire.

utiliser : gitk --all à voir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X