For git(1).
Compare to: fabtools.git,
salt.modules.git,
ansible.builtin.git
libvcs provides a Manager/Cmd pattern for git subcommands:
- Manager classes (
git.branches,git.tags, etc.) handle collection-level operations - Cmd classes represent individual entities with mutation methods
Git instance
├── branches: GitBranchManager
│ ├── ls() -> QueryList[GitBranchCmd]
│ ├── get() -> GitBranchCmd
│ └── create()
├── tags: GitTagManager
├── remotes: GitRemoteManager
├── stashes: GitStashManager
├── worktrees: GitWorktreeManager
├── notes: GitNotesManager
├── submodules: GitSubmoduleManager
└── reflog: GitReflogManager
from libvcs.cmd.git import Git
git = Git(path='/path/to/repo')
# List all branches
branches = git.branches.ls()
# Filter to remote branches only
remote_branches = git.branches.ls(remotes=True)
# Get a specific branch and rename it
branch = git.branches.get(branch_name='old-name')
branch.rename('new-name')
# Create and manage tags
git.tags.create(name='v1.0.0', message='Release 1.0')
tag = git.tags.get(tag_name='v1.0.0')
tag.delete():caption: Subcommands
:maxdepth: 1
submodule
remote
stash
branch
tag
worktree
notes
reflog
.. automodule:: libvcs.cmd.git
:members:
:show-inheritance:
:undoc-members:
:exclude-members: GitSubmoduleCmd,
GitSubmoduleManager,
GitSubmodule,
GitSubmoduleEntryCmd,
GitRemoteCmd,
GitRemoteManager,
GitStashCmd,
GitStashManager,
GitStashEntryCmd,
GitBranchCmd,
GitBranchManager,
GitTagCmd,
GitTagManager,
GitWorktreeCmd,
GitWorktreeManager,
GitNoteCmd,
GitNotesManager,
GitReflogEntry,
GitReflogEntryCmd,
GitReflogManager