J'ai toujours pensé git reset
et git checkout
comme 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 co
qu'à annuler le commit.
AJOUTÉE
VonC et Charles ont expliqué les différences entre git reset
et git checkout
vraiment bien. Ma compréhension actuelle est que git reset
tous les changements reviennent à un commit spécifique, alors que se git checkout
pré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
-- files
variantes; 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.net
article lié ) sont nécessaires pour éviter la perte de données.