Create an orphaned, empty tree branch in Git

This blurb creates a git branch with a single, parent-less commit, with an empty tree. In other words, it’s an orphan with a commit but no files.

You can achieve this by checking out an orphaned branch and then commit --allow-empty. However, the blurb below doesn’t require you to switch your worktree to a new branch.

I’ve used this trick when I want to commit a subdirectory into a new, empty branch. I pass this branch to git worktree add -b new-branch dir-name empty-orphan.

# Create and save an empty tree object
treehash="$( git hash-object -w -t tree /dev/null )"
# Create a parent-less commit with empty tree
commithash="$( git commit-tree "$treehash" -m "Empty tree" )"
# Create an orphan branch at the new commit
git branch empty-orphan "$commithash"


Leave a Comment