Here is a non-comprehensive table of git commands and features and their compatibility status with go-git.
Feature | Sub-feature | Status | Notes | Examples |
---|---|---|---|---|
init |
✅ | |||
init |
--bare |
✅ | ||
init |
--template --separate-git-dir --shared |
❌ | ||
clone |
✅ | - PlainClone | ||
clone |
Authentication: - none - access token - username + password - ssh |
✅ | - clone ssh - clone access token - clone user + password |
|
clone |
--progress --single-branch --depth --origin --recurse-submodules --shared |
✅ | - recurse submodules - progress |
Feature | Sub-feature | Status | Notes | Examples |
---|---|---|---|---|
add |
✅ | Plain add is supported. Any other flags aren't supported | ||
status |
✅ | |||
commit |
✅ | - commit | ||
reset |
✅ | |||
rm |
✅ | |||
mv |
✅ |
Feature | Sub-feature | Status | Notes | Examples |
---|---|---|---|---|
branch |
✅ | - branch | ||
checkout |
✅ | Basic usages of checkout are supported. | - checkout | |
merge |
Fast-forward only | |||
mergetool |
❌ | |||
stash |
❌ | |||
tag |
✅ | - tag - tag create and push |
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 | ❌ |
Feature | Sub-feature | Status | Notes | Examples |
---|---|---|---|---|
show |
✅ | |||
log |
✅ | - log | ||
shortlog |
(see log) | |||
describe |
❌ |
Feature | Sub-feature | Status | Notes | Examples |
---|---|---|---|---|
apply |
❌ | |||
cherry-pick |
❌ | |||
diff |
✅ | Patch object with UnifiedDiff output representation. | ||
rebase |
❌ | |||
revert |
❌ |
Feature | Sub-feature | Status | Notes | Examples |
---|---|---|---|---|
bisect |
❌ | |||
blame |
✅ | - blame | ||
grep |
✅ |
Feature | Sub-feature | Status | Notes | Examples |
---|---|---|---|---|
am |
❌ | |||
apply |
❌ | |||
format-patch |
❌ | |||
send-email |
❌ | |||
request-pull |
❌ |
Feature | Sub-feature | Status | Notes | Examples |
---|---|---|---|---|
svn |
❌ | |||
fast-import |
❌ | |||
lfs |
❌ |
Feature | Sub-feature | Status | Notes | Examples |
---|---|---|---|---|
clean |
✅ | |||
gc |
❌ | |||
fsck |
❌ | |||
reflog |
❌ | |||
filter-branch |
❌ | |||
instaweb |
❌ | |||
archive |
❌ | |||
bundle |
❌ | |||
prune |
❌ | |||
repack |
❌ |
Feature | Sub-feature | Status | Notes | Examples |
---|---|---|---|---|
daemon |
❌ | |||
update-server-info |
✅ | cli |
Feature | Sub-feature | Status | Notes | Examples |
---|---|---|---|---|
notes |
❌ | |||
replace |
❌ | |||
worktree |
❌ | |||
annotate |
(see blame) |
Feature | Sub-feature | Status | Notes | Examples |
---|---|---|---|---|
git-verify-commit |
✅ | |||
git-verify-tag |
✅ |
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 |
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 |
❌ |
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 | ❌ |
Feature | Status | Notes |
---|---|---|
multi_ack |
❌ | |
multi_ack_detailed |
❌ | |
no-done |
❌ | |
thin-pack |
❌ | |
side-band |
||
side-band-64k |
||
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> |
❌ |
Scheme | Status | Notes | Examples |
---|---|---|---|
http(s):// (dumb) |
❌ | ||
http(s):// (smart) |
✅ | ||
git:// |
✅ | ||
ssh:// |
✅ | ||
file:// |
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 |
Feature | Sub-feature | Status | Notes | Examples |
---|---|---|---|---|
init |
✅ | Requires building with tag sha256. | - init | |
commit |
✅ | Requires building with tag sha256. | - commit | |
pull |
❌ | |||
fetch |
❌ | |||
push |
❌ |
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. |