如何通过GitPython使用--atomic参数原子推送多个Git分支
GitPython使用--atomic参数推送多分支失败的解决方案
你调用失败的核心原因是参数传递方式错误:
GitPython执行git命令时是将参数列表直接传递给系统调用,不会经过shell的空格拆分逻辑。你把branch1 branch2 branch3三个分支合并成一个字符串传入,会被Git识别为单个名为branch1 branch2 branch3的分支,自然找不到对应引用导致执行失败。你看到的日志输出只是GitPython为了便于阅读将参数拼接后的结果,和实际传参逻辑不一致。
正确的写法是将每个分支作为单独的参数传递:
Repo.git.push("--atomic", "origin", "branch1", "branch2", "branch3")
如果你的分支名存在列表中,可以用参数解包的方式简化写法:
push_branches = ["branch1", "branch2", "branch3"] Repo.git.push("--atomic", "origin", *push_branches)
以上写法已经过实测,完全兼容Git 2.4及以上版本的--atomic推送特性。
内容的提问来源于stack exchange,提问作者Joeford2295
相关产品推荐
相关产品推荐

