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 件のコメント :
コメントを投稿