web-dev-qa-db-fra.com

Comment vérifier les différences entre local et github avant le pull

Avant d’utiliser pull, je souhaite vérifier s’il existe des différences entre mon maître local et mon maître github.

Comment puis-je le faire?

101
shin

git pull Équivaut vraiment à exécuter git fetch Puis git merge. Le git fetch Met à jour vos soi-disant "branches de suivi à distance" - en général, celles-ci ressemblent à Origin/master, github/experiment, Etc. que vous voyez avec git branch -r. Celles-ci ressemblent à un cache de l'état des branches du référentiel distant qui sont mises à jour lorsque vous faites git fetch (Ou un succès git Push).

Supposons donc que vous avez une télécommande appelée Origin qui fait référence à votre référentiel GitHub, vous feriez:

git fetch Origin

... et ensuite:

git diff master Origin/master

... afin de voir la différence entre votre master et celui sur GitHub. Si ces différences vous conviennent, vous pouvez les fusionner avec git merge Origin/master, En supposant que master est votre branche actuelle.

Personnellement, je pense que faire séparément git fetch Et git merge Est généralement bonne idée .

210
Mark Longair

Si vous n'êtes pas intéressé par les détails que git diff _ sorties vous pouvez simplement lancer git cherry qui générera une liste des commits que votre branche de suivi à distance a 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 des commits locaux que vous n'avez pas encore insérés dans votre référentiel distant.

36
braitsch

Et une autre commande utile pour faire cela (après git fetch) est:

git log Origin/master ^master

Cela montre les commits qui sont dans Origin/master mais pas dans master. Vous pouvez aussi le faire en sens inverse lorsque vous faites git pull, pour vérifier ce que les commits seront soumis à remote.

9
peter pan gz