概要
Gitを使った行き詰った問題や、その解決できた参考サイトをまとめた、Git初心者の備忘録。
基本自分の記録用に書いているので、自分の起こった出来事→その解決法という形式で記述する。
Git初心者が書いています。説明等に間違い・誤解を招く表現があると予想されます。正確な仕様・詳しい解説は各自調べてください。何かしらの被害が出てもおあしす としか言えません。
Electronでnode_modulesをcommitしてしまった
発生した問題
electronアプリを作成し、GitにPushしようとしたとき、node_modulesの中にあったelectorn.exeのサイズが100MBを超えており、pushできなかった。
Gitでpushする際、100MB以上のファイルをアップロードできない。これを解消するため、node_modulesをGitの管理から外し、すべてのcommitから削除する必要があった。
↓と同じ問題。
https://teratail.com/questions/225579
解決とその参考サイト
Gitの管理から外す
.gitignoreを作成し、node_modulesをGitの管理から外す
【参考】
.gitignoreを後から設定し、git管理から除外する方法
git rm で管理対象から外す。
【参考】
【Git】git rm --cached [ファイル名]:ファイルを管理対象から除外する
すべてのcommit履歴から削除
git filter-branchを使用
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch node_modules" --prune-empty -- --all
【参考】
git最強のオプション filter-branch
git filter-branchで過去の全てのcommitから画像ファイルの追加/変更をなかったことにしてリポジトリを軽量化する
git-rebase
最初のコミット以外全部消えた!と勘違いしたり(多分rebaseの途中)ととても疲れた。
git rebase -i 初期コミットのハッシュ
【参考】
7. rebaseでマージする|サル先生のGit入門【プロジェクト管理ツールBacklog】
初心者がgit rebase使って格闘した記録
Git 間違って rebase しちゃったのを元に戻したい
git のコミット履歴をすべて消す(現時点の状態の1コミットだけにする)
教訓
生成される画像ファイルや、node_modules等バックアップ対象外のファイル・フォルダはあらかじめ.gitignoreで除外する。