branch¶
For git-branch(1).
Overview¶
Manage git branches using GitBranchManager (collection-level)
and GitBranchCmd (per-branch operations).
Example¶
from libvcs.cmd.git import Git
git = Git(path='/path/to/repo')
# List all branches
branches = git.branches.ls()
# List remote branches only
remote_branches = git.branches.ls(remotes=True)
# Create a new branch
git.branches.create('feature-branch')
# Get a specific branch and operate on it
branch = git.branches.get(branch_name='feature-branch')
branch.rename('new-feature')
branch.delete()
API Reference¶
Bases:
objectTraverse and manage git branches with ORM-like filtering via QueryList.
Wrap some of git-branch(1), git-checkout(1), manager.
Examples
>>> GitBranchManager(path=tmp_path) <GitBranchManager path=...>
>>> GitBranchManager(path=tmp_path).run(quiet=True) 'fatal: not a git repository (or any of the parent directories): .git'
>>> GitBranchManager( ... path=example_git_repo.path).run(quiet=True) '* master'
Run a command against a git repository’s branches.
Wraps git branch.
Examples
>>> GitBranchManager(path=example_git_repo.path).run() '* master'
Git branch checkout.
Examples
>>> GitBranchManager(path=example_git_repo.path).checkout(branch='master') "Your branch is up to date with 'origin/master'."
Create a git branch.
Examples
>>> GitBranchManager(path=example_git_repo.path).create(branch='master') "fatal: a branch named 'master' already exists"
List branches.
- Parameters:
_all (bool) – List all branches (local + remote). Maps to –all.
remotes (bool) – List remote branches only. Maps to –remotes.
merged (str | None) – Only list branches merged into specified commit.
no_merged (str | None) – Only list branches NOT merged into specified commit.
contains (str | None) – Only list branches containing specified commit.
sort (str | None) – Sort key (e.g., ‘-committerdate’, ‘refname’).
verbose (bool) – Show sha1 and commit subject line for each head. Maps to –verbose.
- Return type:
Examples
>>> branches = GitBranchManager(path=example_git_repo.path).ls() >>> any(b.branch_name == 'master' for b in branches) True
Get branch via filter lookup.
Examples
>>> GitBranchManager( ... path=example_git_repo.path ... ).get(branch_name='master') <GitBranchCmd path=... branch_name=master>
>>> GitBranchManager( ... path=example_git_repo.path ... ).get(branch_name='unknown') Traceback (most recent call last): exec(compile(example.source, filename, "single", ... return self.ls().get(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "..._internal/query_list.py", line ..., in get raise ObjectDoesNotExist libvcs._internal.query_list.ObjectDoesNotExist
- Parameters:
- Return type:
Get branches via filter lookup.
Examples
>>> GitBranchManager( ... path=example_git_repo.path ... ).filter(branch_name__contains='master') [<GitBranchCmd path=... branch_name=master>]
>>> GitBranchManager( ... path=example_git_repo.path ... ).filter(branch_name__contains='unknown') []
- Parameters:
- Return type:
Bases:
objectRun git commands targeting a specific branch.
Lite, typed, pythonic wrapper for git-branch(1).
Examples
>>> GitBranchCmd( ... path=tmp_path, ... branch_name='master' ... ) <GitBranchCmd path=... branch_name=master>
>>> GitBranchCmd( ... path=tmp_path, ... branch_name='master' ... ).run(quiet=True) 'fatal: not a git repository (or any of the parent directories): .git'
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).run(quiet=True) '* master'
Run a command against a git repository’s branch.
Wraps git branch.
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).run() '* master'
Git branch checkout.
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).checkout() "Your branch is up to date with 'origin/master'."
- Return type:
Create a git branch.
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).create() "fatal: a branch named 'master' already exists"
Delete this git branch.
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='nonexistent' ... ).delete() "error: branch 'nonexistent' not found"
Rename this git branch.
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).rename('main') ''
Copy this git branch.
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).copy('master-copy') ''
Set the upstream (tracking) branch.
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).set_upstream('origin/master') "branch 'master' set up to track 'origin/master'."
Remove the upstream (tracking) information.
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).unset_upstream() ''
Create branch tracking a remote branch.
Wraps git branch -t.
Examples
For existing branches, use set_upstream() instead. track() is for creating new branches that track a remote:
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='tracking-branch' ... ).track('origin/master') "branch 'tracking-branch' set up to track 'origin/master'."