Tester avec des branches synchronisées
Dans les étapes précédentes, nous avons vu ce qui se passe lorsque notre branche locale est en avance par rapport à la branche de suivi distante. Maintenant, voyons ce que git status
et git log @{u}..HEAD
montrent lorsque notre branche locale est synchronisée avec la branche de suivi distante.
Étant donné que nous n'avons pas de véritable dépôt distant dans cet environnement de laboratoire, nous pouvons simuler la synchronisation en supprimant le commit que nous venons de faire. Dans un scénario réel, être synchronisé signifierait que vous avez poussé vos commits locaux vers le dépôt distant.
Nous pouvons utiliser git reset
pour déplacer le pointeur de notre branche locale vers le commit précédent. Faites attention avec git reset
dans les projets réels, car il peut supprimer des modifications ! Pour ce laboratoire, c'est sans danger car nous simulons simplement un état.
Assurez-vous que vous êtes dans le répertoire ~/project/my-time-machine
:
cd ~/project/my-time-machine
Maintenant, réinitialisons notre branche au commit précédant le dernier. Nous pouvons utiliser HEAD~1
pour faire référence au commit avant le HEAD
actuel.
git reset --hard HEAD~1
Vous devriez voir un résultat similaire à ceci, indiquant que le HEAD
a été déplacé en arrière et que le répertoire de travail a été mis à jour :
HEAD is now at a1b2c3d Send a message to the future
(Note : Le hachage du commit correspondra au hachage de votre premier commit.)
Maintenant que nous avons réinitialisé notre branche locale à l'état du premier commit, vérifions à nouveau le statut :
git status
Cette fois, la sortie devrait indiquer que votre branche est à jour avec la branche de suivi distante :
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
Le message Your branch is up to date with 'origin/master'.
nous indique que notre branche locale master
est synchronisée avec la branche de suivi distante.
Enfin, utilisons à nouveau git log @{u}..HEAD
pour voir s'il y a des commits en avance :
git log @{u}..HEAD
Cette commande ne devrait produire aucune sortie, car il n'y a pas de commits sur notre branche locale (HEAD
) qui ne soient pas également sur la branche en amont (@{u}
).
Cela confirme que notre branche locale est maintenant synchronisée avec la branche de suivi distante. Comprendre la sortie de git status
et utiliser git log @{u}..HEAD
sont des compétences essentielles pour gérer votre flux de travail Git et collaborer efficacement.