Avant d'utiliser pull, je veux vérifier s'il y a des différences entre ma version locale et GitHub master.
Comment puis-je le faire?
Avant d'utiliser pull, je veux vérifier s'il y a des différences entre ma version locale et GitHub master.
Comment puis-je le faire?
git pull
est vraiment équivalent à exécuter git fetch
puis git merge
. Le git fetch
met à jour vos "branches de suivi à distance" - généralement celles qui ressemblent à origin/master
, github/experiment
, etc. que vous voyez avec git branch -r
. Ce sont comme un cache de l'état des branches dans le dépôt distant qui sont mises à jour lorsque vous faites git fetch
(ou un git push
réussi).
Donc, supposez que vous ayez un distant appelé origin
qui se réfère à votre dépôt GitHub, vous feriez :
git fetch origin
... et ensuite faites :
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.
Si vous avez configuré le suivi à distance, alors les commandes deviennent un peu plus simples : 'git fetch' pour récupérer, 'git diff ..@{u}' pour voir les différences. Je ne peux jamais garder droit origin, master et origin/master, donc les commandes courtes aident beaucoup
J'ai essayé ta méthode, et je n'ai obtenu aucune sortie de git diff master origin/master
et son contraire, mais git status
me dit Votre branche est en avance de 'origin/master' de 4 commits.
Que se passe-t-il?
Si vous n'êtes pas intéressé par les détails que git diff
produit, vous pouvez simplement exécuter git cherry
qui affichera une liste des commits de votre branche de suivi à distance qui sont en avance par rapport à votre branche locale.
Par exemple :
git fetch origin
git cherry master origin/master
affichera quelque chose comme :
+ 2642039b1a4c4d4345a0d02f79ccc3690e19d9b1
+ a4870f9fbde61d2d657e97b72b61f46d1fd265a9
Cela 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 également dans l'autre sens :
git cherry origin/master master
Il vous montrera une liste de commits locaux que vous n'avez pas encore poussés vers votre dépôt distant.
Merci, c'est exactement ce dont j'avais besoin. Juste pour être clair à ce sujet : Si le résultat de git cherry est vide, alors il n'y a rien à choisir et mon dépôt local est à jour, n'est-ce pas ?
Vous pouvez également utiliser l'option verbose -v
, pour afficher les messages des commits. Par exemple : git cherry -v origin/master master
affichera : + 2642039b1a4c4d4345a0d02f79ccc3690e19d9b1 Fixed bug
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 également le faire dans le sens inverse lors de l'exécution de git pull
pour vérifier quels commits seront soumis au remote.
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.