Clone All Files From a Single Git Branch Without Git History
When starting a new WordPress theme project I usually create a new Git repository for my custom theme to be stored in. Into that I want to clone the files of the starter theme I am using (Flynt), but without that project’s Git history (.git directory). Here are two ways to do that:
Use Git Commands to Clone Without History
I have my new repo locally at ~/code/new-theme and want to clone the next branch of the public https://github.com/flyntwp/flynt repo into that:
cd ~/code/new-theme
mkdir tempclonedir
cd tempclonedir
git clone --depth=1 --single-branch --branch next https://github.com/flyntwp/flynt .
rm -rf .git
cd ..
mv tempclonedir/{.,}* .
rm -r tempclonedir
Of course you can combine these commands into a one-liner like so:
cd ~/code/new-theme && mkdir tempclonedir && cd tempclonedir && git clone --depth=1 --single-branch --branch next https://github.com/flyntwp/flynt . && rm -rf .git && cd .. && mv tempclonedir/{.,}* . && rm -r tempclonedir
Using degit to Clone Single Git Branch
Alternatively you can use degit to make the same task easiert. It’s a Node.js package maintained by Rich Harris, the creator of Svelte.
First install degit globally:
npm install -g degit
Then to do the same as above run the following command:
cd ~/code/new-theme
degit https://github.com/flyntwp/flynt#next
Note: if you are cloning into a new git repo (that already has a hidden .git directory and therefore isn’t empty) you have to append the “–force” parameter.