Diese drei Befehle haben völlig unterschiedliche Zwecke. Sie sind sich nicht einmal annähernd ähnlich.
git revert
Dieser Befehl erstellt ein neues Commit, das die Änderungen eines vorherigen Commits rückgängig macht. Dieser Befehl fügt dem Projekt einen neuen Verlauf hinzu (der vorhandene Verlauf wird nicht geändert).
git checkout
Dieser Befehl checkt Inhalte aus dem Repository aus und fügt sie in Ihren Arbeitsbaum ein. Dies kann auch andere Auswirkungen haben, je nachdem, wie der Befehl aufgerufen wurde. Beispielsweise kann auch geändert werden, an welchem Zweig Sie gerade arbeiten. Dieser Befehl nimmt keine Änderungen am Verlauf vor.
git reset
Dieser Befehl ist etwas komplizierter. Es macht tatsächlich ein paar verschiedene Dinge, je nachdem, wie es aufgerufen wird. Es ändert den Index (den sogenannten "Staging-Bereich"). Oder es ändert sich, auf welche Festschreibung ein Zweigkopf gerade zeigt. Dieser Befehl kann den vorhandenen Verlauf ändern (indem das Commit geändert wird, auf das ein Zweig verweist).
Verwenden dieser Befehle
Wenn irgendwo in der Projekthistorie ein Commit durchgeführt wurde und Sie später entscheiden, dass das Commit falsch ist und nicht hätte durchgeführt werden dürfen, git revert
ist dies das Werkzeug für den Job. Dadurch werden die durch das fehlerhafte Festschreiben eingeführten Änderungen rückgängig gemacht und das "Rückgängigmachen" in der Historie aufgezeichnet.
Wenn Sie eine Datei in Ihrem Arbeitsbaum geändert, die Änderung jedoch nicht festgeschrieben haben, können Sie git checkout
eine Kopie der Datei aus dem Repository auschecken.
Wenn Sie eine Festschreibung vorgenommen haben, diese aber noch nicht an Dritte weitergegeben haben und entscheiden, dass Sie sie nicht möchten, können Sie git reset
den Verlauf so umschreiben, dass es so aussieht, als hätten Sie diese Festschreibung nie vorgenommen.
Dies sind nur einige der möglichen Nutzungsszenarien. Es gibt andere Befehle, die in bestimmten Situationen nützlich sein können, und die obigen drei Befehle haben auch andere Verwendungszwecke.