Cloning subtree/subdirectory of git repo
Solution 1
the only other way I can think of doing it, is cloning the whole repo to some temp directory and then copying the files over, but that's not as much fun.
Yet, this is preferable, considering that even a partial clone, if it existed, would still preserve the asset/tools path structure.
You can do a sparse checkout elsewhere, and then copy your files.
With Git 2.17/2.18, you can attempt a partial or narrow clone, to clone only a subfolder, but that supposes the remote server does support this new feature.
Another more classic option is to use (if the remote repository supports it) the archive (zip file) of the latest HEAD: see "How to checkout only one file from git repository ('sparse checkout')?", but apply to a subfolder of the archive, instead of a file.
Solution 2
For Github repos, you can clone any sub-directories of any repo using the tool github-clone
Install it like this:
pip install git+git://github.com/HR/github-clone#egg=ghclone
Then use it like this:
ghclone https://github.com/HR/Crypter/tree/dev/app
Related videos on Youtube
Alexander Mills
Dev, Devops, soccer coach. https://www.github.com/oresoftware
Updated on June 05, 2022Comments
-
Alexander Mills almost 2 years
I have a git repo on Github, looks like so:
.git/ assets/ tools/ a.sh b.sh c.sh
of course the .git folder is not in version control, but you get the idea. And I want to copy the tools/*.sh to a local directory, at this path:
./scripts/git/tools
My current directory is a git repo that shares a totally different history than the remote git repo, I just want to copy some files from the remote, I don't want to merge anything.
I figure I could do something like this:
git clone --path assets/tools/*.sh "$remote_repo" ./scripts/git/tools
but that command is not real, is there some command I can use to do this?
the only other way I can think of doing it, is cloning the whole repo to some temp directory and then copying the files over, but that's not as much fun.
-
lakshayg almost 6 yearsPossibly a duplicate of stackoverflow.com/questions/180052/…
-
lakshayg almost 6 yearsPossible duplicate of Checkout subdirectories in Git?
-
johnb003 almost 6 yearsThis may be useful, in learning about trimming the fat of big repos: atlassian.com/blog/git/handle-big-repositories-git
-
-
johnb003 almost 6 yearsThe only thing I would add is maybe do a shallow clone: git clone --depth 1 --branch [branch_name] --single-branch
-
VonC almost 6 years@johnb003 I agree: that would really limit the amount of data cloned.
-
blockhead over 2 yearsThis is a very straight forward answer.