2010-02-01 11 views
6

Ich hatte einen alten Hash (Commit) ausgecheckt und arbeitete daran, checkte fröhlich ein und ignorierte Warnungen, dass ich nicht in einer Filiale arbeitete. Dann wechselte ich in einen Zweig und merkte, dass ich keine Möglichkeit hatte, zu meinen verwaisten Checkins zurück zu kommen (zum Glück hatte ich das Terminalfenster noch offen, also habe ich es ausgecheckt und verzweigt).Angst vor meinem Leben mit GIT: Ich habe keinen Zweig!

Wie kann ich GIT dazu bringen, mir die Namen der Commits zu nennen, die NICHT zu einem Zweig gehören? Oder nur alle Commits, wenn das nicht möglich ist ...

+0

"fröhlich einchecken und Warnungen ignorieren". Nun, das zeigt: Sie können Warnungen ignorieren, aber Sie sollten wissen, was Sie tun :-). – sleske

+0

1.5 Jahre später, wenn ich die Frage und die Antworten lese, glaube ich nicht, dass es das überhaupt zeigt, aber vielleicht das Gegenteil: irgendwann wird alles klar sein. –

Antwort

2

Siehe this question, die eine große Erklärung hat, wie stashes finden Sie fallen gelassen haben. Sie können dangling commits usw. auf die gleiche Weise sehen.

+0

Man das ist genial. Ich benutze noch keinen Vorrat, aber es öffnet die Tür. Danke John. –

+2

Oh Mann, du wirst nie aufhören, wenn du es gelernt hast. Stashing ändert sich, um sie in verschiedenen Zweigen zu testen, um Zusammenführungen zu testen, zwischen drei verschiedenen Versionen einer Änderung zu wechseln, die Hälfte der Änderung loszuwerden, ohne die andere Hälfte für immer zu verlieren ... –

+0

habe deinen Kommentar nie gesehen, weil er keine @ hatte yar drin:) ... sowieso, ich lerne immer noch täglich neue Sachen auf GIT –

2

Sie können sie aus dem Reflog herausfischen, in dem die Commits gespeichert sind, die Sie ausgecheckt haben.

git reflog werden die letzten Commits gedruckt, auf die HEAD zeigt. Dies ist Ihre Arbeitskopie.

Sie können auch eine Liste aller Objekte in Ihrem Baum abrufen, die von Ihren aktuellen Zweigen unter Verwendung von git fsck nicht erreichbar sind.

+0

Ausgezeichnet, Git fsck ist interessant, hatte noch nicht einmal davon gehört. –

8

git reflog wird das Protokoll der Referenzen anzeigen, die durch die letzte von Ihnen durchgeführte Aktivität erstellt wurden. Für zukünftige Referenz, git checkout eines Commit setzt Sie auf detached head. Wenn Sie mit einem alten Commit arbeiten möchten, sollten Sie stattdessen einen Zweig dieses Commits erstellen.

git checkout -b newbranch oldsha1 

oder

git branch newbranch oldsha1 
git checkout newbranch 
+0

Danke! Das ist in der Tat, wie ich zurück kam, aber ohne 'git reflog' war es nur Glück –

Verwandte Themen