Un mio collega ha appena avuto questa situazione. Nel suo caso, c'erano commit in testa distaccata - lavorano in R-Studio - e lo strumento li ha avvertiti che potevano creare il ramo con questo e quel riferimento SHA ... ma poiché l'unica opzione era "Chiudi" --duh !! era una casella di informazioni - hanno chiuso la finestra di dialogo e hanno perso le informazioni per sempre ...
Grazie al reflog
comando abbiamo potuto vedere che le modifiche non sono andate perse. Ma nel nostro caso, git branch
non ha funzionato come previsto ... o un arrivo git pull
ha incasinato in qualche modo. Abbiamo dovuto pescare le modifiche dal reflog al ramo appena creato:
git cherry-pick 0b823d42..3cce27fc
che ha inserito tutti i commit che volevamo nel ramo. Quindi potremmo unire il ramo in develop
senza problemi.
Nel caso in cui ciò sia informativo per chiunque, abbiamo identificato i commit sulla testa distaccata in reflog
osservando quelli tra quelli contrassegnati con "checkout" (che identificano lo spostamento del ramo):
e09f183b HEAD@{3}: pull: Fast-forward
b5bf3e1d HEAD@{4}: checkout: moving from lost_changes to develop
b5bf3e1d HEAD@{5}: checkout: moving from 3cce27fca50177a288df0252f02edd5da5ee64fd to lost_changes
3cce27fc HEAD@{6}: commit: add statistics
417a99a4 HEAD@{7}: commit: add test
0b823d42 HEAD@{8}: commit: new utility class
d9ea8a63 HEAD@{9}: checkout: moving from develop to d9ea8a635d4c2349fcb05b3339a6d7fad5ae2a09
b5bf3e1d HEAD@{10}: pull: Fast-forward
Quelli che volevamo erano HEAD@{8}
a HEAD@{6}
(entrambi inclusi). Quindi li abbiamo ottenuti:
git cherry-pick 0b823d42..3cce27fc
Quindi la solita risoluzione di merge e commit finale ci ha lasciato con il branch lost_changes che ospita il lavoro a testa distaccata che pensavamo perduto. Questa volta fonderlo in sviluppo è stato un passo avanti veloce.