278 votes

Comment vérifier les changements sur un dépôt Git distant (origine) ?

Quelles sont les commandes Git pour réaliser le flux de travail suivant ?

Scénario

J'ai cloné à partir d'un dépôt et j'ai fait quelques modifications de mon propre chef dans mon dépôt local. Pendant ce temps, mes collègues ont fait des commits sur le dépôt distant. Maintenant, je veux :

  1. Vérifiez s'il y a de nouveaux commits d'autres personnes sur le dépôt distant, c'est-à-dire origin ?

  2. Disons qu'il y a eu trois nouveaux commits sur le dépôt distant depuis mon dernier pull, je voudrais différencier les les commits du dépôt distant, c'est-à-dire HEAD~3 con HEAD~2 , HEAD~2 avec HEAD~1 y HEAD~1 con HEAD .

  3. Après avoir su ce qui a changé à distance, je veux obtenir les derniers commits des autres.

Mes conclusions jusqu'à présent

Pour l'étape 2 : je connais la notation caret. HEAD^ , HEAD^^ etc. et la notation tilde HEAD~2 , HEAD~3 etc.

Pour l'étape 3 : C'est, je suppose, juste un git pull .

3 votes

0 votes

@Daniele la réponse que vous mettez en lien est superbe et s'accompagne même d'un bash script personnalisable. +1

11voto

Lernkurve Points 3375

Une solution potentielle

Merci à La solution d'Alan Haggai Alavi J'ai trouvé le flux de travail potentiel suivant :

Étape 1 :

git fetch origin

Étape 2 :

git checkout -b localTempOfOriginMaster origin/master
git difftool HEAD~3 HEAD~2
git difftool HEAD~2 HEAD~1
git difftool HEAD~1 HEAD~0

Étape 3 :

git checkout master
git branch -D localTempOfOriginMaster
git merge origin/master

14 votes

Pourquoi avoir besoin de créer une branche temporaire pour faire des différences entre les révisions de la version distante ? git diff origing/master^ origing/master^^

0 votes

@PabloMarin-Garcia : Merci. Je ne le savais pas à l'époque.

0 votes

@Pablo Marin-Garcia : Non, git diff origin/master^ origin/master^^

4voto

jackal Points 542

git status ne montre pas toujours la différence entre master et origin/master, même après un fetch.

Si vous voulez la combinaison git fetch origin && git status pour fonctionner, vous devez spécifier les informations de suivi entre la branche locale et l'origine :

# git branch --set-upstream-to=origin/<branch> <branch>

Pour le maître branche :

git branch --set-upstream-to=origin/master master

0voto

raphael Points 726

J'utilise simplement

git fetch origin

pour récupérer les modifications à distance, puis je visualise les modifications locales et les modifications à distance en attente (et les modifications qui leur sont associées) grâce à la jolie fonction outil gitk impliquant le --all argument comme :

gitk --all

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