问题描述
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-branch
(https://git-scm.com/docs/git-init/2.28.0#Documentation/git-init.txt---initial-branchltbranch-namegt)。
从错误的角度来看,我认为gitpython的其他kwargs功能不包含--
前缀。
解决方法
According to the docs,init
与关键字参数使用与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-branch
和init.defaultBranch
config option的原因。