このところ業務でやたらと重たいリポジトリを扱うことが多いので、重たいリポジトリを clone
して、 remote branch
から branch
切ったり commit
したり、 push
したり、できるようにする clone
の仕方をメモ。
いきなり全履歴を落とさず直近の履歴だけをおとし、最終的に全履歴落とす方法。
terminal
でコマンド打ちます。
clone
したいカレントディレクトリに移動
以下コマンドで現在いるディレクトリを確認します。
pwd
terminal
を立ち上げてすぐだと、だいたい以下のパスになっていると思いますが
/Users/{ユーザー名}
これを cd
コマンドでクローンしたいフォルダに移動します
cd /Users/{ユーザー名}/{クローンしたいフォルダ}
tips
clone
したいフォルダの階層にすでに clone
してできるフォルダと同じ名前のフォルダが存在しているとエラーになるので被っているフォルダ名がないか注意
まず直近1つの履歴のみで clone
します
git clone --depth 1 {リポジトリのurl}
- {リポジトリのurl} は適宜URLに置き換えてください
- 例)
git clone --depth 1 https://hogehoge.com/fugafuga.git
ひとまず clone
ができたら次は履歴をちょっとずつ fetch
する
fetch
するにはそのリポジトリフォルダの中に移動します。
cd {クローンしたフォルダ}
以下コマンドでカレントがクローンしたフォルダになっているか確認
pwd
クローンしたフォルダに入っているのを確認して、以下のコマンドを実行
git fetch --depth 10
git fetch --depth 100
- 数は履歴の数。少しずつ増やして最終的には全部落としました
最後まで落とした時にこの表示になった
remote: Total 0 (delta 0), reused 0 (delta 0)
## しかしこれまでだと fetch
や他の remote branch
に checkout
ができないので以下のコマンドを入力
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
そのあと
git fetch --all
でリモートブランチも取得、チェックアウトでき、利用できるようになる。