私の同僚はちょうどこの状況にありました。彼の場合、デタッチされたヘッドにコミットがあり(R-Studioで動作します)、ツールは、これとそのSHA参照を使用してブランチを作成できることを警告しました...ただし、唯一のオプションは「閉じる」でした。 --duh !! それは情報ボックスでした-彼らは対話を閉じ、永遠に情報を失いました...
reflog
コマンドのおかげで、変更が失われていないことがわかりました。しかし、私たちの場合、はgit branch
期待どおりに機能しませんでした...または着信git pull
が何らかの理由でそれを台無しにしました。reflogから新しく作成されたブランチへの変更を釣り上げる必要がありました。
git cherry-pick 0b823d42..3cce27fc
これにより、必要なすべてのコミットがブランチに配置されました。その後、develop
問題なくブランチをマージできます。
これが誰かにとって有益である場合に備えて、「チェックアウト」(ブランチシフトを識別する)でマークされた間のコミットを調べることによって、で切り離されたヘッドのコミットreflog
を識別しました。
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
私たちが望んでいたものはなかったHEAD@{8}
にHEAD@{6}
(両方を含みます)。だから私たちはそれらを手に入れました:
git cherry-pick 0b823d42..3cce27fc
次に、通常のマージ解決と最終コミットにより、失われたと思われる分離ヘッド作業をホストするブランチlost_changesが残りました。今回はそれを開発にマージするのが早送りでした。