Avant d'utiliser pull, je veux vérifier s'il y a des différences entre mon maître local et github.Comment vérifier les différences entre local et github avant le pull
Comment puis-je le faire?
Merci d'avance.
Avant d'utiliser pull, je veux vérifier s'il y a des différences entre mon maître local et github.Comment vérifier les différences entre local et github avant le pull
Comment puis-je le faire?
Merci d'avance.
git pull
est vraiment équivalent à exécuter git fetch
puis git merge
. Le git fetch
met à jour vos soi-disant "branches de suivi à distance" - typiquement ce sont ceux 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 référentiel distant qui sont mises à jour lorsque vous faites git fetch
(ou un succès git push
).
Ainsi, supposons que vous avez un appelé à distance origin
qui fait référence à votre dépôt GitHub, vous feriez:
git fetch origin
... puis faites:
git diff master origin/master
... afin de 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 a good idea.
Si vous n'êtes pas intéressé par les détails que les sorties git diff
vous pouvez simplement exécuter git cherry
qui produira une liste de validations votre branche de suivi à distance a devant votre branche locale.
Par exemple:
git fetch origin
git cherry master origin/master
Affichera quelque chose comme:
+ 2642039b1a4c4d4345a0d02f79ccc3690e19d9b1
+ a4870f9fbde61d2d657e97b72b61f46d1fd265a9
Indique qu'il ya deux commits dans ma branche de suivi à distance qui n'a pas été intégré 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 ne l'avez pas encore transféré à votre dépôt distant.
Merci, juste ce dont j'avais besoin. Juste pour être clair sur ce point: Si le résultat git cherry est vide, il n'y a rien pour la cueillette des cerises et mon rapport local est à jour, n'est-ce pas? – eyecatchUp
Oui, c'est correct. – braitsch
Vous pouvez également utiliser l'option verbeuse '-v' pour afficher les messages de validation. Par exemple: 'git cherry -v origin/master master' affichera:' + 2642039b1a4c4d4345a0d02f79ccc3690e19d9b1 Correction d'un bug' – Yoluk
Et une autre commande utile pour ce faire (après git fetch) est la suivante:
git log origin/master ^master
Cela montre les commits qui sont à l'origine/maître, mais pas en maître. Vous pouvez également le faire en face de git pull, pour vérifier quels commits seront envoyés à distance.
Merci pour la bonne explication. –
si vous avez configuré le suivi à distance alors les commandes deviennent un peu plus simples: 'git fetch' pour aller chercher, 'git diff .. @ {u}' pour voir les différences.Je ne peux jamais garder l'origine, le master, et l'origine/master droit, donc les commandes courtes aident beaucoup – ChrisBob
Je vous ai essayé la méthode, et n'a obtenu aucune sortie de 'git diff master origin/master' et son contraire, mais' git status' dit moi 'Votre branche est en avance sur 'origin/master' par 4 commits. Que se passe-t-il? – Jason