2017-10-30 15 views
0

私はこの状況がどのように起こっているのかを把握しようとしています。Gitが削除されました/削除コミットなしですでにマージされたファイルを削除しました

ファイルはブランチで作成され、次にマスターにマージされ、マスターには何も表示されません。実行したとき:

git checkout master 
git merge my_branch 

「最新の状態」が表示されます。

私はマスターから、実行します。

git log --all --/path/to/file 

それはファイルが最初に作成された場合のみ初期のコミットを示したが、それはディレクトリ内に実際に存在しません。しかし、ブランチ自体をチェックアウトすると、ファイルがそこにあります。

そのため、ファイルは何らかの形で何らかの形でマスターから消えてしまっていますが、削除コミットと関連していないようです。

これは不可能なようです。これを調べる方法に関するアイデアや提案は非常に高く評価されます。

+0

'--follow'フラグを使用している' git log'コマンドに追加して、結果を私たちと共有できますか? – Mureinik

+0

名前が変更される可能性があります。その場合、ログは実際には最初のコミットのみを表示します。名前の変更は単にdelete + addです。 – HuStmpHrrr

+1

pickaxeヘルプを使用していますか? http://www.philandstuff.com/2014/02/09/git-pickaxe.html –

答えて

1

あり、興味深い側の項目の多くは、コメントではまだだが、私はあなたを疑う:

git log --all -- path/to/file 

History Simplificationによってダウントリミングなっています。

これは、--full-historyを追加するか、ヒストリの簡略化を完全に無効にするか、または-mを追加してマージを分割することで回避できます(簡略化することはありません)。私は-mメソッドをテストしていません。

+0

ありがとう、@torek、これは、完全な歴史の詳細を表示するようです(と私はまた、それがコミットを示している理由もわかりません -/path/to-/file。--full-historyスイッチと共に--name-statusを許可していないようです。 –

+0

あなたはそれらを組み合わせることができます(そして '--follow'でも可能ですが、 '--follow'はいくつかのケースをよく見かける恐ろしいハックです):' git log --name-status --full-history --all - path/to/file'、例えば – torek

+0

特に--name-statusを指定すると、他のコミットでファイルが実際に削除された場所を示す非常に有用なフラグとなりました。これに関係なく、これは信じられないほど役に立ちました、ありがとう、@torek! –

関連する問題