GitHubにあるコードを動かしたくて、Gitでチェックアウトしようとしたとき、欲しくないファイル達を省いて、必要なディレクトリだけ落としたいという時の方法です。
事例
- リポジトリ
https://github.com/USER_NAME/Repository/ - ファイル構成
https://github.com/USER_NAME/Repository/Program_src1
https://github.com/USER_NAME/Repository/Program_src2
・・・・・
https://github.com/USER_NAME/Repository/Program_src100
※Program_src1のソースコードだけ欲しい
cloneすると、基本的に全ディレクトリ、ファイルが同期されます。
つまり、不要なものを削除すると、削除変更として認識されてしまいます。
sparse-checkout により、実施することができます。
#ただし、リポジトリはいったんすべてダウンロードするようです。。。
ダウンロード用量の節約にはならないようです。
手順
- Git initでリポジトリ初期化
- sparsecheckout を有効にする
- リポジトリの URL を origin として登録
- チェックアウトする対象のディレクトリを .git/info/sparse-checkout に追加
- 好きなブランチを pull (checkout) する
コマンド例
上の事例のケースでのコマンドを記載しています。
> git init
> git config core.sparsecheckout true
> git remote add origin ”https//github.com/USER_NAME/Repository.git”
> echo ”Program_src1/” > .git/info/sparse-checkout
> git pull origin master
エラーケース
- ワークディレクトリがない(上のechoで登録したパスがおそらく誤っている)
error: Sparse checkout leaves no entry on working directory
コメント