2009-07-15 12 views
2

masterブランチのみを持つリポジトリがあります。どういうわけか、開発者が自分のローカルマスタを統合してプッシュし、他のコミットを失うことがあった状況になっています。特定のファイルのログを見るときにGitコミットがmasterに見つかりました。

いくつかのコミットの場合、プロジェクトのルートからgit logを実行すると、コミットが表示されます。それらのファイルの1つを選択してgit logを実行すると、ログにコミットが表示されません。そのコミットの変化は、頭のチェックアウトにも反映されません。

どのようなアイディアがありますか?このような状況がどうして起こりうるのですか

+0

'git log --follow FILE'を実行すると、マージから失われたコミットを見ることができますか?これは私に起こり、ファイルの名前は変更されませんでした。 –

答えて

6

おそらく、マージをコミットする前に競合を解消している間に、開発者がローカルマージで失ったファイルの変更に似ています。

あなたは、プロジェクトのルートディレクトリに次のコマンドを試してみてください:ファイルがそれぞれ変更された時

git log --stat -c 

ルックコミット、およびこれらすべての変更がマージに含まれているかどうかを確認します。

2

あなたは

$ git log file 

は、それが現在のブランチから始まるすべてのコミットを表示していまし実行する場合(異なる可能性があります。チェックアウトの両方の「gitのブランチ」出力が同じ枝上にある)が、唯一のものをコミットました与えられた経路に影響を与える変化を有する。あなたが他のブランチを持っていなくても、分離されたHEAD、つまり名前のないブランチにいるかもしれません。

ファイルが本当に変更された場合は、「git show」または「git whatchanged」(または「git show master」)もチェックします。
マージコミットをチェックするには、 "git show --cc"または "git show --raw --abbrev"を使用します。

リカバリには、 "git reflog"/"git log -g"を使用できます。

関連する問題