git-mktree - Linux


git-mktree is a command used to create a tree object in the Git repository. A tree object represents a directory structure and is used as a building block for commits.


git mktree [options] <directory>


  • -r, –recursive: Recursively traverse the directory and include all its subdirectories and files.
  • -o, –object: Specify the name of the object to create.
  • -a, –attrs: Include extended file attributes in the tree.


Create a tree from a directory:

git mktree my-directory

Create a tree recursively:

git mktree -r my-directory

Create a tree and specify the object name:

git mktree -o my-tree my-directory

Create a tree including extended file attributes:

git mktree -a my-directory

Common Issues

  • Permission denied: Ensure you have write access to the repository.
  • Invalid or missing directory: Check that the specified directory exists and is valid.
  • Unexpected output: Verify the options used and ensure they align with your intended behavior.


Combine with git add:

git mktree my-directory && git add my-tree

Use with git commit-tree to create a commit:

tree_hash=$(git mktree my-directory)
git commit-tree $tree_hash -p HEAD

Related Commands

  • git add: Add files to the staging area.
  • git commit-tree: Create a commit with a specified tree.
  • git ls-tree: List contents of a tree.