Git で追跡されていないファイルを無視する

John Wachira 2023年6月20日
Git で追跡されていないファイルを無視する

この記事では、Git リポジトリで追跡されていないファイルを無視するために使用できる 2つの方法について説明します。 ローカル リポジトリに追跡されていないファイルやフォルダーがいくつかある場合、git status コマンドを実行すると、多くの行が出力されます。

すぐに飛び込みましょう。

Git で追跡されていないファイルを無視する

2つの異なるシナリオを使用して、2つの方法について説明します。 最初のケースでは、リポジトリ Delftscopetech があります。

これが私たちのリポジトリにあるものです。

pc@JOHN MINGW64 ~/Documents/GitHub/Delftscopetech (main)
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   Delft.pdf
        new file:   sample.ph
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        Example Code 2
        Example Code 2.php
        Example Code 3.php
        Example code 1.php
        downloadpdf.php
        htmllinkpdf.html
        insert.php

git status コマンドは、コミットの準備ができている 2つのファイルと、追跡されていないいくつかのファイルを示します。 追跡されていないファイルを削除せずに、出力から除外したかったのです。

これについてはどうすればよいでしょうか?

-uno パラメータを git status コマンドに追加します。 それはとても簡単です。 リポジトリで試してみましょう。

pc@JOHN MINGW64 ~/Documents/GitHub/Delftscopetech (main)
$ git status -uno
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   Delft.pdf
        new file:   sample.php
Untracked files not listed (use -u option to show untracked files)

パラメータ -uno--untracked-files=no のエイリアスです。

パラメータなしで git status コマンドを実行すると、追跡されていないファイルが表示されます。

追跡されていないファイルを完全に無視したい場合はどうすればよいでしょうか? どうやってそれを行うのですか?

以下のコマンドを使用します。

git status --porcelain | grep '^??' | cut -c4- >> .gitignore

これにより、リポジトリ内の現在追跡されていないファイルが永久に非表示になります。 コマンドが機能するには、既存の .gitignore ファイルが必要であることに注意してください。

ファイルがない場合、gitignore は自分自身を無視します。 .gitignore ファイルがない場合は、次のコマンドを使用します。

echo "$(git status --porcelain | grep '^??' | cut -c4-)" > .gitignore

.gitignore ファイルが作成される前に、git status --porcelain 部分が実行されます。 git status --short の代わりに git status --porcelain を使用して、解析しやすい形式で出力を取得します。

grep '^??' 部分は、?? で始まるすべての行を除外します。 マニュアルによると、これらの行はリポジトリ内の追跡されていないファイルに対応しています。

cut -c4- の部分は、すべての行の最初の 3 文字を削除することで、追跡されていないファイルへの道を開きます。

著者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

関連記事 - Git Ignore