【Git】GitHub 管理下にある Pods を外す

今までは Pods で生成したコードも GitHub で管理していたのですが、100MB 以上ある SDK がちらほらと出始めたので、Git の制限もあるし、ここらへんでいっそ外してしまおうと決意し、それを外すまでの作業工程を残します。

GitLFS も考えたのですが、1GBの無料ストレージ/無料帯域を使い切ったら有料になるし、これから SDK によっては大きくなるものも増えてくると思ったので、リモートリポジトリから Pods を省くことにしました。

ので!
Pods 配下もリモートリポジトリで管理すべき!とかって話は聞きません (・ω・´)キリッ
タイトル通り、GitHub 管理下にある Pods を外したい方だけご一緒に。

開発環境(前提条件)

・macOS BigSur(ver11.1)
・Xcode12.4
・CocoaPod(Carthage不使用)
・GitHub(Pods配下もプッシュ済み)

さっそく作業へ

管理外にしたいファイルを指定する

git の管理外にしたいファイルを指定するために、ターミナルで .gitignore というファイルを作成します。
このファイルに書かれたファイルは Git のトラッキング対象外になるので、Pods もここで指定します。

エディタモードに切り替わったら、i を押して入力モードにします。
コードはテンプレートがあるので、そこから一部を抜粋します。

コピペしたら esc を押して入力モードを終了 → :wq を入力してファイルを保存します。

すでに 100MB を超えたファイルがある人は

私なんですけどね Σd(゚∀゚d)
使っていた SDK がアップデートを重ねるうちに 100MB を越すという。笑
リポジトリにプッシュしようとしたら、以下のようなエラーが発生。

% git push origin your_branch
.
.
.
remote: warning: File ***50MB超えファイルパス*** is 55.00 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: ***乱数***
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File ***100MB超えファイルパス*** is 119.41 MB; this exceeds GitHub's file size limit of 100.00 MB

ってエラーが出るので、上記エラーの下部にある ***100MB超えのファイルパス*** をリポジトリに追加してなかったことにする必要があります。

普通に削除したところで、他の履歴にはそのファイルが残るので、全く解決しまーせん。
そこで、そのファイルがリポジトリに追加してなかったことにします。

はい、git 触ってたら分かると思いますが、「なかったことにする」ので要注意ですね (´・ω・;A)

そんな要注意コマンドがこちら。

って感じですね。全部意味のある黒魔術です。

ちなみにこの処理はプロジェクトによっては時間がかかるので、気をつけて下さい。
完了したらプッシュするのですが、もちろん強制執行です。

これでリモートリポジトリから 100MB を越すファイルが削除できました。
危険な道草くってねーで本題に戻ります!

Git の管理下から Pods を外す

いよいよ Pods を Git の管理下から外します。

コレダケ。(道草の方が長いぜ)
git rm というコマンドは、Git の管理下にあるファイルやフォルダを削除するコマンドです。
さっきの道草でもでてきましたが、--cached がないと、ファイルそのものが削除されるので注意してください!
そのあと、以下の手順で反映したら終了です。

【2021年2月20日:追記】
忘れてました。タグの参照も更新したので、それもリモートに送信しないといけません。

これでタグも反映された状態です!

さいごに

個人的には道草が茨すぎて傷だらけでした (´;д;`)ウッ
でも git を見たら Pod が管理されていなかったので、めっちゃスッキリしました!!
あと3つ同じ事をしたいプロジェクトがあるので、この記事見ながら頑張ります。笑

あ、もちろん自己責任でお願いします!

コメント