git status
を実行すると、接頭辞new file:
が付いたファイルのリストを取得します。このリストのみを取得するにはどうすればよいですか?このファイルを小さなシェルスクリプトの単純なループで処理したいと思います。
git status --porcelain | grep "^A" | cut -c 4-
のようなものを使用します
Grepを使用してgit出力を解析しないでください。 Gitには、ほぼ間違いなく、探しているものが組み込まれています(本当に高度なものを使用する場合を除く)。git diff
を使用して、変更を表示できます。 --name-only
はファイル名のみを表示します。 --diff-filter=A
は、追加されたファイルのみをリストします。
すでにインデックスに追加した新しいファイルを表示する場合は、--cached
を使用します。それ以外の場合は省略します。 HEAD
との両方の差分を表示するには。
コマンドは次のようになります。
git diff --name-only --diff-filter=A --cached # All new files in the index
git diff --name-only --diff-filter=A # All files that are not staged
git diff --name-only --diff-filter=A HEAD # All new files not yet committed
git status --shortを使用して、ファイルのリストを取得できます。
「git status」の出力を解析する代わりに、おそらくよりエレガントに使用できます
git ls-files -o --exclude-standard
git status
と同様に、ls-files
は、現在の作業ディレクトリに関連する出力を生成します。
--full-name
オプションを含めることもできます。
git ls-files -o --exclude-standard --full-name
git status | grep "new file:" | cut -c 14-
git status | grep "modified:" | cut -c 14-
新しいファイルのリスト、またはgitに追加するファイルを取得するには、git statusおよびgit status -s | grep ??
などのgrepコマンドを使用して取得できます
root@user-ubuntu:~/project-repo-directory# git status -s | grep ??
?? src/.../file1.js
?? src/.../file2.js
?? src/.../file3.js
....