どのコミットが特定のファイルに特定のコード行を導入したかをGITが見つけることは可能ですか? これは、その行が追加されてから多くのコミットがあったことを前提としています。それとも、行が存在するファイルのすべてのコミットの git Blame を見ながら、スクリプトで実行する必要があるものですか?
明確にするために
元のファイル->行をファイルに追加してコミット->他の多くのコミットで他の行を追加し、コードを変更
どのコミットが特定のファイルに特定のコード行を導入したかをGITが見つけることは可能ですか? これは、その行が追加されてから多くのコミットがあったことを前提としています。それとも、行が存在するファイルのすべてのコミットの git Blame を見ながら、スクリプトで実行する必要があるものですか?
明確にするために
元のファイル->行をファイルに追加してコミット->他の多くのコミットで他の行を追加し、コードを変更
git blame -l filename
行が変更されたときからSHA1ハッシュを取得するために使用できます。
--reverseを使用することもできます。
- 逆行
履歴を後方ではなく前方に歩きます。行が表示されたリビジョンを表示する代わりに、行が存在した最後のリビジョンを表示します。これには、START..ENDのように、STARTに非難のパスが存在する一連の改訂が必要です。
参照:http ://www.kernel.org/pub/software/scm/git/docs/git-blame.html
行が追加されてから変更されていないと仮定すると、単純に次のようになります。
git blame <that file>
そして、あなたが探している行を探します。
行が追加されてから変更されている場合でもgit blame
、行が変更された最後のコミットを見つけて(元の行に表示されるshaはgit checkout <sha>~1
どこにありますか)、もう一度履歴に戻ることができます。その行。sha
git blame
git blame