397

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 コマンドを作成するにはどうすればよいですか?

4

9 に答える 9

623

追跡されていないファイルを一覧表示するには、次を試してください。

git ls-files --others --exclude-standard

出力を にパイプする必要がある場合は、 andxargsを使用して空白に注意するのが賢明です。git ls-files -zxargs -0

git ls-files -z -o --exclude-standard | xargs -0 git add

追跡されていないファイルを追加するための素敵なエイリアス:

au = !git add $(git ls-files -o --exclude-standard)

編集:参考までに:git-ls-files

于 2010-09-27T06:29:49.127 に答える
79

追跡されていないファイルを削除したいだけの場合は、次のようにします。

git clean -df

x特に無視されたファイルも含めたい場合は、それに追加します。私は一日中たくさんgit clean -dfx使っています。

と呼ばれるスクリプトを記述し、git-whateverそれをパスに含めるだけで、カスタムgitを作成できます。

于 2010-09-27T05:34:30.707 に答える
62

git add -A -nあなたが望むことをします。追跡されていない変更された-Aすべてのファイルをリポジトリに追加し、追加が実行されない場所にしますが、追加された各ファイルリストするステータス出力が与えられます。-ndry-run

于 2012-04-04T14:37:44.103 に答える
33

すべてがとてもシンプルです

追跡されていないすべてのファイルのリストを取得するには、コマンドgit statusオプション-u (--untracked-files)とともに使用します。

git status -u
于 2014-11-10T09:29:24.617 に答える
31

受け入れられた回答は、スペースのあるファイル名でクラッシュします。この時点では、alias コマンドを更新する方法がわからないので、改善されたバージョンをここに置きます。

git ls-files -z -o --exclude-standard | xargs -0 git add
于 2011-12-14T14:31:21.137 に答える
8

潜在的に追加するファイルを探しているとき。からの出力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
于 2015-06-17T11:57:21.493 に答える
-3

これは、元のポスターが意図したのと同じことを行うと思います:

git add .

いくつかの警告を追加します:

  • 実行git statusして、ローカル ディレクトリがクリーンであることを確認しました
  • git diffで報告された各ファイルに対して実行しgit status、変更がクリーンであることを確認しました
  • 変更は自動化された単体テストでカバーされます
  • 変更は自動統合テストでカバーされます
  • デバッガーを使用して統合テストを実行し、動作中の新しいコードを観察するホワイト ボックスで新しい動作を確認しました。
  • すべてのリンティング/コード規則ルールを実行し、合格しました
  • すべての単体テストを実行し、合格しました
  • すべてのローカル統合テストを実行し、合格しました
  • 変更をアプリ レビュー環境に展開し、他の変更とは切り離してエンド ツー エンドで手動でテストしました
  • メイン ブランチから最新のものをマージし、すべての自動化された単体テストと統合テストを再実行して、マージの競合とテストの失敗を修正しました

さて、友よ、あなたはgit add .免責される準備ができています。

于 2012-06-04T21:36:32.650 に答える