0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

.gitignoreで.DS_Storeを削除する

Last updated at Posted at 2024-01-16

目的

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?