git ls-files
のようなコマンドを使用して、追跡されていないファイルのみを表示する方法はありますか?
私が尋ねている理由は、次のコマンドを使用してすべての削除されたファイルを処理するためです:
git ls-files -d | xargs git rm
追跡されていないファイルについても同様のものが欲しい:
git some-command --some-options | xargs git add
-o
のgit ls-files
オプションを見つけることができましたが、無視されたファイルも表示されるため、これは望みではありません。また、次の長くていコマンドを思いつくことができました。
git status --porcelain | grep '^??' | cut -c4- | xargs git add
ここで使用できる、より良いコマンドが必要なようです。存在しない場合、カスタムgitコマンドを作成するにはどうすればよいですか?
追跡されていないファイルを一覧表示するには:
git ls-files --others --exclude-standard
出力をxargs
にパイプする必要がある場合は、git ls-files -z
とxargs -0
を使用して空白を気にするのが賢明です。
git ls-files -z -o --exclude-standard | xargs -0 git add
追跡されていないファイルを追加するためのエイリアス:
au = !git add $(git ls-files -o --exclude-standard)
編集:参考: git-ls-files
追跡されていないファイルを削除する場合は、次の操作を行います
git clean -df
特に無視されるファイルも含めたい場合は、x
を追加してください。私はgit clean -dfx
a lotを終日使用しています。
git-whatever
というスクリプトを記述してパスに含めることで、カスタムgitを作成できます。
受け入れられる回答は、スペースのあるファイル名でクラッシュします。現時点では、エイリアスコマンドの更新方法がわからないので、改良版をここに配置します。
git ls-files -z -o --exclude-standard | xargs -0 git add
すべてが非常に簡単です
すべての追跡されていないファイルのリストを取得するにはse commandgit status with option-u(-未追跡ファイル)
git status -u
潜在的に追加するファイルを探しているとき。 git show
の出力はそれを行いますが、他にも多くのものが含まれています。次のコマンドは、同じファイルのリストを取得するのに便利ですが、他のものはすべてありません。
git status --porcelain | grep "^?? " | sed -e 's/^[?]* //'
これは、パイプラインで組み合わせて特定のパターンに一致するファイルを検索し、それをgit add
にパイプするときに役立ちます。
git status --porcelain | grep "^?? " | sed -e 's/^[?]* //' | \
egrep "\.project$|\.settings$\.classfile$" | xargs -n1 git add
私は古い質問を知っていますが、追跡されていないファイルをリストするという観点から、追跡されていないフォルダもリストする別のファイルを追加すると思いました:
Git clean操作で-n(ドライラン)を使用すると、削除するファイル(.gitignoreファイルを含む)を表示できます。
git clean -xdn
これには、追跡されないすべてのファイルおよびすべてのフォルダーを表示するという利点があります。パラメーター:
x
-すべての追跡されていないファイルを表示します(ビルド出力などのgitやその他のユーザーによって無視されるものを含む)。d
-追跡されていないディレクトリを表示n
-そしてほとんどの重要!-dryrun、つまり実際には何も削除せず、結果を表示するためにクリーンなメカニズムを使用します。私がチェックした以前の回答はすべて、コミットするファイルもリストします。以下は、まだリポジトリになく、.gitignore
の対象ではないファイルのみをリストするシンプルで簡単なソリューションです。
git status --porcelain | awk '/^\?\?/ { print $2; }'
これは、元のポスターが意図したものと同じことになると思います。
git add .