Comment vérifier les modifications sur le repository Git distant (d’origine)?

Question

Quelles sont les commandes Git pour effectuer le workflow suivant?

Scénario

J’ai cloné à partir d’un référentiel et j’ai fait quelques commits sur mon référentiel local. En attendant, mes collègues ont fait des commits dans le référentiel distant. Maintenant, je veux:

  1. Vérifiez s’il y a de nouveaux commits d’autres personnes sur le référentiel distant, par exemple l’ origin ?

  2. Disons qu’il y a eu 3 nouveaux commits sur le repository distant depuis mon dernier appel, je voudrais modifier les commits du repository distant, à savoir HEAD~3 avec HEAD~2 , HEAD~2 avec HEAD~1 et HEAD~1 avec HEAD .

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

Mes découvertes jusqu’à présent

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

Pour l’étape 3: C’est, je suppose, juste une git pull .

Vous pouvez git fetch origin pour mettre à jour la twig distante de votre référentiel afin de pointer vers la dernière version. Pour un diff contre la télécommande:

 git diff origin/master 

Oui, vous pouvez également utiliser la notation caret.

Si vous souhaitez accepter les modifications à distance:

 git merge origin/master 
 git remote update && git status 

J’ai trouvé ceci sur la réponse pour vérifier si la traction était nécessaire dans Git

git remote update pour git remote update à git remote update vos références distantes. Ensuite, vous pouvez faire plusieurs choses, telles que:

  1. git status -uno vous indiquera si la twig que vous git status -uno est en avance, en retard ou divergente. S’il ne dit rien, le local et le distant sont les mêmes.

  2. git show-branch *master vous montrera les commits dans toutes les twigs dont le nom se termine par master (par exemple master et origin / master).

Si vous utilisez -v avec git remote update à git remote update vous pouvez voir quelles twigs ont été mises à jour, vous n’avez donc pas besoin de commandes supplémentaires.

Un bon moyen d’avoir une vue synthétique de ce qui se passe “d’origine” est:

 git remote show origin 

Une solution potentielle

Grâce à la solution d’ Alan Haggai Alavi, j’ai trouvé le workflow 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 

J’utilise juste

 git remote update git status 

Ce dernier rapporte ensuite le nombre de commits derrière mon local. (si seulement)

puis

 git pull origin master 

pour mettre mon local à jour 🙂

Ma question habituelle est plutôt «quelque chose de nouveau ou de repo», alors ce qui est intéressant est utile. Je l’ai trouvé ici .

 git whatchanged origin/master -n 1 

git status ne montre pas toujours la différence entre master et origin / master même après un extraction. Si vous souhaitez que la combinaison git fetch origin && git status pour fonctionner, vous devez spécifier les informations de suivi entre la twig locale et l’origine:

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

Pour la twig principale:

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

car il n’a pas été suggéré jusqu’à présent … et je le trouve très utile …

j’utilise simplement

 git fetch origin 

pour récupérer les modifications à distance, puis je visualise les commits distants locaux et en attente (et leurs modifications associées) avec le bel outil gitk ( https://git-scm.com/docs/gitk ) impliquant l’argument –all comme

 gitk --all