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¶
- class libvcs.cmd.git.GitBranchManager(*, path, cmd=None)[source]¶
Bases:
objectTraverse and manage git branches with ORM-like filtering via QueryList.
Wrap some of git-branch(1), git-checkout(1), manager.
- Parameters:
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'
- __init__(*, path, cmd=None)[source]¶
Wrap some of git-branch(1), git-checkout(1), manager.
- Parameters:
- Return type:
None
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'
- path:
Path¶ Directory to check out
- run(local_flags=None, *, quiet=None, log_in_real_time=False, check_returncode=None, **kwargs)[source]¶
Run a command against a git repository’s branches.
Wraps git branch.
- Return type:
- Parameters:
Examples
>>> GitBranchManager(path=example_git_repo.path).run() '* master'
- checkout(*, branch)[source]¶
Git branch checkout.
Examples
>>> GitBranchManager(path=example_git_repo.path).checkout(branch='master') "Your branch is up to date with 'origin/master'."
- create(*, branch, checkout=False)[source]¶
Create a git branch.
- Parameters:
- Return type:
Examples
>>> GitBranchManager(path=example_git_repo.path).create(branch='master') "fatal: a branch named 'master' already exists"
- _ls(*, local_flags=None)[source]¶
List branches (raw output).
Examples
>>> branches = GitBranchManager(path=example_git_repo.path)._ls() >>> '* master' in branches or 'master' in str(branches) True
- ls(*, _all=False, remotes=False, merged=None, no_merged=None, contains=None, sort=None, verbose=False)[source]¶
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(*args, **kwargs)[source]¶
Get branch via filter lookup.
- Return type:
- Parameters:
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
- filter(*args, **kwargs)[source]¶
Get branches via filter lookup.
- Return type:
- Parameters:
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') []
- class libvcs.cmd.git.GitBranchCmd(*, path, branch_name, cmd=None)[source]¶
Bases:
objectRun git commands targeting a specific branch.
Lite, typed, pythonic wrapper for git-branch(1).
- Parameters:
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'
- __init__(*, path, branch_name, cmd=None)[source]¶
Lite, typed, pythonic wrapper for git-branch(1).
- Parameters:
- Return type:
None
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'
- path:
Path¶ Directory to check out
- run(local_flags=None, *, quiet=None, log_in_real_time=False, check_returncode=None, **kwargs)[source]¶
Run a command against a git repository’s branch.
Wraps git branch.
- Return type:
- Parameters:
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).run() '* master'
- checkout()[source]¶
Git branch checkout.
- Return type:
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).checkout() "Your branch is up to date with 'origin/master'."
- create(*, checkout=False)[source]¶
Create a git branch.
- Parameters:
checkout (
bool) – If True, also checkout the newly created branch. Defaults to False (create only, don’t switch HEAD).- Return type:
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).create() "fatal: a branch named 'master' already exists"
- delete(*, force=False, log_in_real_time=False, check_returncode=None)[source]¶
Delete this git branch.
- Parameters:
- Return type:
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='nonexistent' ... ).delete() "error: branch 'nonexistent' not found"
- rename(new_name, *, force=False, log_in_real_time=False, check_returncode=None)[source]¶
Rename this git branch.
- Parameters:
- Return type:
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).rename('main') ''
- copy(new_name, *, force=False, log_in_real_time=False, check_returncode=None)[source]¶
Copy this git branch.
- Parameters:
- Return type:
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).copy('master-copy') ''
- set_upstream(upstream, *, log_in_real_time=False, check_returncode=None)[source]¶
Set the upstream (tracking) branch.
- Parameters:
- Return type:
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).set_upstream('origin/master') "branch 'master' set up to track 'origin/master'."
- unset_upstream(*, log_in_real_time=False, check_returncode=None)[source]¶
Remove the upstream (tracking) information.
Examples
>>> GitBranchCmd( ... path=example_git_repo.path, ... branch_name='master' ... ).unset_upstream() ''
- track(remote_branch, *, log_in_real_time=False, check_returncode=None)[source]¶
Create branch tracking a remote branch.
Wraps git branch -t.
- Parameters:
- Return type:
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'."