Using Git Hooks When Creating Worktrees
I’ve started to use git worktree
s more lately but one of the pain points
I had was that they don’t copied ignored files such as .env
files. I
found I was able to improve this workflow by adding a post-checkout
hook.
In a nutshell, the hook will check if we are checking out a new worktree
(that’s what the "$1" == "0000..."
is all about). If we are, then we can
run some code to copy over whatever files we need to.
.git/hooks/post-checkout
#!/bin/bash
if [[ "$1" == "0000000000000000000000000000000000000000" ]]; then
basePath="$HOME/dev/repo"
paths=(.env)
for path in "${paths[@]}"; do
cp "$basePath/$path" "$(pwd)/$path"
done
fi