概要
gitignoreファイル内の追記ミスや後々除外したくなったファイルをリモートレポジトリに反映(除外)されるようにgitプロジェクトに追加されたキャッシュファイルを削除します。
実行環境 |
---|
Windows Subsystem for Linux |
git version 2.17.1 |
下図のリモートレポジトリには、2つのファイルが追加されています。一方は公の場でも見せられる「public.txt」というファイル、もう一方は個人用の「private.txt」というファイルで、追加したもののやっぱり除外しておきたいという状況にいます。
ローカルレポジトリにて追加で新たに除外リストを記載した「gitignore」ファイルを作成し、リモートレポジトリにプッシュ(送信)します。
$ echo 'private.txt' > .gitignore
$ git add .gitignore
$ git commit -m 'gitignoreの作成'
[main f639e08] gitignoreの作成
1 file changed, 1 insertion(+)
create mode 100644 .gitignore
$ git push
Username for 'https://github.com': ユーザー名
Password for 'https://user-name@github.com':アクセストークン
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 327 bytes | 81.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/user-name/ignore-repo.git
e37b430..f639e08 main -> main
しかし後から除外リストに記載したファイルは適用(反映)されていないことが分かります。
gitプロジェクトのログを見てみると、これまでのコミット履歴を参照できます。
※「--name-only」オプションを付けるとファイル名も出力します
$ git log --name-only
commit f639e0858ffc96031f0ea20e3830663abb7933d5 (HEAD -> main, origin/main)
Author: User-Name <address@gmail.com>
Date: Thu Jun 9 11:19:31 2022 +0900
gitignoreの作成
.gitignore
commit e37b43010582918be6a609136453a15af5c96ab6
Author: User-Name <address@gmail.com>
Date: Thu Jun 9 08:42:14 2022 +0900
first commit
private.txt
public.txt
上から新規作成した順に並んでおり、gitignoreを作成する以前より作成されたファイル群はキャッシュファイルとして存在しているため、レポジトリに反映させるには除外したいファイルのキャッシュを削除する必要があります。
※「--cached」オプションは実際のファイルを削除するのではなく、キャッシュファイルを削除します
$ git rm --cached private.txt
rm 'private.txt'
$ ls
private.txt public.txt
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: private.txt
ワーキングディレクトリには「private.txt」はありますが、「git status」コマンドでその時点でのレポジトリの状態を確認してみると削除されていることがわかります。
これを「git commit」として確定するだけでgitの管理下から除外されます。
$ git commit -m 'キャッシュファイルの削除'
[main 5e95a97] キャッシュファイルの削除
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 private.txt
$ git log --name-only
commit 5e95a97ddd31a7973bad161262293efcb699359f (HEAD -> main)
Author: User-Name <address@gmail.com>
Date: Thu Jun 9 12:07:55 2022 +0900
キャッシュファイルの削除
private.txt
commit f639e0858ffc96031f0ea20e3830663abb7933d5 (origin/main)
Author: User-Name <address@gmail.com>
Date: Thu Jun 9 11:19:31 2022 +0900
gitignoreの作成
.gitignore
commit e37b43010582918be6a609136453a15af5c96ab6
Author: User-Name <address@gmail.com>
Date: Thu Jun 9 08:42:14 2022 +0900
first commit
private.txt
public.txt
問題無くプッシュ(送信)できればリモートレポジトリに反映されているかと思います。
$ git push
Username for 'https://github.com': ユーザー名
Password for 'https://user-name@github.com':アクセストークン
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 266 bytes | 266.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/user-name/ignore-repo.git
f639e08..5e95a97 main -> main
それでは以上です。
最後までご覧いただきありがとうございました。