すでに述べたように、ステータスから除外するには、以下を使用します。
git status -uno # must be "-uno" , not "-u no"
代わりに、現在追跡されていないファイルを永久に無視したい場合は、プロジェクトのルートから次を起動します。
git status --porcelain | grep '^??' | cut -c4- >> .gitignore
以降の呼び出しでgit statusは、これらのファイルは明示的に無視されます。
更新:上記のコマンドには小さな欠点があり.gitignoreます:ファイルがまだない場合、gitignoreはそれ自体を無視します!これは、ファイル.gitignoreがgit status --porcelainが実行される前に作成されるために発生します。したがって、.gitignoreまだファイルがない場合は、次の使用をお勧めします。
echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore
これにより、ファイルが作成される前に完了するサブシェル.gitignoreが作成されます。
コマンド説明私は票の多くを得ているように私は私がより良いコマンドを少し説明したいと思います(ありがとう!):
git status --porcelain代わりに使用されているgit status --shortので、マニュアルの状態が「スクリプト用の簡単に解析形式で出力を与える。これは、短い出力に似ていますが、gitのバージョン間で安定しており、関係なく、ユーザの設定のままになります。」したがって、解析性と安定性の両方があります。
grep '^??'git status manualに??よれば、追跡されていないファイルに対応する、で始まる行のみをフィルタリングします。
cut -c4- 各行の最初の3文字を削除します。これにより、追跡されていないファイルへの相対パスのみが取得されます。
|記号はパイプ次のコマンドの入力に前のコマンドの出力を渡します。
>>そして>シンボルでリダイレクト演算子ファイルに前のコマンドの出力を追加、または上書き/それぞれ、新しいファイルを作成します。
andの代わりに使用sedすることを好む人のための別のバリアント、ここに別の方法があります:grepcut
git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore