Skip to content

Latest commit

 

History

History
225 lines (188 loc) · 21.3 KB

File metadata and controls

225 lines (188 loc) · 21.3 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
sparse-checkout - sparse-checkout
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 ⚠️ (partial) It supports default merge strategy --strategy=ort and underlying auto-conflict resolve strategy options --strategy-option which are theirs and ours.
diff Patch object with UnifiedDiff output representation.
rebase
revert

Debugging

Feature Sub-feature Status Notes Examples
bisect ⚠️ Using Log, ForEach and Checkout. - See tests (search for TestCheckoutBisect in the repository)
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 (*git.Repository).RepackObjects.

Server admin

Feature Sub-feature Status Notes Examples
daemon ⚠️ (partial) via https://github.com/go-git/cli
update-server-info update-server-info

Advanced

Feature Sub-feature Status Notes Examples
notes
replace
worktree add ⚠️ (partial) Creation and opening of linked worktrees via the x/plumbing/worktree package. Not all flags or subcommands are supported. - worktrees

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 SHA-256
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) ⚠️ (partial) Requires filesystem-backed storage; shallow fetch is not supported.
http(s):// (smart)
git://
ssh://
file://
Custom All existing schemes can be replaced by custom implementations. - custom_http

Other features

Feature Sub-feature Status Notes Examples
config --local Read and write per-repository (.git/config).
config --global
--system
Read-only.
config --worktree Read and write per-worktree (.git/worktrees/<name>/config.worktree). Requires extensions.worktreeConfig=true.
gitignore
gitattributes
git-worktree add, remove and list ⚠️ (partial) Not all flags nor subcommands are supported. - worktrees
extensions worktreeConfig Per-worktree config.worktree files are read and overlaid on the common config when this extension is enabled. Supported only by storage.filesystem.