2012-01-23 16 views
0

最近私のチームでは、より賢いgit pullをやろうとしました。いくつかの競合がシステムに現れ、その後開発者は単純にgitをリセットしました(最後のHEADにインデックスを持ち込む)。次に、開発者が1つのファイルを「コミット」し、それをリモートにプッシュしました。当然、かなり多くの変更が失われました。gitリセットコミットとプッシュの問題

しかし、誰が悪い変更をしたのか(そして悪いコミットがあったのか)を理解するのにかなりの時間を要し、回復するのにはかなりの労力が必要でした。 gitの履歴(gitまたはgitログを使用)ではgitはどのファイルがコミットされたかだけを表示しますが、これは前のファイルを上書きする場合です(このコンセプトはCVSの方が多く、gitではなく、 )。この場合、デバッグする最良の戦略は何ですか?

私がどのブランチが問題であるかを知ったら、良いコミットと悪いコミットの間でgit diffを実行すると、ファイルのリストを見ることができますが、特定のコミットだけを見ると、以前に移動したファイルコミット。

問題が完全には解明されていない場合にはお詫び申し上げます。

答えて

0

git log -p branch-in-questionの出力を見ると、変更がファイルごとに表示されます。 git checkout <some commit> -- some filesを実行してブランチを再びまっすぐにすることで、これに応じて行動することができます。すべての変更を追加し、コミットしてプッシュします。あなたはここからうまくいくはずです。