git reset-Befehl

Git-Grundoperationen


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...

Kann mit ~number dargestellt werden
  • 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.



Git-Grundoperationen

Weitere Erweiterungen