如何使用 GitPython 签出分支

How to check out a branch with GitPython

我已经使用 GitPython 克隆了一个存储库,现在我想签出一个分支并使用该分支的内容更新本地存储库的工作树。理想情况下,我还可以在执行此操作之前检查分支是否存在。这是我目前所拥有的:

import git

repo_clone_url = "git@github.com:mygithubuser/myrepo.git"
local_repo = "mytestproject"
test_branch = "test-branch"
repo = git.Repo.clone_from(repo_clone_url, local_repo)
# Check out branch test_branch somehow
# write to file in working directory
repo.index.add(["test.txt"])
commit = repo.index.commit("Commit test")

我不确定用什么来代替上面的评论。 documentation 似乎给出了如何分离 HEAD 的示例,但没有给出如何检出命名分支的示例。

如果分支存在:

repo.git.checkout('branchename')

如果没有:

repo.git.checkout('-b', 'branchename')

基本上,使用 GitPython,如果您知道如何在命令行中执行此操作,但不知道如何在 API 中执行,只需使用 repo.git.action("your command without leading 'git' and 'action'"),示例:git log --reverse => repo.git.log('--reverse')