美文网首页
Git 通过https协议Clone Push Pull 远程的

Git 通过https协议Clone Push Pull 远程的

作者: 编程go | 来源:发表于2017-09-23 19:19 被阅读287次

    Git Hub ---- “火星”上最常用分布式远程代码仓库。其本质就是运行着Git的服务器,他为“火星”上最有梦想的一群人提供代码托管和交流的平台。Git Hub 平台使用里两种协议实现本地代码与远程仓库的连接,它们分别是SSH和HTTPs。关于SSH 协议的教程请参照廖雪峰的教程,下面将记录我在使用HTTPs协议与阿里云code(国内大厂的维护代码托管平台),仓库交互时踩过的坑。

    1. 那些年遇到过的issue

    在通过HTTPs协议向阿里云code私有仓库push代码的时候总是提示:You are not allowed push code to protected branches on this project.
    以我使用Git Hub的经验,每次在向master仓库push的时候要输入用户名和密码验证身份。但是此次没有任何关于用户名的密码的提示,直接让错误信息向我砸来。

    问题.PNG

    2. 一步步接近真相

    猜测:我不久前在阿里云Code平台上clone并push同事的账户的仓库,是不是那次在本地缓存或是存储了同事的用户名和密码。如果是这个问题我要查一下Git缓存账户名和密码的策略。

    Git 使用credential实现本地缓存cache或存储store远程服务器的用户名和密码。由于上次于阿里云code交互code是已有一段时间,这样只可能是由于本地存储了远程仓库的用户名和密码。

    通过以下命令查看自己的系统支持的credential的方式:

    git help -a | grep credential Mac 系统

    git help -a | findstr credential Windows 系统

    credential的类型.PNG

    Issue 1: 系统支持那么多种credential helper,那么系统会优先使用哪一个呢?

    所有的credential helper都属于git config的范畴,git config根据作用域分为三种:
    - 当前仓库下,位于当前项目文件的.git文件里面
    - 全局环境下,位于PC机器用户名文件夹下面的 .gitconfig
    - 系统环境下,位于PC机器中的git的安装目录下的 ...Git\etc
    因此系统环境的权限大于全局环境,全局环境的权限大于当前仓库的作用域。

    Issue 2 : 如何查看系统中使用的是哪个?

    git config --list

    查看配置.PNG

    上图中高亮的就是实际启动作用的credential.helper的类型。

    查看当前实际作用的credential.helper 属于哪种范畴?

    git config [--local] [--global] [--system] --list

    credential.helper

    Issue 3:如何解决?

    • 直接删除对应的配置

    git config [--local] [--global] [--system] --unset credential.helper

    • 重新配置 (建议配置成全局级别)

    git config --global credential.helper store

    这样就会在机器用户名的文件夹下的.gitconfig中出现相应的添加

    [user]
        name = xxxx email = yy@zz.com
    [http]
    [http]
        proxy = 10.176.49.2:8080
    [credential]
    [credential]
        helper = store
    

    3. 本地与远程仓库交互

    • 关联远程仓库

    git remote add origin [URL]

    • 第一次推送分支, 同时会要求输入用户名和密码

    git push -u origin master

    这时就会在机器用户名文件夹下生成.getcredenital 文件

    https://[username]:[password]@code.aliyun.com
    
    
    • 以后推送分支,都会默认使用上面的用户名与密码

    git push origin master

    相关文章

      网友评论

          本文标题:Git 通过https协议Clone Push Pull 远程的

          本文链接:https://www.haomeiwen.com/subject/gsncextx.html