如何为GitPython设置默认分支

问题描述

使用gitpython,我可以使用以下内容创建新的存储库:

from git.repo.base import Repo

Repo.init('/tmp/some-repo/')

使用认分支master创建存储库。

如何修改认分支?

更新:如以下答案中所建议,我尝试使用Repo.init('/tmp/some-repo',initial_branch="main"),但是会出现此异常:

Traceback (most recent call last):
  File "/app/checker/tests.py",line 280,in test_alternative_compare_branch
    comp_repo_main = Repo.init(
  File "/usr/local/lib/python3.9/site-packages/git/repo/base.py",line 937,in init
    git.init(**kwargs)
  File "/usr/local/lib/python3.9/site-packages/git/cmd.py",line 542,in <lambda>
    return lambda *args,**kwargs: self._call_process(name,*args,**kwargs)
  File "/usr/local/lib/python3.9/site-packages/git/cmd.py",line 1005,in _call_process
    return self.execute(call,**exec_kwargs)
  File "/usr/local/lib/python3.9/site-packages/git/cmd.py",line 822,in execute
    raise GitCommandError(command,status,stderr_value,stdout_value)
git.exc.GitCommandError: Cmd('git') Failed due to: exit code(129)
  cmdline: git init --initial-branch=main
  stderr: 'error: unkNown option `initial-branch=main'

在git docs中,它指出用于设置初始分支的命令是--initial-branchhttps://git-scm.com/docs/git-init/2.28.0#Documentation/git-init.txt---initial-branchltbranch-namegt)。

错误的角度来看,我认为gitpython的其他kwargs功能不包含--前缀。

解决方法

According to the docsinit与关键字参数使用与git init相同的参数。您必须将-变成_

from git import Repo

Repo.init('/tmp/some-repo/',initial_branch='main')

更新

v2.28.0中的

initial-branch was added very recently。您需要升级Git才能使用它。

如果不能,请使用branch.rename(new_name)手动更改分支名称。不幸的是,直到 第一次提交后,您才能执行此操作,实际上还没有分支存在。这是Git的局限性,也是为什么他们添加了initial-branchinit.defaultBranch config option的原因。