目的
Gitにアップロードした際に .DS_store も Git にアップロードされている。
.DS_store は Git アップロードされないようにしたい。
実施内容
1.gitignore に追記
# OS-generated files
.DS_Store
2.確認結果
$ git status -s
M .gitignore
Status Codes:
A added 新規ファイル。gitが新規に追跡したファイル
M modified 変更があったファイル
D deleted 削除されたファイル
R renamed 名前変更
C copied コピー
U unmerged マージしていない
? untracked 未追跡。gitが認識していない。
! ignored 無視
$ git diff --stat
.gitignore | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
3.全てのファイルを Git の追跡対象から削除
$ git rm -r --cached .
rm '.DS_Store'
rm 系のログが大量に出てくる
4.確認結果
$ git status -s
D .DS_Store
Dステータスのログが大量に出てくる
Status Codes:
A added 新規ファイル。gitが新規に追跡したファイル
M modified 変更があったファイル
D deleted 削除されたファイル
R renamed 名前変更
C copied コピー
U unmerged マージしていない
? untracked 未追跡。gitが認識していない。
! ignored 無視
$ git diff --stat
5.ステージングに反映
$ git add .
6.確認結果
$ git status -s
D .DS_Store
M .gitignore
D src/.DS_Store
D src/pages/.DS_Store
D src/pages/service/.DS_Store
Status Codes:
A added 新規ファイル。gitが新規に追跡したファイル
M modified 変更があったファイル
D deleted 削除されたファイル
R renamed 名前変更
C copied コピー
U unmerged マージしていない
? untracked 未追跡。gitが認識していない。
! ignored 無視
$ git diff --stat
7.コミットして、pushする
$ git commit -m "[change].gitignoreに.DS_Storeを追加"
$ git push
そもそも .gitignore とは?
.gitignore は特定のファイルやディレクトリを Git の追跡対象としない為のルールを記述するもの。
こちらに追記すると、追跡対象に含まれず特定ファイルが Git にアップされなくなる。
.gitignore の注意点
今回のように既に .DS_store が追跡対象となっているなかで、.gitignore に追記しても効果がない。
追跡対象だったものは、.gitignore に追記しても追跡対象のままです。
追跡対象だったものを 「追跡対象外にする」 効果はない。
$ git rm -r --cached .
または git rm -r --cached [ファイル名]
を実施して追跡対象から除外する必要がある。
コマンド補足
git rm
:Git リポジトリからファイルまたはディレクトリを削除するコマンド。
-r
:再帰的に削除を行うオプション。ディレクトリとその中のファイルをすべて対象とします。
--cached
:ファイルをワーキングディレクトリからではなく、インデックス(ステージングエリア)からのみ削除します。つまり、ファイル自体はファイルシステム上に残りますが、Gitの追跡からは外されます。
.
:現在のディレクトリ(およびサブディレクトリ)を指す。このコマンドでは、現在のディレクトリとその下の全てのファイルやディレクトリを対象にします。
所感
追跡対象から除外するコマンドは git rm -r --cached [ファイル名]
を叩く方が丁寧な印象を持つが、$ git rm -r --cached .
を実行して比較を見てみると他にも自分が想定しない .DS_Store
があったりしたので .
で全指定が良いかもしれない。
当初、自分は .DS_Store のみを Git の追跡対象から除外する想定でした。
$ git status -s
D .DS_Store
M .gitignore
D src/.DS_Store
D src/pages/.DS_Store
D src/pages/service/.DS_Store