23

Git で、ファイル内の特定の行の以前のバージョンをすべて行番号で一覧表示することは可能ですか?

これが役立つ理由は、ログに記録されたスタック トレース レポートに基づいて問題を簡単にトラブルシューティングできるようにするためです。

つまりundefined method exception、特定のファイルの 100 行目にログが記録されています。ファイルは多くのコミットに含まれているため、変更が加えられていなくても、指定された行がファイルを上下に「移動」した可能性があります。

最後のxコミットにわたって、特定のファイルの100行目の内容を出力するにはどうすればよいですか?

4

7 に答える 7

10

これにより、意味のあるすべてのリビジョンがファイルの行を表示するように呼び出さgit blameれます。$LINE$FILE

git log --format=format:%H $FILE | xargs -L 1 git blame $FILE -L $LINE,$LINE

いつものように、blame は各行の先頭にリビジョン番号を示します。追加できます

| sort | uniq -c

この行を変更したコミットのリストのような集計結果を取得します。(コードだけが移動された場合、行の異なる内容に対して同じコミット ID が 2 回表示される可能性があります。より詳細な分析を行うには、git blame隣接するコミットの結果を時間差で比較する必要があります。誰かいますか? )

于 2013-07-23T07:19:47.840 に答える
2

git blame <file> -L <line>,<line>

于 2013-07-22T14:49:38.653 に答える
2

実際には、Git に同梱されている洗練された GUI があり、特定の行がどのように変化したかを簡単に前後に移動できます。試す

git gui blame <file>

リンクの横にあるリビジョンをクリックすると、「時間をさかのぼる」ことができます。

于 2013-07-23T07:29:22.633 に答える
1

の後にいると思いますgit blame。各行を追加したコミットがわかります。

実行git blame the-file-that-has-that-line.txtして 100 行目に行くと、どのコミットがそれを追加したか (いつ、誰によってコミットされたか) がわかります。

于 2013-07-22T12:03:05.943 に答える
-2

git blame達成するために使う

それが機能するかどうかを確認します

NAME
       git-blame - Show what revision and author last modified each line of a file

SYNOPSIS
       git blame [-c] [-b] [-l] [--root] [-t] [-f] [-n] [-s] [-e] [-p] [-w] [--incremental] [-L n,m]
                   [-S <revs-file>] [-M] [-C] [-C] [-C] [--since=<date>] [--abbrev=<n>]
                   [<rev> | --contents <file> | --reverse <rev>] [--] <file>

DESCRIPTION
       Annotates each line in the given file with information from the revision which last modified the line. Optionally, start annotating from the given revision.
于 2013-07-23T07:22:19.757 に答える