2017-12-22 15 views
1

私のステージングブランチで、1つのマイグレーションファイルを持つmigrations_larというフォルダをコミットしました。私は11月29日にそれを追加した箇所を見つけました。ステージングブランチを見ると、migrations_larフォルダ全体がなくなりました。私はそれが消えたときを知る必要があります。私はまた、他のものが消えたかどうかを知りたい。ここでGithubが私のフォルダを紛失しました

は、私が学んだことです:

私はフォルダがメッセージ「パートナーウェブフックを実装する」を持っている追加どこコミットgit log -- database/migrations_lar git log -- database/migrations_lar

を走りました。それらの他のコミットはそのフォルダを削除しません。

私はGitHubの上で取得し、様々なコミット後にステージングブランチの状態を確認すると、私はフォルダが表示され、定期的に消えることを見る: enter image description here 強調表示の行は、私がコミット持っていない、とmigrations_larフォルダを持っていません。 ボトムコミットには、自分のファイルが入っていない、ずっと前に最初に作成されたときにmigrations_larフォルダがあります。

これはいつ、どのように失われてしまったのか、何が失われてしまったのか、まったく困惑しています。どんな助け?

アップデートは

ヶ月前、私はそれでLaravelのデフォルトの移行でmigrations_larフォルダを追加しました。 ある時点で、誰かがファイル、したがってフォルダを削除しました。

11月29日に、フォルダと新しい移行を追加しました。

それ以降のある時点で、誰かがオリジナルの削除と悪いマージを作成しました。これがどうして起こったのか分かりません。そのファイルがいつ削除されたかを示すコミットをどのように見つけることができたかについての手掛かりはありますか?

+1

あなたはおそらく認識していますが、何も紛失していないことを明示的に明確にすることができます。コミットの1つがファイルを削除します。 Gitはフォルダーを追跡しないので、フォルダー内のファイルを削除するとフォルダーも削除されます。マージとは、ファイルが必ずしも消滅して履歴に現れるとは限りません。不正なマージコミットによっても削除されている可能性があります。 'git log --stat'を試してください。 – Ryan

+0

@ライアン助けてくれてありがとう。私はgitがフォルダを管理していないことを認識しています。削除された場所にコミットする* HAS *があります。私はただ見つけることができません。百以上のコミットがあり、私はそれらの多くを通過しました。私はそれが悪いマージコミットだと思うが、それはそのコミット権の変更に反映されるだろうか?悪いマージの可能性が高い原因については、私の更新をお読みください。 – ajon

+1

バイセクトを試しましたか? – Ryan

答えて

1

ありがとう@ライアン。問題を引き起こしたコミットを見つけるためにgit bisectを試しました。そして私はそれが助けと思った。私はそれがコミットを特定したと思うが、私はそれを無視した。

私はgit checkout HEAD^; ls database/migrations_larと呼んだところ、フォルダを持っているコミットが見つかりました。私はフォールティングコミットのコミット文字列を見つけ、git show https://github.com/completesolar/HelioTrack/commit/226d0b8f940a7bec524360a0f631d87f46dfaab8を実行しました。

案の定、私は私がプルリクエストをマージするとき、これはだったコミット実現次に

...017_11_28_100558_create_organizations_table.php | 54 --- 

を見ました。私はそのプルの要求を見直し、十分に私はコードレビューの完全なことを忘れていた。プルリクエストから、私はプルリクエストで30回のコミットをリビジョンし、問題のあるマージの失敗を発見しました。

1

もう1つのアプローチは、bisectに加えて、削除に焦点を合わせてgit logです。
を参照してくださいMacの "Find when a file was deleted in Git"

git log --diff-filter=D --summary | \ 
    sed -n '/^commit/h;/\/some_dir\//{G;s/\ncommit \(.*\)/ \1/gp}' 

git log --diff-filter=D --summary | \ 
    sed -n -e '/^commit/h' -e '\:/:{' -e G -e 's/\ncommit \(.*\)/ \1/gp' -e } 

フォルダ内のファイルが消えているすべてのコミットをリストします。