Comment vérifier les différences entre local et github avant la traction [dupliquer]

cette question a déjà une réponse ici:

avant d'utiliser pull, je veux vérifier s'il y a des différences entre mon local et GitHub master.

Comment puis-je le faire?

81
demandé sur GEOCHET 2011-05-14 13:20:59
la source

3 ответов

git pull est vraiment équivalent à git fetch et puis git merge . Le git fetch met à jour vos soi-disant "branches de suivi à distance"-généralement celles qui ressemblent à origin/master , github/experiment , etc. que vous voyez avec git branch -r . Ceux-ci sont comme un cache de l'état des branches dans le dépôt distant qui sont mis à jour lorsque vous faites git fetch (ou un succès git push ).

donc, supposons que vous ayez une télécommande appelée origin qui se réfère à votre dépôt GitHub, vous feriez:

git fetch origin

... et puis faire:

git diff master origin/master

... pour voir la différence entre votre master , et celui sur GitHub. Si vous êtes satisfait de ces différences, vous pouvez les fusionner avec git merge origin/master , en supposant que master est votre branche actuelle.

personnellement, je pense que faire git fetch et git merge séparément est généralement une bonne idée .

177
répondu Mark Longair 2011-05-14 14:12:34
la source

si vous n'êtes pas intéressé par les détails des sorties git diff , vous pouvez simplement lancer git cherry qui affichera une liste des propagations de votre branche de suivi à distance avant votre branche locale.

par exemple:

git fetch origin
git cherry master origin/master

produira quelque chose comme:

+ 2642039b1a4c4d4345a0d02f79ccc3690e19d9b1
+ a4870f9fbde61d2d657e97b72b61f46d1fd265a9

indique qu'il y a deux commits dans ma branche de suivi à distance qui n'ont pas été fusionnés dans ma branche locale.

cela fonctionne aussi dans l'autre sens:

    git cherry origin/master master

vous montrera une liste de propagations locales que vous n'avez pas encore poussée vers votre dépôt distant.

32
répondu braitsch 2011-10-29 23:26:55
la source

et une autre commande utile pour faire ceci (après git fetch) est:

git log origin/master ^master

ceci montre les commits qui sont en Origine/maître mais pas en maître. Vous pouvez également le faire en vis-à-vis lorsque vous faites git pull, pour vérifier ce que commits sera soumis à remote.

5
répondu peter pan gz 2013-09-26 06:12:29
la source

Autres questions sur