0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

.gitignoreを書いてないままgitしてたからgit管理下にあるファイルをいい感じに整理した (メモ)

Last updated at Posted at 2021-04-26

タイトル通りです。
私は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スクリプトにおける引用符

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?