168

重複の可能性:
Gitバージョン管理を使用してファイルの変更履歴を表示する

特定のファイルの履歴を確認したい場合があります。以前はP4Vを使用していましたが、これは非常に迅速で直感的でした。

  1. ファイルを右クリックして、履歴を選択します。
  2. 日付をスクロールして、その日付にそのファイルで何が変更されたかの正確な差分を確認します。単純。

gitに切り替えることは、今では大変な作業です。

  1. 「gitlogファイル名」
  2. 履歴を見て日付を選び、ハッシュをコピーします
  3. 「gitdiffハッシュ」
  4. 興味のあるファイルで変更されたものの差分をスクロールします。
  5. いいえ、そうではありません。別の日付を試してみましょう。手順2に戻り、すすぎ、繰り返します。

私はSOを検索し、一般的に提案されているGUIのいくつかを試しました:github、gitk、gitg、git-gui。

これらはすべて手動でコマンドを実行する必要をなくしますが、ワークフローはこれと同じです。ファイルの履歴を表示します。ビューコミット; 無関係なファイルの多くの差分を検索します。それは遅くて反復的です。

すべてのデータがリポジトリにあるため、この単純な一般的なユースケースをこれ以上合理化できなかった理由はわかりません。

誰かがこれを行うツールをお勧めできますか?またはコマンドラインを利用して私が望むことを行うためのより効率的な方法はありますか?

提案をありがとう。

4

4 に答える 4

193

git logを使用して、検索中に差分を表示できます。

git log -p -- path/to/file
于 2012-03-21T15:14:44.513 に答える
152

これを試しましたか:

gitk path/to/file
于 2012-03-21T15:37:21.280 に答える
53

git log -p選択したすべてのコミットに対してパッチ(diff)を生成します。単一のファイルの場合は、を使用しますgit log --follow -p $file

特定の変更を探している場合は、探しているものが変更された場所が見つかるまでコミット数を半分に分割して、log(n)ビューの変更を見つけるためgit bisectに使用します。

また、それが何であるかを知っている場合は、問題の行の変更を追跡するためにgit blame使用して履歴を振り返ることを検討してください。このコマンドは、特定の行に影響を与える最新のリビジョンを表示します。誰かが時間をかけて微調整した場合に何かが導入された最初の変更を見つけるために、いくつかのバージョンに戻る必要があるかもしれませんが、それはあなたに良いスタートを与えるかもしれません。

最後にgitk、GUIは、クリックしたコミットのパッチをすぐに表示します。

ここに画像の説明を入力してください

于 2012-03-21T15:28:41.037 に答える
12

私にとっての主な質問は、実際に何を見つけようとしているのかということです。そのファイルに特定の変更のセットがいつ導入されたかを調べようとしていますか?

これに使用できますgit blame。各行にSHA1と変更された日付が注釈として付けられます。git blameまた、特定の行がいつ削除されたか、またはそれに興味がある場合はどこに移動されたかを通知することもできます。

あなたが見つけようとしているなら、特定のバグが導入されたとき、それgit bisectは非常に強力なツールです。git bisectあなたの履歴を二分探索します。を使用git bisect startして二等分を開始git bisect badし、バグが存在git bisect goodするコミットをマークし、バグがないコミットをマークすることができます。gitは2つの間のコミットをチェックアウトし、それが良いか悪いかを尋ねます。通常、数ステップ以内に誤ったコミットを見つけることができます。

私はgitを使用したことがあるので、パッチ履歴を手動で調べて何かを見つける必要はほとんどありません。ほとんどの場合、gitは必要な情報を実際に探す方法を提供してくれるからです。

特定のワークフローを実行する方法をあまり考えずに、必要な情報をもっと考えようとすると、おそらく多くのワークフローが(私の意見では)はるかに単純で高速になります。

于 2012-03-21T15:38:33.993 に答える