2017-10-03 2 views
0

ich GitExtentions bin mit meinem Repository zu halten .. Lange Rede kurzer Sinn ich meine nicht gebundenen Dateien verloren ...verloren unbestätigten Änderungen GitExtensions

Ich werde versuchen, was zu erklären, ich habe und was ich mit der Hoffnung, daran erinnern, dass jemand kann mir helfen ...

  • Ich hatte ~ 20 Dateien nicht committed auf denen ich arbeitete.
  • irgendwann ich sie aus Versehen begangen,
  • dann kehrte ich das Commit und
  • dann setze ich den aktuellen Brunch zum vorherigen begehen ...

ich an diesem Punkt, dass ich heraus Ich habe alles verloren, woran ich gearbeitet habe ... Könntest du mir bitte helfen?

Unterhalb der letzten 3 Zeilen der HEAD-Datei ..

702b3507802dd7ffb1ee8f0c1d18da584af912de ff4bdfc3e0e6c2a2133702e081a8c86ae929d1a7 Gabriele <[email protected]> 1507034589 +0200 commit: fixed bug in processing pressure 
ff4bdfc3e0e6c2a2133702e081a8c86ae929d1a7 ff4bdfc3e0e6c2a2133702e081a8c86ae929d1a7 Gabriele <[email protected]> 1507034629 +0200 reset: moving to HEAD 
ff4bdfc3e0e6c2a2133702e081a8c86ae929d1a7 702b3507802dd7ffb1ee8f0c1d18da584af912de Gabriele <[email protected]> 1507034651 +0200 reset: moving to 702b3507802dd7ffb1ee8f0c1d18da584af912de 
+0

Wie haben Sie das Commit rückgängig gemacht? Verwenden Sie die GitExtensions-Version von 'git revert',' git reset', 'git rebase' oder etwas anderem? – Chris

+0

Ich habe es getan, indem ich auf die "git revert" und dann "Git Reset" über GitExtensions – gabboshow

+0

Ich habe in meiner Frage die letzten 3 Zeilen der HEAD-Datei .. – gabboshow

Antwort

0

Weil Sie die Dateien begangen, sollten Sie in der Lage sein, sich zu erholen. Fast alle Git-Befehle sind nicht-destruktiv, auch wenn sie anders erscheinen. Lassen Sie uns das durchgehen, um zu verstehen, wie Sie wiederherstellen können:

Also zuerst haben Sie ein Repo mit etwas Geschichte (bis zu einem Commit mit dem Zeichen 'O' unten) und einigen nicht festgeschriebenen Dateien. Aber Sie übergeben die Dateien (Commit markiert X unten).

... O -- X <--(master) 

Dann zurückkehren Sie die zufällige

begehen
... O -- X -- !X <--(master) 

Jetzt Ihren master Kopf begehen, und vermutlich Zeige- und Arbeit Baum, schauen, wie sie bei O tat. Dann hast du eine reset gemacht. Ich gebe zu, es ist mir nicht klar, warum Sie sowohl eine Zurücksetzung als auch eine Zurücksetzung vorgenommen haben - sie werden normalerweise als alternative Möglichkeiten betrachtet, mit dem Problem umzugehen, jedes mit Vor- und Nachteilen; und in diesem Fall macht reset effektiv die revert. Aber unabhängig, jetzt haben Sie

... O <--(master) 
    \ 
     X -- !X 

Beachten Sie, dass, obwohl sie scheinen verschwunden zu sein, X und !X noch in der Datenbank vorhanden; und da X ein (zufälliges) Commit der Dateien ist, an denen Sie gearbeitet haben, können Sie diese Tatsache zur Wiederherstellung verwenden.

Mit dem Reflog können Sie einen Namen für X finden. Sprich

git reflog master 

Was genau sehen Sie davon ab, ob andere Maßnahmen master verursacht haben zu bewegen; Sie sehen sich also die Ausgabe des Befehls revert an und finden den Namen des Reflogs (etwa [email protected]{1}). Dann könnten Sie tun

git checkout [email protected]{1}^ -- . 

den Index und Arbeits Baum aus dem versehentlichen zu aktualisieren verpflichten, diese Änderungen wieder in einen nicht gebundenen Zustand versetzt.Das macht die Änderungen der Bühne, so dass Sie können dann wollen

git reset HEAD -- . 

Notiere die reflog auch einen direkten Namen liefern könnte für die X selbst begehen, wenn Sie die commit wissen Nachricht, die Sie für sie verwendet. Es gibt also mehr als eine Möglichkeit dies zu tun, aber das obige sollte ein ziemlich guter Ausgangspunkt sein.

Verwandte Themen