タイトル通りです。
私はgit初心者なので、.gitignoreというやつを書かないまま適当にGoogle driveとかと同じノリでGitHubを使っていて、そういうノリで生きてました (今でもGitHubのことをGoogle driveとかと同じノリだと思ってますが...)。
そういうわけで、たとえばtexをコンパイルしたときに出るゴミファイルもgithubに保存されてて、こういうのって人から見たら「あっこいつ.gitignore書いてねえな」って思われるんだろうなって思うと、なんか恥ずかしくなっちゃって、はい...
それでなんか「掃除」しようと思ったのでやったっていう話です。
この記事は、やったことを自分用にメモするだけの記事です。
(Macで、OSは Big Sur バージョン11.2.3 です)
##やったこと
とりあえず.gitignoreを作成:giboというやつを使うと良いらしい
やりたいこと:すでにgit管理下にあるファイルのうち今作った.gitignoreで弾かれるものを弾きたい。
3つの場合にわけてますが、最後の場合で全てカバーされているとは思います。
関係するファイル名やフォルダ名に日本語を使っていない場合
まず日本語関係ないのでそれに関する設定をtrueにする (何もしてなければ最初からtrueになっているはず):
git config --global core.quotepath true
(--local
でやってもいい。その場合、変更は現在のリポジトリだけに適用される。)
で、この記事にある通り、
git rm -r --cached `git ls-files --full-name -i --exclude-from=.gitignore`
を実行すればok。
・cf. git rm
について
・cf. git ls-files
について
日本語を使っているけど (半角の) 空白文字は使っていない場合
念のため、gitの日本語の設定をする。この記事にあるように、
git config --global core.quotepath false
を実行するとok。
次に、先ほどと同じように
git rm -r --cached `git ls-files --full-name -i --exclude-from=.gitignore`
を実行すればok。
日本語も (半角の) 空白文字も使っている場合 (私の場合)
念のため、gitの日本語の設定をする。先ほどと同じで
git config --global core.quotepath false
を実行するとok。
次に、拡張子.shで次のファイル (cf. シェルスクリプトについて) を作成 (zshの人は1行目でzshにする):
#!/bin/bash
git ls-files --full-name -i --exclude-from=.gitignore | while read line
do
git rm -r --cached $line
done
ここでは「テスト.sh」という名前にしておく。
このファイルを保存する場所はどこでもいいけど、現在のディレクトリから近い場所にいる方が相対パス書くときにめんどくさくなくていいんじゃないかな...(適当)。
次に、「テスト.sh」の権限の変更をする (cf. 権限について)。ターミナルで
chmod u+x テスト.shの相対パス
を実行する。
最後に、ターミナルで「テスト.sh」の相対パスをなんのコマンドもなしに入力し、returnを押せばok。
なんらかがばーーーっとなっていい感じになってくれます (すごい)。
参考文献
git関係:
・giboについて:giboで簡単に最適な.gitignoreを作成
・日本語について:最低限しておくといいgitconfigの設定
・あとからまとめて.gitignoreする方法
・git rm
について:gitの管理対象から特定のファイル、ディレクトリを削除する
・git ls-files
について:git ls-files
シェル:
・権限について:Linuxの権限確認と変更(chmod)(超初心者向け)
・シェルスクリプト(Bash)入門。できること、基礎文法、業務自動化の方法を解説【事例あり】
・初心者向けシェルスクリプトの基本コマンドの紹介
・shスクリプトにおける引用符