[Git]一部のディレクトリだけチェックアウトする

スポンサーリンク

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

コメント

タイトルとURLをコピーしました