Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用用户和密码进行git身份验证_Git_Authentication_Gitpython - Fatal编程技术网

使用用户和密码进行git身份验证

使用用户和密码进行git身份验证,git,authentication,gitpython,Git,Authentication,Gitpython,我正在使用GitPython,但没有找到使用用户名和密码推送到repo的方法。谁能给我一个工作的例子或给我一些如何做的指针? 我需要做的是: 将文件添加到存储库中,使用提供的用户名和密码推送它。我找到了这个可行的解决方案: 创建如下脚本: 在执行推送之前,请分配环境变量: os.environment['GIT\u ASKPASS']= os.environment['GIT_USERNAME']= 操作系统环境['GIT_PASSWORD']= 而且一切都很好。这是我用来拉车的 拉比 ask

我正在使用GitPython,但没有找到使用用户名和密码推送到repo的方法。谁能给我一个工作的例子或给我一些如何做的指针? 我需要做的是:
将文件添加到存储库中,使用提供的用户名和密码推送它。

我找到了这个可行的解决方案:

  • 创建如下脚本:
  • 在执行推送之前,请分配环境变量:
  • 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)