Skip to main content
Plumbing manipulator commands are low-level Git commands that directly manipulate the internal Git objects and data structures. These commands are typically used in scripts or by advanced users who need fine-grained control.

git-apply

Apply a patch to files and/or to the index

git-checkout-index

Copy files from the index to the working tree

git-commit-graph

Write and verify Git commit-graph files

git-commit-tree

Create a new commit object

git-hash-object

Compute object ID and optionally creates a blob from a file

git-index-pack

Build pack index file for an existing packed archive

git-merge-file

Run a three-way file merge

git-merge-index

Run a merge for files needing merging

git-mktag

Creates a tag object with extra validation

git-mktree

Build a tree object from ls-tree formatted text

git-multi-pack-index

Write and verify multi-pack-indexes

git-pack-objects

Create a packed archive of objects

git-prune-packed

Remove extra objects that are already in pack files

git-read-tree

Read tree information into the index

git-replay

Replay commits on top of a new base

git-symbolic-ref

Read, modify and delete symbolic refs

git-unpack-objects

Unpack objects from a packed archive

git-update-index

Register file contents in the working tree to the index

git-update-ref

Update the object name stored in a ref safely

git-write-tree

Create a tree object from the current index

Overview

Plumbing commands provide direct access to Git’s internal mechanisms:
  • Object manipulation - Create and modify Git objects (blobs, trees, commits, tags)
  • Index operations - Directly manipulate the staging area
  • Pack management - Handle packfile creation and optimization
  • Reference handling - Manipulate refs at a low level
These commands are primarily intended for use in scripts and by Git porcelain commands. Most users should use the higher-level porcelain commands instead.