如何使用GitPython checkout 分支

kse8i1jr  于 2023-10-14  发布在  Git
关注(0)|答案(2)|浏览(128)

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

import git

repo_clone_url = "[email protected]: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")

我不知道该用什么来代替上面的评论。文档似乎给予了一个如何分离HEAD的例子,但没有给出如何 checkout 一个命名的分支的例子。

g6ll5ycj

g6ll5ycj1#

如果存在分支:

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')*
oogrdqng

oogrdqng2#

gitpython中的分支的相同检出(与repo.git.checkout(..)相同)可以通过**“高级Repo用法”**(低级API)实现,如下所示:

new_branch = repo.create_head("new_branch")
assert repo.active_branch != new_branch  # It's not checked out yet

repo.head.reference = new_branch  # this makes the ckeckout
assert not repo.head.is_detached

相关问题