128

実行git diff --statすると、一部のファイルはリポジトリベースからのフルパスで一覧表示されますが、一部のファイルは次のように一覧表示されます。

.../short/path/to/filename.  

つまり、パスはで始まり、...短いパスのみが表示されます。

git diffスクリプトで簡単に処理できるように、すべてのファイルの完全なファイルパスをリストしたいと思います。git diff常にフルパスを表示する方法はありますか

4

8 に答える 8

130

デフォルトgit diffでは、80 列の端末に収まるように出力を切り捨てます。

--statオプションを使用して値を指定することで、これをオーバーライドできます。

--stat[=<width>[,<name-width>[,<count>]]]
       Generate a diffstat. You can override the default output width for
       80-column terminal by --stat=<width>. The width of the filename
       part can be controlled by giving another width to it separated by a
       comma. By giving a third parameter <count>, you can limit the
       output to the first <count> lines, followed by ...  if there are
       more.

       These parameters can also be set individually with
       --stat-width=<width>, --stat-name-width=<name-width> and
       --stat-count=<count>.

たとえば、出力値を非常に大きな数値に設定すると、次のようになります。

git diff --stat=10000

git リポジトリのルートからの相対パスを生成することに注意してください。

(スクリプトの場合は、どちらかというと「配管」コマンドなので、直接使用することをお勧めしgit diff-treeますが、どちらの方法でも問題ないと思います。" フロントエンドと配管コマンドは、名前変更の検出を行うかどうかを決定するなどのオプションの構成済み設定を検索します。さらに、フロントエンドは、コミットをインデックスと比較する場合と同等のことを行います。 、たとえば。つまり、構成を読み取り、適切な配管を自動的に呼び出します。)--statgit diff-treegit diffgit diff-treegit diffdiff.renamesgit diffgit diff-indexgit diff

于 2012-05-05T08:26:02.220 に答える
30

スクリプト処理の場合は、次のいずれかを使用することをお勧めします。

# list just the file names
git diff --name-only
path/to/modified/file
path/to/renamed/file


# list the names and change statuses:
git diff --name-status
M       path/to/modified/file
R100    path/to/existing/file   path/to/renamed/file


# list a diffstat-like output (+ed lines, -ed lines, file name):
git diff --numstat
1       0       path/to/modified/file
0       0       path/to/{existing => renamed}/file

これらはそれぞれ、フィールド ターミネータとして-z使用するオプションと組み合わせると、堅牢なスクリプト処理でより便利になります。NUL

于 2014-02-12T10:05:39.303 に答える
19

Bash ユーザーの場合、$COLUMNS変数を使用して、利用可能な端末の幅を自動的に埋めることができます。

git diff --stat=$COLUMNS

非常に長いパス名は切り捨てられる可能性があります。この場合、 を使用して +++/--- 部分の幅を減らすことができます。--stat-graph-widthたとえば、端末の幅の 1/5 に制限します。

git show --stat=$COLUMNS --stat-graph-width=$(($COLUMNS/5))

より一般的な解決策として、の出力を使用しtput colsて端末の幅を決定できます。

于 2013-05-24T10:54:15.380 に答える
-1

diff --statの動作が、以前はデフォルトでファイルパスを固定幅に短縮していたgit 1.7.10あたりで変更されたことがわかりました。これで、ターミナルウィンドウで可能な限り表示されるようになりました。この問題が発生している場合は、必ず1.8.0以降にアップグレードしてください。

于 2013-02-18T16:51:01.510 に答える