HOWTO · Git

1つのファイルを除くすべてのファイルをコミット用に追加

Git でコミットするファイルをステージングするときに、ファイルを除外できます。

この記事では、選択したファイルを除外しながら、コミットするすべてのファイルを追加する方法について説明します。 これは、コミットに含めたいファイルが多数あり、1つのファイルを除外する必要がある場合に便利です。

一度にファイルを追加する代わりに、次の簡単な手順に従うことができます。

1つのファイルを除くすべてのファイルをコミット用に追加

以下の例を見てください。 20 以上の変更済みファイルがあると仮定すると、1つを除くすべてのファイルを追加するにはどうすればよいでしょうか。

requirements.txt ファイルをインデックスから除外したいとしましょう。 これについてはどうすればよいでしょうか?

いくつかのコマンドを使用して、ステージング中に requirements.txt ファイルを除外できます。 これらは:

  1. git reset コマンドでアンステージします。
  2. Exclude Pathspec を使用します。
  3. ファイルを追跡から一時的に除外します。

git reset コマンドを使用する

git reset コマンドを使用する場合は、すべてのファイルをインデックスに追加してから、必要なファイルのステージングを解除する必要があります。

構文:

# Start by staging all files
$ git add .
# To exclude a file
$ git reset -- path/to/file
# To exclude a folder
$ git reset -- path/to/folder/*

この例では、以下に示すように、すべてのファイルを追加し、requirements.txt ファイルのステージングを解除します。

$ git add .

これにより、すべてのファイルがステージングされます。 requirements.txt ファイルのステージングを解除するには、次を実行します。

$ git reset -- path/to/requirements.txt

このコマンドは、requirements.txt ファイルのステージングを解除する必要があります。

除外パス仕様を使用する

Git バージョン 1.9.0 以降では、コミットするファイルを追加する際に 1つ以上のパスを削除できます。 これは、:(exclude) パス指定で可能であり、:! とも記述されます。 または :^.

ここに例があります。

$ git add --all -- ':!path/to/requirements.txt'

フォルダを除外するには:

$ git add --all -- ':!path/to/folder/*'

ファイルを追跡から一時的に除外する

以下に示すように、requirements.txt ファイルを追跡から一時的に除外できます。

$ git update-index --assume-unchanged path/to/requirements.txt

git add . を実行するたびに、Git は requirements.txt ファイルを除外します。 指図。 --assume-unchanged とマークされたすべてのファイルを一覧表示するには、次のコマンドを実行します。

$ git ls-files -v | grep "^h"

除外リストからファイルを削除するには、次を実行します。

$ git update-index --no-assume-unchanged path/to/requirements.txt

簡単に言うと、1つを除くすべてのファイルをインデックスに追加するには、いくつかの方法があります。 既に説明したように、ファイルを追跡から一時的に除外するのが最もクリーンで効率的です。