Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【GIT】非常に重たいrepositoryをcloneする方法

More than 1 year has passed since last update.

このところ業務でやたらと重たいリポジトリを扱うことが多いので、重たいリポジトリを 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 branchcheckout ができないので以下のコマンドを入力

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"

そのあと

git fetch --all

でリモートブランチも取得、チェックアウトでき、利用できるようになる。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away