git reset-Befehl
Der git reset-Befehl wird verwendet, um Versionen zurückzusetzen, und Sie können einen bestimmten Commit angeben, auf den zurückgesetzt werden soll.
Das Syntaxformat des git reset-Befehls lautet wie folgt:
git reset [--soft | --mixed | --hard] [HEAD]
--mixedEs ist die Standardeinstellung, daher kann dieser Parameter weggelassen werden. Er setzt die Dateien im Staging-Bereich zurück, sodass sie mit dem letzten Commit übereinstimmen, während der Dateiinhalt im Arbeitsverzeichnis unverändert bleibt.
git reset [HEAD]
Beispiel:
$ git reset HEAD^ # 回退所有内容到上一个版本 $ git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一个版本 $ git reset 052e # 回退到指定版本
--softParameter, mit dem auf eine bestimmte Version zurückgesetzt wird:
git reset --soft HEAD
Beispiel:
$ git reset --soft HEAD~3 # 回退上上上一个版本
--hardDieser Parameter macht alle nicht committeten Änderungen im Arbeitsverzeichnis rückgängig, setzt sowohl den Staging-Bereich als auch das Arbeitsverzeichnis auf die vorherige Version zurück und löscht alle Informationen aus vorherigen Commits:
git reset --hard HEAD
Beispiel:
$ git reset --hard HEAD~3 # 回退上上上一个版本 $ git reset –hard bae128 # 回退到某个版本回退点之前的所有信息。 $ git reset --hard origin/master # 将本地的状态回退到和远程的一样
Hinweis:Vorsichtige Verwendung–-hardDieser Parameter löscht alle Informationen vor dem Rollback-Punkt.
HEAD-Beschreibung:
HEAD repräsentiert die aktuelle Version
HEAD^ ist die vorherige Version
HEAD^^ ist die Version zwei Schritte zurück
HEAD^^^ — die Version drei Commits zurück
Und so weiter...
HEAD~0 repräsentiert die aktuelle Version
HEAD~1 ist die vorherige Version
HEAD^2 ist die Version zwei Schritte zurück
HEAD^3 ist die Version drei Schritte zurück
Und so weiter...
git reset HEAD
Der Befehl git reset HEAD wird verwendet, um zwischengespeicherte Inhalte aus dem Staging-Bereich zu entfernen.
Ändern wir zuerst die README-Datei, mit folgendem Inhalt:
# Example Git 测试 # Example
Die Datei hello.php wird wie folgt geändert:
<?php echo 'Example:www.example.com'; echo 'Example:www.example.com'; echo 'Example:www.example.com'; ?>
Nachdem beide Dateien geändert und zum Staging-Bereich hinzugefügt wurden, möchten wir eine davon aus dem Staging-Bereich entfernen. Die Vorgehensweise ist wie folgt:
$ git status -s
M README
M hello.php
$ git add .
$ git status -s
M README
M hello.php
$ git reset HEAD hello.php
Unstaged changes after reset:
M hello.php
$ git status -s
M README
M hello.php
Wenn Sie nun git commit ausführen, werden nur die Änderungen an der README-Datei committet, während hello.php nicht committet wird.
$ git commit -m '修改'
[master f50cfda] 修改
1 file changed, 1 insertion(+)
$ git status -s
M hello.php
Sie können sehen, dass die Änderung an der Datei hello.php nicht committet wurde.
An diesem Punkt können wir den folgenden Befehl verwenden, um die Änderung an hello.php zu committen:
$ git commit -am '修改 hello.php 文件'
[master 760f74d] 修改 hello.php 文件
1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working directory clean
Kurz gesagt: Führen Sie git reset HEAD aus, um die Dateien aus dem Staging-Bereich zu entfernen, die zuvor mit git add hinzugefügt wurden, aber die Sie nicht in den nächsten Commit-Snapshot aufnehmen möchten.
Weitere Erweiterungen