42

どのコミットが特定のファイルに特定のコード行を導入したかをGITが見つけることは可能ですか? これは、その行が追加されてから多くのコミットがあったことを前提としています。それとも、行が存在するファイルのすべてのコミットの git Blame を見ながら、スクリプトで実行する必要があるものですか?

明確にするために

元のファイル->行をファイルに追加してコミット->他の多くのコミットで他の行を追加し、コードを変更

4

4 に答える 4

37

git blame -l filename行が変更されたときからSHA1ハッシュを取得するために使用できます。

--reverseを使用することもできます。

- 逆行

履歴を後方ではなく前方に歩きます。行が表示されたリビジョンを表示する代わりに、行が存在した最後のリビジョンを表示します。これには、START..ENDのように、STARTに非難のパスが存在する一連の改訂が必要です。

参照:http ://www.kernel.org/pub/software/scm/git/docs/git-blame.html

于 2012-12-03T21:37:59.967 に答える
2

行が追加されてから変更されていないと仮定すると、単純に次のようになります。

git blame <that file>そして、あなたが探している行を探します。

行が追加されてから変更されている場合でもgit blame、行が変更された最後のコミットを見つけて(元の行に表示されるshaはgit checkout <sha>~1どこにありますか)、もう一度履歴に戻ることができます。その行。shagit blamegit blame

于 2012-12-03T21:34:45.467 に答える