J'ai toujours pensé git resetet git checkoutcomme la même chose, dans le sens où les deux ramènent le projet à un commit spécifique. Cependant, je pense qu'ils ne peuvent pas être exactement les mêmes, car cela serait redondant. Quelle est la différence réelle entre les deux? Je suis un peu confus, car le svn n'a svn coqu'à annuler le commit.
AJOUTÉE
VonC et Charles ont expliqué les différences entre git resetet git checkoutvraiment bien. Ma compréhension actuelle est que git resettous les changements reviennent à un commit spécifique, alors que se git checkoutprépare plus ou moins pour une branche. J'ai trouvé les deux diagrammes suivants très utiles pour arriver à cette compréhension:

AJOUTÉ 3
À partir de http://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html , l'extraction et la réinitialisation peuvent émuler le rebase.
git checkout bar
git reset --hard newbar
git branch -d newbar
-- filesvariantes; je ne suis pas sûr.) Ce diagramme donne l'impression que la principale différence est de savoir si elles affectent l'index ou le WD. Voir ma réponse à ce sujet. Les 2e et 3e diagrammes sont très utiles pour voir la vraie différence. Les 4e et 5e diagrammes sont utiles pour vérifier si vous comprenez ce que font ces commandes, mais ne vous aideront pas vraiment à y arriver.
think-like-a-git.netarticle lié ) sont nécessaires pour éviter la perte de données.


