奇妙なGitグリッチ、ほぼ10時間の作業に値する

私は昨日、長く秩序ある退屈な仕事を終わらせるために一日中一生懸命働いた。 変更を加えてプッシュ用に送信したのは十分遅かった。 Geetは、新鮮な編集があるため、できないと常習的に呪いました。 OK、引っ張って、押して。 今では普通のように見えますが、眠ることができます。



テストサーバーで確認して、リンクを同僚に送信し、最終的に決定しました。 昨日の時点でテスト版が表示されました。 奇妙なことに、編集内容がなくなったことをもう一度確認しましたが、リポジトリに新たな変更はありませんでした。 私はすぐにテストグリッチの問題について同僚と相談し、明日まで問題の検索を延期することにしました。



翌日、テストサーバーへの展開を再度行いましたが、頑固に古いバージョンが表示されました。 Gitaのログを確認することにしました...私のコミットメント...それだけではありません! それはどこにも存在せず、ローカルコピーにもリモートにもありませんでした。 ディスク上のソースコードにさえありませんでした。 エディターで開いたままのファイルは空でした。 その瞬間に私を現実と結びつけた唯一の事実は、プロジェクトのコンパイルされたjsファイルでした。これはソースコードが組み立てられた後も残っていました。 昨日そのままにしたように機能しました。



現時点で最も価値のあるものを別のフォルダーにコピーして、何が起こっているのかを把握するために登りましたが、同時にコンパイル済みのjsとソースマップからソースを復元するのにどれくらい時間がかかるのかと思いました。



何が起こったのか、それを修正する方法は?



しばらくして、Googleが「 Recovering From a Disasterous Git-rebase mistake 」という記事に私を連れて行ってくれました。 事件は次のとおりでした。 理由は不明ですが、gitは新しいコミットを「失われた」リベースし、古いコミットからの変更のチェーンを継続しました。



幸いなことに、Gitではすべてが失われるわけではありません。 .gitフォルダーには、さまざまなブランチで行ったすべてのコミットのログが含まれています。 彼らは道に沿ってうそをつく
 .git/logs/refs/heads/.   ,   ,       .       . 
      



git checkout -b itsavedmyass b6d7cf192c46

.



, . , , .








.git/logs/refs/heads/. , , . .



git checkout -b itsavedmyass b6d7cf192c46






.



, . , , .







All Articles