のマンページは、選択した一連のツリーオブジェクトをgit diff-tree
使用して結合された diff ( ) を実行できることを示唆しています。これにはオプション--cc
を使用する必要があります。しかし、私は何も出力する--stdin
ことができません。--stdin
例:
$ git diff-tree --stdin
a b
a b
$
ここで私はタイプしましたa<Space>b<Enter>Ctrl-D:a
b
私は何を間違っていますか?
のマンページは、選択した一連のツリーオブジェクトをgit diff-tree
使用して結合された diff ( ) を実行できることを示唆しています。これにはオプション--cc
を使用する必要があります。しかし、私は何も出力する--stdin
ことができません。--stdin
例:
$ git diff-tree --stdin
a b
a b
$
ここで私はタイプしましたa<Space>b<Enter>Ctrl-D:a
b
私は何を間違っていますか?
コミットまたはツリー オブジェクトの完全なハッシュを に提供する必要がありますgit diff-tree --stdin
。
$ git log -3 --pretty=%H
a30ec5de57bbfa0c19045f3c094ec6eb4d808eb4
f0939d956ad9ef2a00360139a6f1d1ad66accbe5
fcdb73de293b2442231e5d8ce19f9c7d1640d186
$ # lines typed on stdin are marked by ->
$ git diff-tree --stdin
->fcdb73de293b2442231e5d8ce19f9c7d1640d186 a30ec5de57bbfa0c19045f3c094ec6eb4d808eb4
fcdb73de293b2442231e5d8ce19f9c7d1640d186
:040000 040000 e2aed2af18fb5293903a0d0b78c23e00a893394d c56666f973b77d92d52b68a14c5a26ac3508571a M example
:040000 000000 7cc3373fd5cad3bfe6ec261e9dcc3a9e97efe488 0000000000000000000000000000000000000000 D prc
:000000 040000 0000000000000000000000000000000000000000 275872c00a9f51016d2273419345b3b1d7535630 A src
->275872c00a9f51016d2273419345b3b1d7535630 7cc3373fd5cad3bfe6ec261e9dcc3a9e97efe488
275872c00a9f51016d2273419345b3b1d7535630 7cc3373fd5cad3bfe6ec261e9dcc3a9e97efe488
:100644 100644 f26b2198fd9a0103f57a5bd828e58043507ea7b7 c52116f6d185548061058099dfe4c9e50d523aff M chord.cpp
:100644 100644 fcbfcdc036fb53733176ed30fd82eb261a990d5b 403e323f332a18b45dfdebfd3a8bfb1a62158bb4 M chord.hpp
:100644 100644 11a931f795b44cd916e1607d819eed4d5342edba 333b596faf596d73758bce949e6d86e596153126 M polyphonic_track.cpp
:100644 100644 7196835de2385d3f1e0b20073d327cb432ed436c f9fbbac93ef6fc19ae99113ff39a06f4df50720e M polyphonic_track.hpp
別の方法:
git rev-list HEAD | git diff-tree --stdin
しかし、Git 2.27 (2020 年第 2 四半期) より前は、" git diff-tree --pretty --notes
" はメモ サブシステムを初期化するのを忘れていたため、アサーション エラーが発生していました。
Taylor Blau ( )によるcommit 5778b22 (2020 年 4 月 21 日)を参照してください。( 2020 年 4 月 28 日にコミット 5a96715でJunio C Hamanoによってマージされました)ttaylorr
gitster
diff-tree.c
: 必要に応じて機械をロードする報告者: Jeff King
署名者: Taylor Blau
承認者: Jeff King7249e91での導入以降("
[
revision.c](https
://github.com/git/git/blob/5778b22b3d690495e724276663c36ccd5329da4d/revision.c): --notes コマンドライン オプションをサポート"、2011-03-29、Git v1.7.6 -rc0 --マージはバッチ #0にリストされています)、'--notes
' をメモをフォーマットする任意のオプション ('--pretty
'、' ' など)と組み合わせると--format="%N"
、実行時にアサーションが失敗します。$ git rev-list HEAD | git diff-tree --stdin --pretty=medium --notes commit 8f3d9f354286745c751374f5f1fcafee6b3f3136 git: notes.c:1308: format_display_notes: Assertion `display_notes_trees' failed. Aborted
この失敗は、diff-tree が '
load_display_notes
' を呼び出してメモ機構を初期化していないことが原因です。
--notes
' ' と上記の別のオプションの両方を渡す必要があるため、通常、この失敗はトリガーされません。たとえば、' '
の場合、' ' を設定すると、' ' は最終的に ' ' を呼び出しますが、これは非 NULL ' ' を想定しています。--pretty
opt->verbose_header
show_log()
format_display_notes()
display_note_trees
Notes 機構を初期化しないと '
display_note_trees
' が残るNULL
ため、アサーション エラーが発生します。オプションを解析した後、メモ機構を初期化することでこれを修正します。