Welcome to 2021! This is my first blog post of the new year and I'm excited to get back to writing. Let's dive right in.
The Task: Pulling a Frontend Repository From a Combined Frontend/Backend Project
I've worked on a project for some time that has one GitHub repository containing both the frontend and backend applications.
PROJECT/ .git/ BACKEND/ FRONTEND/
Recently, it finally came time to split these applications apart:
BACKEND/ .git/ APP/ FRONTEND/ .git/ APP/
Preserving Git History
One obviously problem with creating a new repository from a subfolder is preserving git history. Losing years of git history or losing current branches in development would have been a non-starter.
This post shares the exact steps I used to create a new frontend repository from the project while preserving git history. The key here was a tool called git filter-repo. The git CLI itself advised me to use git filter repo instead of the native git filter-branch command.
- Install git-filter-repo
brew install git-filter-repo
- Change directories to the location where you would like to create the new frontend repository
- Clone down the original PROJECT repository and change directories
git clone firstname.lastname@example.org:[PROJECT] cd PROJECT
- Run git filter-repo
git filter-repo --subdirectory-filter FRONTEND/ --tag-rename '':'frontend'
- Create FRONTEND repository in GitHub
- Add the remote branch
cd FRONTEND git remote add origin email@example.com:[FRONTEND] git branch -M main git push -u origin main
- Push all git branches to the remote
git push remote --all
And that's it! I hope you found this post useful and thank you for reading.