Frage

Wie kann ich zu einem bestimmten Roll begehen gehe etwa zurück in git?

Die beste Antwort jemand könnte ich war git revert X mal zu verwenden, bis ich die gewünschte begehen erreichen.

Also lassen Sie uns sagen, dass ich wieder auf eine zurückkehren möchten verpflichten, dass 20 Commits alt ist, würde ich es 20-mal laufen haben.

Gibt es einen einfacheren Weg, dies zu tun?

Ich kann nicht zurückgesetzt verwenden, da diese Repository öffentlich ist.

War es hilfreich?

Lösung

Versuchen Sie folgendes:

git checkout [revision] .

Dabei gilt [revision] die Commit Hash (zum Beispiel: 12345678901234567890123456789012345678ab).

Setzen Sie das . am Ende nicht vergessen, sehr wichtig. Dies wird Änderungen an den ganzen Baum anzuwenden. Sie sollten diesen Befehl im git Projekt root ausführen. Wenn Sie in jedem Unterverzeichnis sind, ändert dieser Befehl nur die Dateien im aktuellen Verzeichnis. Dann begehen und Sie sollten gut sein.

Sie können dies rückgängig machen, indem

git reset --hard 

, die alle Änderungen aus dem Arbeitsverzeichnis und Staging-Bereich gelöscht werden.

Andere Tipps

zu einem bestimmten Rollback begehen:

git reset --hard commit_sha

10 Rollback verpflichtet zurück:

git reset --hard HEAD~10

Sie können „git revert“ wie im folgenden Beitrag verwenden, wenn Sie die Geschichte neu zu schreiben, nicht wollen,

Wie Git-Repository zu einem frühen begehen zurückzukehren?

Nun, ich denke, die Frage ist, was meinst du mit "roll back? Wenn Sie nicht reset kann, weil es öffentlich ist und Sie wollen die Geschichte intakt begehen zu halten, meinen Sie Sie wollen einfach nur Ihre Arbeitskopie eine bestimmte reflektieren? Verwenden Sie git checkout und der Commit-Hash.

Edit: Wie in den Kommentaren darauf hingewiesen, mit git checkout ohne einen Zweig spezifiziert werden Sie in einem „keine Verzweigung“ Zustand verlassen. Verwenden Sie git checkout <commit> -b <branchname> in einen Zweig zur Kasse oder git checkout <commit> . in den aktuellen Zweig zur Kasse.

Das ursprüngliche Plakat heißt es:

  

Die beste Antwort könnte jemand mir geben war git revert X-mal, bis ich zu verwenden,   erreichen die gewünschte begehen.

     

Also lassen Sie uns sagen, dass ich wieder auf eine zurückkehren möchten verpflichten, dass 20 Commits alt ist, ich habe würde   laufen sie 20-mal.

     

Gibt es einen einfacheren Weg, dies zu tun?

     

Ich kann nicht verwenden Reset verursachen diese Repo öffentlich ist.

Es ist nicht notwendig git revert X mal zu verwenden. git revert kann eine akzeptieren commit Bereich als Argument, so dass Sie nur es verwenden müssen, sobald eine Reihe zurückkehren von verpflichtet Zum Beispiel, wenn Sie die 20 letzten Commits zurückkehren möchten.

git revert --no-edit HEAD~20..

Der commit Bereich HEAD~20.. für HEAD~20..HEAD kurz ist, und bedeutet "starten vom 20 th Eltern des HEAD zu begehen, und kehrt alle Commits, nachdem es auf HEAD up".

Das wird, dass die letzten 20 Commits zurückkehren, unter der Annahme, dass keiner von denen Merge verpflichtet. Wenn es merge begeht, dann können Sie nicht wiederhergestellt werden alle in einem Befehl, Sie werden sie individuell benötigen zurückkehren mit

git revert -m 1 <merge-commit>

Beachten Sie auch, dass ich 1.9.0 eine Reihe mit git revert mit git Version getestet haben. Wenn Sie eine ältere Version von git verwenden, eine Reihe mit git revert Verwendung kann oder nicht arbeiten .

In diesem Fall git revert über git checkout bevorzugt.

