Skip to content

Latest commit

 

History

History
233 lines (194 loc) · 21 KB

COMPATIBILITY.md

File metadata and controls

233 lines (194 loc) · 21 KB

Supported Features

Here is a non-comprehensive table of git commands and features and their compatibility status with go-git.

Getting and creating repositories

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 (private_key)
- clone ssh (ssh_agent)
- clone access token
- clone user + password
clone --progress
--single-branch
--depth
--origin
--recurse-submodules
--shared
- recurse submodules
- progress

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.