2010-03-05 5 views
6

Hintergrund: Trevor arbeitete an einem Testprojekt, nur um git auszuprobieren. Dies ist eine lokale Ein-Personen-Repository, das nicht geteilt wurde, so Trevor einen Reset schwer tat, um einige unerwünschte Commits auszulöschen:Anonymer Zweig, nachdem Git zurückgesetzt wurde

:git reset --hard 6aa32cfecf4 
    HEAD is now at 6aa32cf auto commit Sun Feb 28 16:00:10 -0800 2010 

Dann Trevor ging Zugabe zusammen glücklich Commits zum Projekt hinzu. Als Trevor dann die grafische Darstellung des Commit-Verlaufs betrachtete, entdeckte Trevor, dass es einen anonymen Zweig der ausgelöschten Commits zu geben schien. Es wird nicht als Zweig angezeigt, der den Git-Zweig verwendet, aber es wird in der GUI angezeigt.

Fragen 1: Wie kann Trevor diesen "anonymen Zweig" loswerden ... und was betrachtet Trevor wirklich? Was sind einige Hinweise, die Trevor dabei helfen zu verstehen, was passiert ist, als Trevor den Hard-Reset durchgeführt hat, damit Trevor Trevors Erwartungen besser erfüllen kann?

Fragen 2: Angenommen Trevor hatte teilte das Projekt mit anderen Menschen. Was wäre die Alternative, um dasselbe (oder ähnliches) ohne einen Hard-Reset durchzuführen?

+1

Was ist ein Swip? –

+0

@AndrewWillems Trevor – dreftymac

Antwort

4

Wie in The illustrated guide to recovering lost commits with Git erwähnt, können Sie "verlorene" Commits wiederherstellen (wie in "nicht mehr von einem Zweig oder einem Tag verwiesen").
Deshalb sind sie immer noch in gitk.
Zum Beispiel ein:

$ git fsck −−lost-found 

würde sie auch angezeigt werden.

So reinigen Sie diese nach oben (vorausgesetzt, Sie nichts, um wieder von anderen Löschvorgänge mit)

$ git gc --aggressive 
$ git prune 

Siehe auch git gc: cleaning up after yourself.


Wenn dieser Zweig geteilt worden war, eine mögliche Alternative wäre eine git revert, um eine neue zu machen gewesen, die n vorherigen aufheben commit.

3

Sie können einen neuen Zweig durch ein Commit erstellen.

Wenn Ihre letzte in Ihrem anonymen Zweig begehen ist 123e43 Sie tun können:

git checkout -b my_branch 123e43e

nun Ihre Niederlassung nicht anonym ist. Sie können es in Ihrem Master-Zweig zusammenführen oder umbsen.