GitLab-Server, wo man endgültig gelöschte, nicht gepushte Commits findet

GitLab-Server, wo man endgültig gelöschte, nicht gepushte Commits findet

Mein Push-Vorgang schlug fehl, weil mein Kollege eine Zeile in denselben Zweig festgeschrieben hatte, an dem ich gerade arbeitete, und ich vergessen hatte, meine zu speichern. Also versuchte ich, das Commit meines Kollegen rückgängig zu machen und es in meine Änderungen zu kopieren. Auf diese Weise hätte nur ein ausgehendes Commit existiert, dachte ich. Das funktionierte nicht so, wie ich wollte, also versuchte ich, sein Commit zurückzusetzen. Ich klickte mit der rechten Maustaste auf das Commit und dann auf Zurücksetzen->Löschen --Hard (in Visual Studio), wodurch sein gesamtes und mein Commit gelöscht wurde.

Ich habe meine Änderungen erneut übermittelt, konnte sie jedoch nicht auf den Server übertragen. Ich habe den git reflogBefehl gefunden, bin mir aber nicht sicher, ob ich ihn ohne einen Git-Desktop-Client verwenden kann.

Gibt es eine Möglichkeit, mein nicht gepushtes Commit vom Server mithilfe eines SSH-Clients zu finden? Oder soll ich einfach alles neu schreiben? Etwa 50-100 Codezeilen sind verloren gegangen.

GELÖST:

Verwenden Sie das Visual Studio Git-Menü in der oberen linken Ecke -> Öffnen in der Eingabeaufforderung dann

git reflog 

Dann

git cherry-pick <SHA-1> 

wobei SHA-1 der Kopf des Zweigs ist (z. B. HEAD@{1}), wie im Link unten in der Antwort von Benutzer1686 beschrieben.

Antwort1

Entweder git reflogoder git fsck --unreachablewie beschrieben inhttps://stackoverflow.com/questions/30035998/gelöschter-branch-unerwartet-git-in-visual-studiokann kürzlich verlorene Commits finden.

Allerdings müssen Wiederherstellungsmethoden auf einem Repository ausgeführt werden, in dem diese Commitswarzuvor sichtbar. Wenn ein Commit nicht erfolgreich gepusht wurde, befindet es sich überhaupt nicht auf dem Git-Server. Der einzige Ort, an dem es sich befindet, ist Ihr lokales Git-Repository in VS.

(Obwohl es möglicherweise auch im Server-Repository ein „Reflog“ gibt, wird es nur aktualisiert, wenn der Push erfolgreich war. Beispielsweise könnten mit SSH Commits wiederhergestellt werden, die erfolgreich gepusht wurden, aber durch einen späteren Force-Push überschrieben wurden – nicht jedoch Commits, die direkt abgelehnt wurden.)

Ich habe den Befehl „git reflog“ gefunden, bin mir aber nicht sicher, ob ich ihn ohne einen Git-Desktopclient verwenden kann.

'git reflog' ist von derGit-Befehlszeilentools, die normalerweise mit den meisten Git-Desktopclients gebündelt sind, aber eigentlich nicht an eine App gebunden sind.

Sie verwenden bereits einen Git-Desktopclient – ​​Visual Studio –, der auch eine Kopie von Git installiert. Es sollte also ausreichen, in cdIhr Quellverzeichnis zu wechseln und es gitvon dort aus auszuführen.

verwandte Informationen