Supported Features
Here is a non-comprehensive table of git commands and features and their
compatibility status with go-git.
Getting and creating repositories
Basic snapshotting
Feature |
Sub-feature |
Status |
Notes |
Examples |
add |
|
✅ |
Plain add is supported. Any other flags aren't supported |
|
status |
|
✅ |
|
|
commit |
|
✅ |
|
- commit |
reset |
|
✅ |
|
|
rm |
|
✅ |
|
|
mv |
|
✅ |
|
|
Branching and merging
Feature |
Sub-feature |
Status |
Notes |
Examples |
branch |
|
✅ |
|
- branch |
checkout |
|
✅ |
Basic usages of checkout are supported. |
- checkout |
merge |
|
⚠️ (partial) |
Fast-forward only |
|
mergetool |
|
❌ |
|
|
stash |
|
❌ |
|
|
tag |
|
✅ |
|
- tag - tag create and push |
Sharing and updating projects
Feature |
Sub-feature |
Status |
Notes |
Examples |
fetch |
|
✅ |
|
|
pull |
|
✅ |
Only supports merges where the merge can be resolved as a fast-forward. |
- pull |
push |
|
✅ |
|
- push |
remote |
|
✅ |
|
- remotes |
submodule |
|
✅ |
|
- submodule |
submodule |
deinit |
❌ |
|
|
Inspection and comparison
Feature |
Sub-feature |
Status |
Notes |
Examples |
show |
|
✅ |
|
|
log |
|
✅ |
|
- log |
shortlog |
|
(see log) |
|
|
describe |
|
❌ |
|
|
Patching
Feature |
Sub-feature |
Status |
Notes |
Examples |
apply |
|
❌ |
|
|
cherry-pick |
|
❌ |
|
|
diff |
|
✅ |
Patch object with UnifiedDiff output representation. |
|
rebase |
|
❌ |
|
|
revert |
|
❌ |
|
|
Debugging
Feature |
Sub-feature |
Status |
Notes |
Examples |
bisect |
|
❌ |
|
|
blame |
|
✅ |
|
- blame |
grep |
|
✅ |
|
|
Email
Feature |
Sub-feature |
Status |
Notes |
Examples |
am |
|
❌ |
|
|
apply |
|
❌ |
|
|
format-patch |
|
❌ |
|
|
send-email |
|
❌ |
|
|
request-pull |
|
❌ |
|
|
External systems
Feature |
Sub-feature |
Status |
Notes |
Examples |
svn |
|
❌ |
|
|
fast-import |
|
❌ |
|
|
lfs |
|
❌ |
|
|
Administration
Feature |
Sub-feature |
Status |
Notes |
Examples |
clean |
|
✅ |
|
|
gc |
|
❌ |
|
|
fsck |
|
❌ |
|
|
reflog |
|
❌ |
|
|
filter-branch |
|
❌ |
|
|
instaweb |
|
❌ |
|
|
archive |
|
❌ |
|
|
bundle |
|
❌ |
|
|
prune |
|
❌ |
|
|
repack |
|
❌ |
|
|
Server admin
Feature |
Sub-feature |
Status |
Notes |
Examples |
daemon |
|
❌ |
|
|
update-server-info |
|
✅ |
|
cli |
Advanced
Feature |
Sub-feature |
Status |
Notes |
Examples |
notes |
|
❌ |
|
|
replace |
|
❌ |
|
|
worktree |
|
❌ |
|
|
annotate |
|
(see blame) |
|
|
GPG
Feature |
Sub-feature |
Status |
Notes |
Examples |
git-verify-commit |
|
✅ |
|
|
git-verify-tag |
|
✅ |
|
|
Plumbing commands
Feature |
Sub-feature |
Status |
Notes |
Examples |
cat-file |
|
✅ |
|
|
check-ignore |
|
❌ |
|
|
commit-tree |
|
❌ |
|
|
count-objects |
|
❌ |
|
|
diff-index |
|
❌ |
|
|
for-each-ref |
|
✅ |
|
|
hash-object |
|
✅ |
|
|
ls-files |
|
✅ |
|
|
ls-remote |
|
✅ |
|
- ls-remote |
merge-base |
--independent --is-ancestor |
⚠️ (partial) |
Calculates the merge-base only between two commits. |
- merge-base |
merge-base |
--fork-point --octopus |
❌ |
|
|
read-tree |
|
❌ |
|
|
rev-list |
|
✅ |
|
|
rev-parse |
|
❌ |
|
|
show-ref |
|
✅ |
|
|
symbolic-ref |
|
✅ |
|
|
update-index |
|
❌ |
|
|
update-ref |
|
❌ |
|
|
verify-pack |
|
❌ |
|
|
write-tree |
|
❌ |
|
|
Indexes and Git Protocols
Feature |
Version |
Status |
Notes |
index |
v1 |
❌ |
|
index |
v2 |
✅ |
|
index |
v3 |
❌ |
|
pack-protocol |
v1 |
✅ |
|
pack-protocol |
v2 |
❌ |
|
multi-pack-index |
v1 |
❌ |
|
pack-*.rev files |
v1 |
❌ |
|
pack-*.mtimes files |
v1 |
❌ |
|
cruft packs |
|
❌ |
|
Capabilities
Feature |
Status |
Notes |
multi_ack |
❌ |
|
multi_ack_detailed |
❌ |
|
no-done |
❌ |
|
thin-pack |
❌ |
|
side-band |
⚠️ (partial) |
|
side-band-64k |
⚠️ (partial) |
|
ofs-delta |
✅ |
|
agent |
✅ |
|
object-format |
❌ |
|
symref |
✅ |
|
shallow |
✅ |
|
deepen-since |
✅ |
|
deepen-not |
❌ |
|
deepen-relative |
❌ |
|
no-progress |
✅ |
|
include-tag |
✅ |
|
report-status |
✅ |
|
report-status-v2 |
❌ |
|
delete-refs |
✅ |
|
quiet |
❌ |
|
atomic |
✅ |
|
push-options |
✅ |
|
allow-tip-sha1-in-want |
✅ |
|
allow-reachable-sha1-in-want |
❌ |
|
push-cert=<nonce> |
❌ |
|
filter |
❌ |
|
session-id=<session id> |
❌ |
|
Transport Schemes
Scheme |
Status |
Notes |
Examples |
http(s):// (dumb) |
❌ |
|
|
http(s):// (smart) |
✅ |
|
|
git:// |
✅ |
|
|
ssh:// |
✅ |
|
|
file:// |
⚠️ (partial) |
Warning: this is not pure Golang. This shells out to the git binary. |
|
Custom |
✅ |
All existing schemes can be replaced by custom implementations. |
- custom_http |
SHA256
Feature |
Sub-feature |
Status |
Notes |
Examples |
init |
|
✅ |
Requires building with tag sha256. |
- init |
commit |
|
✅ |
Requires building with tag sha256. |
- commit |
pull |
|
❌ |
|
|
fetch |
|
❌ |
|
|
push |
|
❌ |
|
|
Other features
Feature |
Sub-feature |
Status |
Notes |
Examples |
config |
--local |
✅ |
Read and write per-repository (.git/config ). |
|
config |
--global --system |
✅ |
Read-only. |
|
gitignore |
|
✅ |
|
|
gitattributes |
|
✅ |
|
|
git-worktree |
|
❌ |
Multiple worktrees are not supported. |
|