2012-01-03 4 views
0

3は、リモートブランチ上で作業している元に戻すのない歴史を逆戻りしないと何とかの間に2つのコミットが〜40個のファイルが元に戻された - しかし、がありますこれらのファイルの履歴は元に戻りません。私たちは、これがどうして起こったのか分かりません。ここでgitの - ファイル削除や変更は、予期せずに(同じ名前のローカル追跡ブランチで)私たちの開発者の

は何が起こったかの簡単な例です:

  • 開発者ジョーを、HelloWorld.javaに「するSystem.out.println(」こんにちは ")を追加し、ローカルにコミットし、このリモートブランチに彼の変更をプッシュ

  • いくつかの他のコミットが

  • 開発者ジェーンHelloWorld.javaに「するSystem.out.println(」世界 ")を追加します(HelloWorld.java触れていない)リモートブランチ上で発生する、ローカルにコミットし、彼女に変更をプッシュこのリモートブラNCH

  • いくつかの他のコミットは(HelloWorld.javaに触れていない)リモートブランチ上で発生

このファイルの完全なログを確認する場合は、表示されます。

  • ジェーン、追加を世界3:00 PM
  • ジョー、追加こんにちは、午後2:00

だからあなたが期待しますなるように、このファイルの現在の状態:

System.out.println("Hello") 
System.out.println("World") 

そして、あなたがコミット間の差分を行うと見ることができ、十分確認してください。

System.out.println("Hello") 
+ System.out.println("World") 

これ以上の変更はありません。実際には、現在の状態は次のとおりです。

System.out.println("Hello") 

状況はより複雑です。修正に加えて、我々はまた、ファイルを追加し、それらの変更のすべてが元に戻されたなどのファイルを、名前を変更:ファイルの名前が変更されたファイルは、など、元の名前に戻って変更され、削除されている追加はしかし、開発者はこれまでのいずれかがこれらを元に戻したコミット押されていませんファイル。我々はまた、唯一の私たちの変更はすべて、互いのすべてから単離されたとしてコマンドをプッシュ+基本的なプルを使用

は完全に罰金automerged。私たちは、などリベース、チェリーピック、

Githubのは、それは基本的に変更は元に戻された唯一の証拠だ機能「この二つのコミットの間でビュー比較」を持っているような派手な何もしませんでした。

私はこれをさらにデバッグを助ける私が実行できる任意のgitコマンドを探しています。私たちはどのように進めるのか本当にわからない。

ありがとうございました

+0

デベロッパーが同じブランチで作業していたことは確かですか?多分、変更は別のブランチで見つけることができます。 (誰もフォース/非フォワードフォワードプッシュを行いました(履歴を削除するでしょうか?) – knittl

+0

すべての開発者は同じブランチで作業しています。私は他のすべての支店をチェックしました(私たちは唯一のカップルを持っています)、その変更はそこに見つかりませんでした。 – nogridbag

答えて

0

同じブランチで変更が行われていることを確認してください。コミット差分は、差分を表示することができますが、彼らは別の枝にあるかもしれません。

ジョーのコミットと最新の間でgit bisectを使用し、HelloWorld.javaをチェックして、各バイセクトポイントにラインがあるかどうかを確認します。

+0

私はこれをしましたが、本当に新しい情報を提供しませんでした。それはあるコミットにあり、別のコミットになっています。いくつかのコミット(4つまたは5つ)しかないので、それぞれを本質的に調べることができます。これらの4つまたは5つのコミットのいずれも、変更が元に戻ったことを示していません。 – nogridbag

+0

gitツリーを見ると、 "良い"パスでは、変更があります。別のパスは "良い"パスとマージして最新のヘッドになりますが、 "良い"パスの変更は単に失われます。 – nogridbag

0

チェリーは、3つの失われたコミットを選び、現在のヘッドにそれらを再適用しました。私たちはまだこれがどのように起こったのか説明できません。ちょっとおっかないね。しかしそれはもはや問題ではない。

関連する問題