可能性のある複製:
Gitバージョン管理を使用してファイルの変更履歴を表示
特定のファイルの履歴をステップスルーしたい場合があります。以前はP4Vを使用していましたが、これは非常に迅速で直感的でした。
これをgitに切り替えることは今や大変な作業です。
私はSOを検索し、一般的に推奨されるいくつかのguiを試しました:github、gitk、gitg、git-gui。
これらはすべて、手動でコマンドを実行する必要性を取り除きますが、ワークフローはこれと同じです。ファイルの履歴を表示します。コミットの表示。多数の無関係なファイルの差分を検索します。それは遅くて反復的です。
すべてのデータはレポジトリにあるため、この単純な一般的なユースケースをこれ以上合理化できない理由はありません。
誰でもこれを行うツールを推奨できますか?またはコマンドラインを使用して私が望むことを行うより効率的な方法をお勧めできますか?
提案をありがとう。
これを試しましたか:
gitk path/to/file
Git logを使用して、検索中に差分を表示できます。
git log -p -- path/to/file
git log -p
は、選択されたすべてのコミットに対してパッチ(diff)を生成します。単一のファイルの場合は、git log --follow -p $file
を使用します。
特定の変更を探している場合は、探しているものが変更された場所が見つかるまでコミット数を半分に分割することにより、log(n)ビューで 変更を見つける にgit bisect
を使用します。
また、git blame
を使用して、それが何であるかを知っている場合は、問題の 行の変更に従う を使用して履歴を振り返ることを検討してください。このコマンドは、特定の行に影響する最新のリビジョンを表示します。誰かがそれを時間の経過とともに微調整した場合、いくつかのバージョンに戻って何かが導入された最初の変更を見つける必要がありますが、それは良いスタートを切ることができます。
最後に、GUIとしてのgitk
パッチをすぐに表示します クリックしたコミットに対して。
例 :
私にとっての主な質問は、あなたが実際に何を見つけようとしているのでしょうか?特定の一連の変更がそのファイルに導入されたときに、それを見つけようとしていますか?
これにはgit blame
を使用できます。各行にSHA1と変更された日付の注釈が付けられます。 git blame
は、特定の行がいつ削除されたか、または興味がある場合はどこに移動されたかを通知することもできます。
特定のバグが導入されたときに見つけようとしている場合、git bisect
は非常に強力なツールです。 git bisect
は、履歴のバイナリ検索を行います。 git bisect start
を使用して二分法を開始し、git bisect bad
を使用してバグが存在するコミットをマークし、git bisect good
を使用してバグのないコミットをマークできます。 gitは2つの間のコミットをチェックアウトし、それが良いか悪いかを尋ねます。通常、わずかな手順で障害のあるコミットを見つけることができます。
Gitを使用したことがあるので、パッチ履歴を手動で調べて何かを見つける必要性はほとんどありません。ほとんどの場合、gitは必要な情報を実際に探す方法を提供してくれるからです。
特定のワークフローを実行する方法については考えず、必要な情報をより多く考えようとすると、多くのワークフローが(私の意見では)はるかに単純で高速になります。