[Git] depthをつけてcloneしたらリモートブランチにチェックアウトできない時の対策

GitでCloneしようとしたらなぜか失敗する場合以下のコマンドでcloneできる場合があります。 原因は大きなファイルがコミットされていてサーバー側でエラーになったりしているようです。 ```bash `gutter:false; $ git clone --depth 1 https://hogehoge ``` 上記のクローンの仕方をshallow cloneと言うそうですが、この状態でリモート(サーバー)にあるmaster以外のブランチを落とそうとした時にできません。 そんな時には、以下の手順でリモートのブランチをチェックアウトできます。 ## 方法 1. リモートのブランチが作成された状態までコミット履歴を取得する 2. .git/configにリモートブランチの情報を書き込む 3. fetchする ### リモートのブランチが作成された状態までコミット履歴を取得する ブラウザなどで目的のブランチが枝分かれしたコミットを探して、そこまで遡ってコミットを取得します。 ```bash `gutter:false; $ git fetch --depth 20 # 20階層下まで履歴を取得 ``` ### .git/configにリモートブランチの情報を書き込む .git/configを開くを以下のようになっています。 注目するのはorigiセクションでここにfetch = +refs/xxxxとありますがここにフェッチしたいブランチを追記します。 ``` `gutter:false; : [remote "origin"] url = https://github.com/k28/hogehogehoge.git fetch = +refs/heads/master:refs/remotes/origin/master # hogeブランチを追加する fetch = +refs/heads/hoge:refs/remotes/origin/hoge # ----- ここまで ------ [branch "master"] remote = origin merge = refs/heads/master : ``` ### fetchする ここまでの状態でもう一回fetchすると目的のブランチが表示されるようになります。 ```bash `gutter:false; $ git fetch ``` あとはいつも通りブランチを切り替えることができます。 ## 参考URL * [gitでshallow clone](https://qiita.com/sonots/items/ce08c30d161ea0b4d5fd) * [shallow clone したリポジトリのトピックブランチを後から fetch する](https://qiita.com/pione30/items/b657d5428fcee7c84db7)

0 件のコメント :

コメントを投稿