Est-il possible de remettre mon dépôt local au même niveau que le dépôt "de référence" avec Git ?
Oui. S'il y en a, le plus simple pour éviter de les perdre est de placer un tag à l'emplacement courant, puis revenir à la position souhaitée.
Utilise déjà git status et éventuellement git diff juste derrière pour vérifier si tu as des modifications en souffrance que tu n'aurais pas encore commitées. Le cas échéant, fais-le (ou stashe-les si tu es à l'aide avec, mais le plus intéressant dans la présente situation reste un commit ordinaire, à mon avis).
Une fois le dépôt considéré comme propre par git status, mets à jour tes branches distantes grâce à git fetch --all. Puis, on considère que ta branche locale master est associée à la branche distante origin/master. Vérifie-le avec git branch -lvva master en examinant ce qui se trouve entre les crochets.
Ensuite, tu peux comparer les branches locales et distantes :
- git log master...origin/master (avec trois points) te permet de lister les commits qui appartiennent à une branche ou à l'autre, mais pas aux deux. C'est donc ce qui va te permettre de vérifier si la branche a divergé ou non par rapport à la copie locale ;
- git log master..origin/master (avec deux points) te permet de voir ceux qui sont accessible depuis origin/master mais pas depuis master. Donc tu verras ceux qui ont été ajoutés à la branche distante et que tu n'as pas encore intégré chez toi (avec git pull) ;
- git log origin/master..master (avec deux points également) te montre les commits qui sont accessibles depuis master mais pas origin/master. Donc cela te dira si tu as des commits sur ta branche que tu n'as pas encore poussés. Cela va être le cas s'ils viennent d'être produits mais également si la branche a été réécrite côté serveur puisque dans ce cas, les commits qui ont été abandonnés côté serveur seront toujours visibles de ton côté.
Une fois que tu es certain d'avoir tout commité et sauvegardé, tu peux utiliser :
git reset --hard origin/master
pour ramener la branche courante (en principe master puisqu'on a fait un checkout dessus) vers la position indiquée, ici celle de la version distance de master, sur le serveur.
Attention : l'option --hard va ramener les fichiers suivis (et seulement eux) du working directory à l'état de la version ciblée et donc écraser toute modification qui n'aura pas été enregistrée. Assure-toi d'avoir tout enregistré comme il le faut avant d'appeler cette commande.
Bon courage.
Partager