はじめに
先日、GitHubに誤って.DS_Storeファイル
をpushしてしまいました。
これからうっかり誤ったファイルをpushしたときに慌てないようにするため
手順をまとめました。
.DS_Storeファイルとは
その前に、.DS_Storeファイル
とは何でしょうか。
フォルダの表示オプション、アイコンの位置などのフォルダのカスタム属性を格納しているファイルのようです。
https://en.wikipedia.org/wiki/.DS_Store
問題
GitHub上に誤って必要のないファイルをあげてしまった。
解決方法
手順1. git rm --cached
コマンドを使う
手順2. ~/.config/git/ignore
にファイル名を記述する
手順3. .gitignoreファイルにファイル名を記述する
手順4. GitHubにpushする
手順1.git rm --cached
コマンドを使う
$ git rm --cached .DS_Store
上記のコマンドを叩くと、リポジトリ上でこのファイルが削除されます。
しかし、ワークツリー上にはファイルが残ります。
ワークツリーからも削除したい場合はgit rm
コマンドを使います。
ディレクトリの場合は-r
をつけます。
手順2. ~/.config/git/ignore
にファイル名を記述する
ここに記載されたファイルはGitの管理下から外れ、追跡の対象外となります。
.gitignoreファイルとの違いは、各リポジトリによらないグローバルなgitignoreを設定することができます。
.DS_Storeファイルのようなプロジェクトに関係がないファイルはこちらに記載しましょう。
.DS_Store
また、GitHubのリポジトリに下記テンプレートがあるので、こちらを~/.config/git/ignore
にコピペするのも良いですね。
手順3. .gitignoreファイルにファイル名を記述する
プロジェクト由来のファイルであれば、.gitignoreファイルに記述します。
.DS_Storeのようなプロジェクトに関係が無く、毎回、個人の環境によるファイルを書くのは大変です。
そういったファイルはグローバルなgitignoreに記述していきたいですね。
手順4. GitHubにpushする
言うまでもないことですが、最後にGitHubへpushします。
終わりに
今回は、うっかりGitHubに上げたくないファイルをpushした時の対処法をまとめました。
最初、グローバルなgitignoreの設定を知らず、リポジトリを作成するたびに.gitignoreファイルが必要なのか?と思っていましたが、そうではありませんでした。
今後も横着せずに楽な方法はないか?を発想して学習していきます。
参考