Beachten Sie, dass im Gegensatz zu dieser Antwort, die besagt, git checkout zu verwenden, git revert tatsächlich alle Dateien entfernen, die in einem der Commits hinzugefügt wurden, die du bist Zurücksetzen , das macht dies die richtige Art und Weise eine Reihe von Revisionen.

zurückzukehren

Dokumentation

Schritt 1: holen Liste der Commits:

git log

Sie werden Liste erhalten wie in diesem Beispiel:

[Comp:Folder User$ git log
commit 54b11d42e12dc6e9f070a8b5095a4492216d5320
Author: author <author@gmail.com>
Date:   Fri Jul 8 23:42:22 2016 +0300

This is last commit message

commit fd6cb176297acca4dbc69d15d6b7f78a2463482f
Author: author <author@gmail.com>
Date:   Fri Jun 24 20:20:24 2016 +0300

This is previous commit message

commit ab0de062136da650ffc27cfb57febac8efb84b8d
Author: author <author@gmail.com>
Date:   Thu Jun 23 00:41:55 2016 +0300

This is previous previous commit message
...

Schritt 2: erforderlich Hash begehen kopieren und fügen Sie ihn für Kasse:

git checkout fd6cb176297acca4dbc69d15d6b7f78a2463482f

Das ist alles.

git read-tree -um @ $commit_to_revert_to

wird es tun. Es ist "git checkout", aber ohne HEAD zu aktualisieren.

Sie können den gleichen Effekt mit

erreichen
git checkout $commit_to_revert_to
git reset --soft @{1}

Wenn Sie Bequemlichkeit lieber Bespannen Befehle zusammen.

Diese lassen Sie mit Ihrem worktree und Index in den gewünschten Zustand, können Sie einfach git commit zu beenden.

Ich bin mir nicht sicher, was sich verändert, aber ich bin nicht in der Lage eine bestimmte verpflichten, ohne die Option --detach zur Kasse. Der vollständige Befehl, der für mich gearbeitet wurde: git checkout --detach [commit hash]

Um von dem abgenommenen Zustand wieder musste ich meine Filiale Kasse: git checkout master

Angenommen, Sie an einem Projekt arbeiten und nach einem Tag oder so. Sie bemerken, eine Funktion, die Sie noch Fehler gibt. Aber Sie wissen nicht, welche Änderung, die Sie gemacht, die den Fehler verursacht hat. So müssen Sie vorherige Arbeits Commits fischen. Um wieder zu einem bestimmten commit:

git checkout 8a0fe5191b7dfc6a81833bfb61220d7204e6b0a9 .

Ok, so dass begehen Arbeiten für Sie. Nicht mehr Fehler. Sie geortet das Problem. Jetzt können Sie gehen zurück auf die neueste begehen:

git checkout 792d9294f652d753514dc2033a04d742decb82a5 .

Und eine bestimmte Datei Kasse, bevor sie den Fehler verursacht hat (in meinem Fall verwende ich Beispiel Gemfile.lock):

git checkout 8a0fe5191b7dfc6a81833bfb61220d7204e6b0a9 -- /projects/myproject/Gemfile.lock

Und das ist eine Möglichkeit, Fehler, die Sie in verpflichtet, ohne zu erkennen, die Fehler erst später erstellt zu behandeln.

HEAD frei stehende Modus Wollen Sie?

Wenn Sie X Zeit zu einem bestimmten Rollback mit einem frei stehenden HEAD commit (das heißt, Sie können nicht mess up etwas), dann mit allen Mitteln, gehen Sie wie folgt:

(ersetzen Sie X mit, wie viele verpflichtet Sie wollen zurück gehen)

git checkout HEAD~X

d. zurück zu gehen ein commit:

git checkout HEAD~1

Hier ist ein Beispiel zu tun, dass

    cd /yourprojects/project-acme 


    git checkout efc11170c78 .

Sie können den Commit finden ID jeweils in der Commits Abschnitt begehen Zusammenhang von GitHub / BitBucket / Gitlab. Es ist sehr einfach, Ihre ID verpflichten zu annehmen ist 5889575 dann, wenn Sie wieder in diesem Teil im Code gehen wollen, dann müssen Sie einfach eingeben

git checkout 5889575 .

Dies wird Sie zu diesem Zeitpunkt in Ihrem Code.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top