小编dec*_*ard的帖子

使用 Gitpython 将新的本地分支推送到远程

我查看了一些参考资料,但仍然遇到问题:

我想克隆一个远程仓库,创建一个新分支,然后使用 GitPython 将新分支推送回远程。

这似乎有效:

import git
import subprocess

nm_brnch = 'new_branch'

# Clone    
repo_url = r'my_remote.git'
repo = git.Repo.clone_from(repo_url, dnm_wrk, branch=r'some_branch')

# Create new branch
git = repo.git
git.checkout('HEAD', b=nm_brnch)

# Push new branch to remote
subprocess.call(f'git push -u origin {nm_brnch}')
Run Code Online (Sandbox Code Playgroud)

但它很难看,因为它使用subprocess, 而不是使用 GitPython。

我尝试使用 GitPython,但没有成功:

repo.head.set_reference(nm_brnch)
repo.git.push("origin", nm_brnch)
Run Code Online (Sandbox Code Playgroud)

我查阅了以下参考资料:

python gitpython

5
推荐指数
1
解决办法
2391
查看次数

使用元组作为 lambda 的参数会引发有关缺少所需位置参数的错误

在另一个线程(基于序列中缺失数字的Python拆分列表)中,我找到了这个解决方案:

data = [1,  4,5,6, 10, 15,16,17,18, 22, 25,26,27,28]

for k, g in groupby(enumerate(data), lambda (i,x):i-x):
    print map(itemgetter(1), g)
Run Code Online (Sandbox Code Playgroud)

我是Python新手,尝试将其适应Python 3.4:

for k, g in groupby(enumerate(data), lambda i,x :i-x):
    print('%s' % list(map(itemgetter(1), g)))
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

<lambda>() missing 1 required positional argument: 'x'
Run Code Online (Sandbox Code Playgroud)

我(有限)的理解是,groupby 语句中的关键函数仍然链接到需要两个参数的 lambda 函数。是对的吗?更重要的是,有没有办法改编上面的代码?这是一个非常优雅和紧凑的解决方案。

python lambda python-3.x

2
推荐指数
1
解决办法
1919
查看次数

标签 统计

python ×2

gitpython ×1

lambda ×1

python-3.x ×1