使用用户和密码进行git身份验证
我正在使用GitPython,但没有找到使用用户名和密码推送到repo的方法。谁能给我一个工作的例子或给我一些如何做的指针? 我需要做的是:使用用户和密码进行git身份验证,git,authentication,gitpython,Git,Authentication,Gitpython,我正在使用GitPython,但没有找到使用用户名和密码推送到repo的方法。谁能给我一个工作的例子或给我一些如何做的指针? 我需要做的是: 将文件添加到存储库中,使用提供的用户名和密码推送它。我找到了这个可行的解决方案: 创建如下脚本: 在执行推送之前,请分配环境变量: os.environment['GIT\u ASKPASS']= os.environment['GIT_USERNAME']= 操作系统环境['GIT_PASSWORD']= 而且一切都很好。这是我用来拉车的 拉比 ask
将文件添加到存储库中,使用提供的用户名和密码推送它。我找到了这个可行的解决方案:
os.environment['GIT\u ASKPASS']=
os.environment['GIT_USERNAME']=
操作系统环境['GIT_PASSWORD']=
而且一切都很好。这是我用来拉车的 拉比 askpass.py(与此类似) 这与
pull.py
位于同一目录中,并且不仅限于Github
#!/usr/bin/env python3
#
# Short & sweet script for use with git clone and fetch credentials.
# Requires GIT_USERNAME and GIT_PASSWORD environment variables,
# intended to be called by Git via GIT_ASKPASS.
#
from sys import argv
from os import environ
if 'username' in argv[1].lower():
print(environ['GIT_USERNAME'])
exit()
if 'password' in argv[1].lower():
print(environ['GIT_PASSWORD'])
exit()
exit(1)
对我来说效果很好的东西(与GitHub、自托管BitBucket一起使用,很可能也会在GitLab上使用)
预备知识
请注意,尽管名称是,password
,但这里是由GitHub生成的访问令牌,而不是GitHub密码
来自git导入回购的
完整的本地路径=“/path/to/repo/”
username=“您的用户名”
password=“您的密码”
remote=f“https://{username}:{password}@github.com/some-account/some-repo.git”
克隆存储库
这将把您的凭据存储在.git/config
中,以后您将不再需要它们
Repo.clone\u from(远程、完整\u本地\u路径)
提交更改
repo=repo(完整本地路径)
repo.git.add(“rel/path/to/dir/with/changes/”)
repo.index.commit(“某些提交消息”)
推动变革
如上所述,您不需要凭据,因为它们已经存储在.git/config
中
repo=repo(完整本地路径)
origin=回购远程(name=“origin”)
origin.push()
我们是否也需要询问_pass.py,如果是,那么如何询问?我发布的链接中提供了一个ask_pass.py的工作示例。请查看类似问题的答案,这似乎不是使用GitPython的正确方法,因为“如果您想解析输出,您最终会看到一个‘瓷’命令的结果,这是一个坏主意”:
#! /usr/bin/env python3
import git
import os
from getpass import getpass
project_dir = os.path.dirname(os.path.abspath(__file__))
os.environ['GIT_ASKPASS'] = os.path.join(project_dir, 'askpass.py')
os.environ['GIT_USERNAME'] = username
os.environ['GIT_PASSWORD'] = getpass()
g = git.cmd.Git('/path/to/some/local/repo')
g.pull()
#!/usr/bin/env python3
#
# Short & sweet script for use with git clone and fetch credentials.
# Requires GIT_USERNAME and GIT_PASSWORD environment variables,
# intended to be called by Git via GIT_ASKPASS.
#
from sys import argv
from os import environ
if 'username' in argv[1].lower():
print(environ['GIT_USERNAME'])
exit()
if 'password' in argv[1].lower():
print(environ['GIT_PASSWORD'])
exit()
exit(1)