Git でファイルの追跡を停止する
このチュートリアルでは、Git のリポジトリ内のファイルとフォルダーの追跡を停止する方法を学習します。
開発リポジトリでは、Git の変更について一部のファイルを追跡する必要がなくなったという状況に遭遇することがよくあります。
現在冗長であり、プロジェクトに関連しなくなったと思われるファイルがあるとします。このような場合、Git のリポジトリの追跡からファイルを削除する必要があります。
これを例を挙げて説明します。
Git で git rm
を使用してファイルの追跡を停止する
Git のリポジトリに file1
という名前のファイルがあり、追跡する必要がなくなったとします。
--cached
オプションを指定して git rm
コマンドを使用すると、Git での追跡からファイルを削除できます。
$ git rm --cached file1
rm 'file1'
次のコマンドを使用して、Git リポジトリの追跡からフォルダーを削除することもできます。
$ git rm -r --cached <folder-name>
これにより、指定されたとおりにファイルまたはフォルダが追跡から削除されます(つまり、インデックスから削除されます)。ただし、ファイルシステムからファイルは削除されません。
<div class="panel panel-primary panel-warning">
<div class="panel-heading">注意</div>
<div class="panel-body">リモートリポジトリから新しい変更を取得するために他のマシンで <code>git pull</code> を実行すると、そのファイルまたはフォルダーはそのファイルシステムから削除されます。これにより、リモートリポジトリから新たにクローンを作成するときに、ファイルまたはフォルダも削除されます。</div>
</div>
また、リモートリポジトリでこの変更を更新するには、ファイルの削除をコミットする必要があることに注意してください。
$ git commit -m "Removed file1"
$ git push
Git で git update-index
を使用してファイルの追跡を停止する
場合によっては、ファイルをリポジトリに保持したいが、その変更を追跡したくない場合があります。これを実現するには、git update-index
コマンドを --skip-worktree
オプションとともに使用できます。
$ git update-index --skip-worktree file1
コマンド git update-index
の --skip-worktree
オプションにより、Git はファイルのバージョンが最新であると偽って、代わりにインデックスバージョンから読み取ります。これは、構成ファイルに特に役立ちます。
リポジトリにデフォルト値または本番値の構成ファイルがいくつかある場合があり、必要に応じていくつかの変更を加える場合がありますが、これらの変更をコミットしたくありません。git update-index
をコマンドする --skip-worktree
オプションは、このような目的に非常に便利です。
したがって、Git リポジトリ内のファイルとフォルダーの追跡を停止する方法について詳しく説明しました。