2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

特定のファイルをGitの管理対象から外したい時に使う、git rm --cachedと.gitignoreの違い

Posted at

この記事を書いたきっかけ

Gitで管理していた余計なファイルを.gitignoreに追記してコミットしたのに、なぜかGitの管理に残ったままだったことがありました。おかしいな〜と思っていろいろ調べてみました。すると、なんでも.gitignoreに書けばGitが無視してくれるというわけではなく、初めから.gitignoreに書いておくか、あとからGitの管理から外すコマンドを実行する必要があると知りました。
今回は特定のファイルをGitの管理対象から外したい時に使う2つの操作について簡単に勉強します。

git rm --cachedと.gitignoreの共通点と相違点

共通点

Gitの管理対象から外す
git rm --cachedコマンドと.gitignoreファイルは、
どちらもファイルをGitの管理対象から外すために使用します。これにより、そのファイルの変更は追跡されなくなります。

相違点

git rm --cachedコマンドの場合

既にGitの管理下にあるファイルをGitの管理対象から外すコマンドです。つまり、過去にコミットされたファイルをリポジトリから削除し、以降のコミットでは追跡されないようにするために使用されます。
このコマンドを実行すると、ファイルは次回のコミット時にリポジトリから削除されますが、ワーキングディレクトリには残ります。
一度、Gitの管理対象に入れてしまったけど、ただ管理対象から外したいだけの時はこのコマンドを使います。

.gitignoreファイルの場合

まだGitの管理下にないファイルを追跡しないように指定するときに使用します。既にコミットされているファイルに対しては効果がありません。
.gitignore に記載されたパターンに一致するファイルやディレクトリは、新規に追加された場合にGitによって無視されますが、既にコミットされているファイルは引き続き追跡されます。

具体例

  1. 既にコミットされているファイルをGitの管理対象から外す場合
    git rm --cached <ファイル名>
    git commit -m "Remove <ファイル名> from version control"

  2. 初めから追跡したくないファイルを指定する場合
    echo "build/" >> .gitignore
    echo "*.log" >> .gitignore

まとめ

git rm --cachedコマンドは既にコミットされたファイルをGitの管理対象から外すためのコマンドであり、 .gitignoreファイルはこれからコミットされるファイルを無視するための設定ファイルです。
既にリポジトリに含まれている不要なファイルを管理対象から外したい場合は、 git rm --cached を使用し、今後追加される不要なファイルを無視したい場合は .gitignore に記載すればオッケーです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?