1. ホーム
  2. git

[解決済み] gitです。現在の未追跡ファイルをすべて無視するには?

2022-03-04 17:28:33

質問

git リポジトリの追跡されていないファイルやフォルダをすべて無視する便利な方法はありますか?
(私は .gitignore .)

そこで git status であれば、再びきれいな結果が得られます。

解決方法は?

すでに言われているように、ステータスから除外するには、次のようにすればよい。

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 '^??' で始まる行のみをフィルタリングします。 ?? によると、これは ギットステータスマニュアル 追跡されていないファイルに対応します。
  • cut -c4- は、各行の最初の3文字を削除し、追跡されていないファイルへの相対パスだけを提供します。
  • | 記号は パイプ これは、前のコマンドの出力を次のコマンドの入力に渡すものです。
  • その >>> 記号は リダイレクト演算子 は、それぞれ直前のコマンドの出力をファイルに追加したり、新しいファイルを上書き/作成したりするものです。

別バリアント を好む人のために を使って sed の代わりに grepcut は、別の方法です。

git status --porcelain | sed -n -e 's/^?? //p' >> .gitignore