У меня была похожая проблема.Я нашел git reflog
спасателем жизни.В случае, если это поможет проиллюстрировать его использование, вот вывод:
e3191c5 HEAD@{0}: checkout: moving from ec31ccf0735240d0cdc5a44fd443039c3caa43f0 to master
ec31ccf HEAD@{1}: commit: Added code and data for simulation.
781b9ee HEAD@{2}: checkout: moving from 3bd804e635b913840c71b7f8a33665460580d45f to 781b
3bd804e HEAD@{3}: checkout: moving from master to 3bd804
Моя ситуация была несколько иной в том, что я сделал коммит, находясь в отсоединенном состоянии HEAD, начиная с очень старого коммита.
Если бы я просто хотел слить ec31ccf0735240d0cdc5a44fd443039c3caa43f0
(он же ec31ccf
, где я имел ) в master
, я думаю, что git merge ec31ccf
или git rebase ec31ccf
могли бы сработать.Но в моем случае это в основном слияние древней истории (с конфликтами слияний и т. Д.).
Вместо этого я просто хотел восстановить то, что сделал на ec31ccf
, и git cherry-pick ec31ccf
работал хорошо.