LoginSignup
280
264

More than 5 years have passed since last update.

Git 特定のフォルダのみcloneする

Last updated at Posted at 2014-03-07

リポジトリのここのフォルダだけcloneしたいんだ、Subversionでいうところのcheckoutだ、という場合はsparsecheckoutの機能を使用する。

特定のフォルダだけclone、という以外に絶対にcommitしたくないファイルを外したりできるので、覚えておくと便利(設定ファイルを個人ごとに書き換えなければならない場合など)。

  1. git clone xxx
  2. git config core.sparsecheckout true
  3. echo I_want/this_folder/ > .git/info/sparse-checkout
  4. git read-tree -m -u HEAD

  5. echo I_forget/this_folder/ >> .git/info/sparse-checkout

まずは普通にcloneをしてきて、そのあとsparsecheckoutを有効にする。

次に、.git/info/sparse-checkoutというファイルに残しておきたいフォルダ(I_want/this_folder/)を書き込む。

そして、git read-tree -m -u HEADという呪文を唱えると先程記載しておいたフォルダ以外は姿を消すことになる。

上記5では、指定するのを忘れたフォルダを追記している。この場合、既存ファイルへの追記なので>>となる点に注意。もちろん普通にファイルを編集してもOK。

これで不要なファイルは除外できるが、フォルダ階層は調整できない(aaa/bbbをd/にcloneする、といったことができずd/aaa/bbbになる)。
ここはうまい方法はなさそうな気配。

<参考>
http://blog.quilitz.de/2010/03/checkout-sub-directories-in-git-sparse-checkouts/
http://jasonkarns.com/blog/subdirectory-checkouts-with-git-sparse-checkout/

280
264
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
280
264