・SourceTreeでサイズが重すぎてクローンできない。どうすればよい?
こんな疑問にお答えします。
リポジトリによっては、サイズが重たすぎてSourceTreeでクローンするとエラーがでることがあります。
このままではエラーがでてクローンができません。
そんなときはターミナルより分割クローンをすればOK。
すぐにできるよ!
ということで、この記事では「重いサイズを分割クローンする方法」について解説していきます!
・重いサイズを分割クローン
・リモートブランチが表示されないバグを解決
目次
【SourceTree】重いサイズを分割クローンする方法
分割クローンはSourceTreeではなく、ターミナルより行います。
ターミナルにてクローンしたいディレクトリに合わせて、下記コードを1行ずつおこないます。
% git clone --depth 1 http://example.com/test.git
% git fetch --depth 10
% git fetch --depth 100
% git fetch --unshallow
コードの意味は下記。
- 最新のコミット1つをクローン
- コミットの深さを徐々に大きくする
- 全ての子ミット履歴を取得する
順に解説してきます。
まず下記コードにて分割クローンを行います。
% git clone --depth 1 http://example.com/test.git
「–depth 1」が最新のコミット1つをという意味。
ようは指定URLの最新コミット1つをクローンするということですね。
これでひとまず1コミットクローンできたので、あとは過去コミットを少しずつ取得します。
やり方は「–depth 10」「–depth 100」のように、少しずつ数値を上げていきましょう。
% git fetch --depth 10
% git fetch --depth 100
いきなり数値を上げすぎるとまたエラーになる可能性もあるので、すこしずつ。50〜100ずつが良いかと。
けっこうな数値の過去コミットまで取得できたら、あとは一気に残りのコミットをクローンします。
そのやり方が下記コードですね。
% git fetch --unshallow
これで重いリポジトリを分割してクローンすることができました。
【SourceTree】分割クローンでも重すぎてエラーが出る場合
先述した分割クローンのやり方でもエラーが出る場合もあります。
そんなときは「buffer」のサイズを上げるのもありかと。
やり方は下記コードです↓
% git config http.postBuffer 157286400
(157286400
は157 MBのこと)
これにより一時的にサイズを調整して、対処することができるかもしれません。
【SourceTree】分割クローンしたあとリモートブランチが表示されないバグ
先述した分割クローンをして、フェッチをしてもリモートブランチが表示されないことがあります。
本来は「develop」や「feature」ブランチがあるのに、「main」ブランチしかないなど。
この場合下記を行えば解決可能です。
- 隠しファイルを表示
- 「.git/config」ファイルを表示
- 「fetch」のコードを集成
順に解説します。
まず分割クローンしたディレクトリ内で、隠しファイルを表示しましょう。
表示方法は下記↓
- Mac⇒「command」+「shift」+「.」
- Windows⇒「エクスプローラー> 表示 > 表示 > 隠しファイル」
隠しファイルが見えたら「.git/config」ファイルを選択して、VS Code等で開きましょう。
すると「fetch」と書かれたコード内容が、下記のようになっているかと思います↓
fetch = +refs/heads/develop:refs/remotes/origin/main
これだと末尾にあるブランチしかフェッチされません。(この例だとmainブランチのみ)
そのため下記のように「*」をつけて修正して保存しましょう。
fetch = +refs/heads/develop:refs/remotes/origin/main
↓ 下記の様に修正
fetch = +refs/heads/*:refs/remotes/origin/*
その後SourceTreeを見てみると、他のリモートブランチも表示されているかと。
それでもリモートブランチが表示されない場合
先述した「.git/config」ファイルを修正しても、リモートブランチが表示されない可能性もあります。
そんなときはSourceTreeのリポジトリのパスを修正してみましょう。
下記画像のように「右上の設定」⇒「リモートのタブ」⇒「パスを選択」⇒「編集」で修正可能です。
下記のように「https」にして、指定位置にユーザー名を記述してみてください。
https://(ここにユーザー名)@github.com/(ここにユーザー名)/(プロジェクト名).git
これでリモートブランチが表示されるかもしれません。
他にもSourcetreeで使えるものをまとめていますので参考にどうぞ↓
【解説】SourceTreeでよく使うものをまとめてみた【解決】SourceTreeで重いサイズを分割クローン【リモートブランチ表示】:まとめ
- 「–depth」にて分割クローン
- 「buffer」のサイズ調整もあり
- リモートブランチが表示されない場合「.git/config」の「fetch」を修正
- それでも表示されない場合はリモートリポジトリのパスを修正
重いサイズを分割クローンしたい時はためしてみてね!