2010-12-18 3 views
3

Etwas Seltsames ist passiert - mein Entwicklungszweig hat seine ganze Geschichte bis zum letzten Commit verloren. Kann jemand den Grund vorschlagen? Letzte Dinge, die ich getan habe - installiert, dass Gitch Brudergit gegabelten und begann, es zu verwenden (in erster Linie für die Ansicht von Geschichte, sondern auch versucht, bei der Zusammenführung tun). Das Verlaufsbild sieht jetzt wie http://yfrog.com/h2bf8p aus, aber bevor man von Master anfing und parallel ging, wurde der 'Feature-Shape-Fill'-Zweig in zwei Mal zusammengeführt. Ich habe mich auch in Entwicklung vertieft. Momentan zeigt git log für develope nur das letzte Commit an. Sagt nichts wie "losgelöst".Git: Zweig hat seine Geschichte verloren?

* Ich habe schon Angst vor GitX (offiziell und diese Gabel), seit den letzten Wochen etw wierd passiert auch - binäre .fla-Datei wurde nicht für den letzten Abend in mehreren Commits gespeichert. Alle Textdateien waren in Ordnung, aber diese Binärdatei war wie 4 commits zurück. Ein anderes Arbeitsverzeichnis wurde beim Wechseln zwischen den Zweigen überhaupt nicht aktualisiert (ich arbeitete in der Konsole und git sagte nichts über irgendeinen Fehler, es war gut für ihn). Donno, wenn es etwas mit Gitx zu tun hat?

upd: Sieht aus wie das gleiche Problem hier http://groups.google.com/group/gitx/browse_thread/thread/71a0f759d115fee5 erwähnt Hier ist, was ich habe:

$ git reflog 
157cfca [email protected]{0}: checkout: moving from feature-shape-fill to develop 
46a6163 [email protected]{1}: checkout: moving from develop to feature-shape-fill 
157cfca [email protected]{2}: commit: Rotated drag tip 
7f6c394 [email protected]{3}: commit: TextShapesCanvas is working, 
4765eed [email protected]{4}: merge feature-shape-fill: Merge made by recursive. 
ed44a2c [email protected]{5}: checkout: moving from feature-shape-fill to develop 
46a6163 [email protected]{6}: commit: More tight packaging (thnx to TextLineMetrics), 
59b6d2d [email protected]{7}: checkout: moving from develop to feature-shape-fill 
ed44a2c [email protected]{8}: merge feature-shape-fill: Merge made by recursive. 
67d08b3 [email protected]{9}: commit: Basic grid functionality, need to add text shapes and fix resize-generation 
505479c [email protected]{10}: checkout: moving from feature-shape-fill to develop 
59b6d2d [email protected]{11}: commit (amend): Simple retrovirus non-optomized algorithm 
5ec1b70 [email protected]{12}: commit: Simple retrovirus non-optomized algorithm 
b9eaf18 [email protected]{13}: commit: The most ugly suitable version of fill algorithm 
757f1b7 [email protected]{14}: checkout: moving from feature-shape-fill-predefined to feature-shape-fill 
757f1b7 [email protected]{15}: checkout: moving from feature-shape-fill to feature-shape-fill-predefined 
757f1b7 [email protected]{16}: checkout: moving from feature-shape-fill-auto to feature-shape-fill 
b8e284f [email protected]{17}: commit: Auto fill first steps 
757f1b7 [email protected]{18}: checkout: moving from feature-shape-fill to feature-shape-fill-auto 
757f1b7 [email protected]{19}: commit: Test document created, components::TextShape base draft 
505479c [email protected]{20}: checkout: moving from develop to feature-shape-fill 
505479c [email protected]{21}: checkout: moving from master to develop 

Sieht aus wie sie nicht verloren gehen, aber wie meine Geschichte zurück zu bekommen?

Antwort

2

Das Bild, das Sie zeigen, dass Ihre develop Zweig ist getrennt, wenn ich mich nicht irre.

Da verstehe ich es basiert auf dem master Zweig, können Sie es auf dem Master-Zweig setzen:

git rebase master develop 

Wichtige: zuerst eine Sicherungskopie der ursprünglichen .git Verzeichnis machen, bevor die oben versuchen Ich bin mir nicht sicher, ob dies das gewünschte Ergebnis bringen wird.

könnten Sie auch ein ähnliches Ergebnis erhalten, indem einen temporären Zweig develop2 von master Erstellen und develop hineine Fusion:

git checkout -b develop2 master 
git merge develop 

hofften, das hilft! Ich habe es nicht ausprobiert, bitte sichern Sie also zuerst Ihr .git Verzeichnis, bevor Sie das obige ausprobieren!

+0

Wie ich in upd schrieb ich fand, dass ich die verlorenen Commits zugreifen kann, aber wie meinen Zweig zu erhalten (als eine Geschichte der Commits) zurück? Ihr Weg wird einfach einen Entwicklungszweig (ausgehend vom Master) erstellen, der aus einem einzigen Commit besteht, oder? –

+0

@Pavel: Ich würde vermuten, dass alle Commits wieder oben auf Master gesetzt werden. Wenn Sie nur Ihr .git-Verzeichnis sichern, können Sie die obigen Befehle sehr schnell ausprobieren und sehen, ob sie Ihr Problem lösen. – EOL

0

Um die Geschichte zu sehen, wie einfach die Entwicklung Zweig Verwendung geändert:

git reflog show develop 

Dann entweder Kasse oder branches/tags in der älteren von ihrem SHA verpflichtet (oder Position zB @ entwickelt {1}) bis Du findest den letzten, der funktioniert hat. Zum Beispiel:

git branch test 7f6c394 

im Protokoll Blick scheint diese andere Commits Teil entwickeln als auch zu sein: begehen ed44a2c, 67d08b3, 505479c

Bewegen Sie die Entwicklung Zweig zum letzten gut. Sie können die anderen Commits zurücknehmen, aber es hängt wirklich davon ab, was den Fehler verursacht hat.

0

Ich hatte genau das gleiche Problem, die Eltern-SHA für ein Commit wurde irgendwie nicht festgelegt und das Commit sah aus, als ob es außerhalb der Projekthistorie existierte.Die erste Option, die von EOL bereitgestellt wird, bringt Ihren Commit zurück in den Verlauf, verliert jedoch den gesamten Zweigverlauf. (Zumindest hat es für mich.) Was ich am Ende tun war auf der Suche durch meine reflog für die letzte vor dem einen begehen, die meinen kostbaren Zweig in der Schwebe geschickt. Die Zeilen, die ich sah, sah wie folgt aus:

6d79889 [email protected]{24}: checkout: moving from online-payment-processing to gift-certificates 
3da6ec3 [email protected]{25}: commit: fix computation of when to skip processing for special orders 

Grundsätzlich ist eine gefolgt verpflichten, eine Kasse von einem anderen Zweig. (In meinem Fall der Zweig online-payment-processing war derjenige in der Schwebe und die ‚ich von‘ Nachricht mir versichert, dass die vorherigen auf meinem Zweig begehen war.) Ich wusste, dass die bei HEAD zu begehen war derjenige, der bekommt, war verkorkst (im Gegensatz in der Geschichte zu einem weiter hinten), so gab ich den Befehl:

git rebase 3da6ec3 online-payment-processing

und ... puh ... es wurde festgelegt (nach einiger Konfliktlösung) und meine Niederlassung Geschichte gestellt wurde.