Gitは:どのように複数ファイルの歴史を持っているコードを解析するには?

StackOverflow https://stackoverflow.com/questions/2096491

  •  21-09-2019
  •  | 
  •  

質問

私は、既存のプロジェクトの周りのファイルのトンを移動しようと思います。私はこれを行う前に、私は複数ファイルの歴史を持っているコードを解析するために使用されるいくつかのテクニックをしっかり把握しているしたいと思います。

はどのように依頼するのgitを使用することができます:「?どこのコード行はどこから来たの」コンテンツは、それの人生の時間に複数のファイルを移動したときに?

私はgitのは、私はこれを頼むことができるはずのようにそれはそうので、私は方法がわからないんだけど(正当な理由のために)明示的に名前の変更を追跡することはありません知っています。これを可視化する方法のがある場合はそれも知っているのは素晴らしいことと思います。

役に立ちましたか?

解決

私はgitのツールボックスには3つのツールを見てお勧めします。最初のものは非常にそれがCVSであると同じであるせい、です。それは、最後のコミットは、ファイル内の各行に触れ示しています。あなたが前にあったものを見る見たい場合は、それが以前のラインと見て触れたコミットを取ることができますコミットします。

git show <sha1_of_interesting_commit>^ -- file/path

あなたはその前に何が起こったかを確認する責任を繰り返すことができます。

git blame <sha1_of_interesting_commit>^ -- file/path

第2のツールは、名前の変更を過ぎたファイルを追跡するために--followを使用しています。

git log --follow -- file/path

第三 - そしておそらく最も有用なツールは、 - ログインするつるはしオプションです。変更テキストの特定のビットが含まれ、取り除か導入または変更された行のためにこの検索履歴。これは、関数名のようなものを追跡するのに特に有用です。これは、特定のコミットにファイルに新しいかもしれないが、それは別のソースファイルから来たのか?それへの通話が同時に添加して、またはそれは?

を移動する前に、
git log -S"Interesting_Function"
あなたがパッチまたはSTATオプション(例えば-pまたは--stat)を使用している場合は、

出力は、その変化の全体の変化が表示されてどこにも--pickaxe-allを使用しない限り、実際に検索文字列を関係者のファイルに限定されます。

文字列のすべての現在の出現がどこにあるかを示すためにgit grepと組み合わせることで、つるはしは非常に便利な歴史マイニングツールです。

他のヒント

git blameは、あなたが「どこのコード行はどこから来たの?」尋ねるために使用するものです。それは名前の変更を処理する場合、私は知りません。おそらく行います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top