Files
lazygit/vendor/github.com/jesseduffield/go-git/v5/COMPATIBILITY.md
2025-04-09 11:23:55 +02:00

21 KiB

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 ❌
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.