Ich muss lokale Änderungen für Bereitstellungen zurücksetzen. (Ich hatte svn revert
dies in alten Skool-SVN-Tagen verwendet.)
Und ich benutze git reset --hard HEAD
dafür. (Auch git fetch
und git merge origin/$branch --no-ff
zum Synchronisieren mit dem Upstream-Zweig.)
Einige Artikel weisen jedoch darauf hin, git checkout -f
dass Änderungen rückgängig gemacht werden.
Was sind die Hauptunterschiede zwischen diesen Befehlen? Welcher Weg wird empfohlen?
Antworten:
Die beiden haben genau den gleichen Effekt. Ich empfehle Ihnen, die Lösung zu wählen, mit der Sie sich am wohlsten fühlen.
Aber wenn in diesem speziellen Fall der Effekt der gleiche ist, mit unterschiedlichen Werten, wäre er völlig unterschiedlich. Grundsätzlich (es gibt mehr, siehe verknüpfte Themen) verschieben Sie mit einem Reset den aktuellen Zweig und den HEAD in ein bestimmtes Commit, aber mit einem Checkout verschieben Sie nur den HEAD. Weitere Details siehe unten.
Ressourcen:
Zum gleichen Thema:
quelle
Ich habe noch nicht die Möglichkeit, andere Antworten zu kommentieren. Ich wollte nur hinzufügen, dass ich auf einen Fall gestoßen bin, in dem die beiden Befehle NICHT den gleichen Effekt haben. Ich bin in einen seltsamen Zustand geraten, also ist dies definitiv ein Randfall. Folgendes ist passiert:
Ich war in einer Filiale, alles sauber. Ich habe den Master ausgecheckt
git checkout master
und festgestellt,git status
dass Änderungen an vorhandenen Dateien vorgenommen wurden, die nicht für ein Commit bereitgestellt wurden (ja, für den Code, den ich gerade ausgecheckt habe). Ich habe versucht, mich zu verstecken, um in einen sauberen Zustand zurückzukehren. Der Stash soll abgeschlossen sein, war abergit status
immer noch unverändert. Auch versuchtgit reset --hard HEAD
. Es wurde ebenfalls ein erfolgreicher Abschluss gemeldet, der Status war jedoch nicht anders. Ich konnte diese seltsamen Änderungen nicht abbrechen.Dies wurde jedoch
git checkout -f
gelöst. Ich konnte diesem seltsamen Zustand entkommen. Zumindest in gewisser Hinsicht sind die beiden also nicht gleich.quelle