1. ホーム
  2. git

[解決済み] git ls-files: 新しいファイル(コミットされずに追加された)を識別するには?

2023-09-03 04:47:35

質問

私が git add <file> を呼び出した後、コマンド git status のようなものが表示されます。

...
new file:    <file>

同じ情報を得るために ls-files では同じ情報を得ることができません。 ls-files -tc が表示されます。

H <commited file>
H <other commited file>
H <file>

新しいファイルのためのコマンドラインスイッチは存在しないようです。ファイルはキャッシュされていると報告されているので大丈夫ですが、現時点でコミットされていないことを知るにはどうしたらよいでしょうか。

で可能なのでしょうか? ls-files の場合のように多くの出力をパースする必要がない場合)。 git status )?

どのように解決するのですか?

あなたは git diff --cached . と --name-only を指定すると、 HEAD からの相対パスで変更したすべてのファイルをインデックスにリストアップします。 また --name-status を使うと、ステータスシンボルも取得できます。 --diff-filter で、表示したいファイル群を指定することができます (例えば、新しく追加されたファイルは 'A' と表示されます)。 使用方法 -M を使って移動検出をオンにし -C でコピー検出を有効にします。

書いたものを厳密に読み取るために git diff --cached --name-only --diff-filter=A は HEAD 以降に追加された、HEAD に存在しないすべてのファイルをリストアップします。