zoukankan      html  css  js  c++  java
  • 有关 Git

    新装 Git

    新装 Git 后缺少一些必要的配置,可以通过运行命令查看当前 git 有关配置信息,打开 git bash 或其它控制台应用运行

    git config --list
    

    也可以搭配 --system/global/local 来区分配置级别,分别对应系统级、用户(全局)级和本地(项目)级,从左到右即从低到高级,高级别如有配置会覆盖低级别配置

    git config --global --list
    

    以 windows10 为例,安装 git 后会在用户文件夹下创建 .ssh 文件夹保存 git 本身的一些配置内容,新装的 git 是没有 user.name 和 user.email 的,可以通过设置查看或设定

    # 查看
    git config user.name
    # 设置
    git config --global user.name "这里写名字"
    

    配置 SSH key

    如果通过 https 方式与远程仓库进行联系则需要每次都提供用户名和密码,ssh 方式比较 geek 范儿也更为方便,其道理是在本地生成非对称的 rsa 密钥对,将 public key 提供给 git 服务方保存,以后只要密钥正确即可通过 ssh 方式进行对话,一个 ssh 方式的仓库地址可能是这样的 git@gitee.com:user/reposname.git,首先检查本地是否有存在的密钥,windows 系统进入 .ssh 文件夹,如果没有 id-rsa 类似文件和 id-rsa.pub 文件就没有,检查方式如下

    # 打开 git bash
    cd ~/.ssh
    ls
    

    使用指定文件名创建密钥文件,本例以配置多 git 源为例(即本地要与多于1个的 git 服务方联系,比如又有 gitee 的仓库又有 github 的仓库)

    # 使用用户 email 创建文件名为 gitee_id-rsa 的密钥文件
    # user.email 要替换为当前用户的真实 user.email
    # gitee_id-rsa 是自定义的文件名,能区分出不同 git 源即可
    ssh-keygen -t rsa -C "user.email" -f ~/.ssh/gitee_id-rsa
    
    # 再创建一个与 github 对应的密钥
    ssh-keygen -t rsa -C "user.email" -f ~/.ssh/github_id-rsa
    

    到 .ssh 文件夹下,打开同名的 .pub 文件并将所有文本复制,粘贴到远程仓库的 ssh key 管理功能中,以 gitee 为例,标题是为用户方便记忆起个名字,内容粘贴到公钥框中,保存即可,这样远程 git 源就有了与本地对应的密钥对

    因此有了多个密钥文件,下面要进行一定配置来指导 git 如何与不同远程仓库联系,在 .ssh 目录下建立 config 文件名的文件,没有扩展名哦,将下面内容复制并保存

    # 配置github.com
    Host github.com                 
    HostName github.com
    IdentityFile C:\Users\{current user}\.ssh\github_id-rsa
    PreferredAuthentications publickey
     
    # 配置gitee.com
    Host gitee.com 
    HostName gitee.com
    IdentityFile C:\Users\{current user}\.ssh\gitee_id-rsa
    PreferredAuthentications publickey
    

    很好理解,就是配置不同的主机使用不同的密钥文件,别用乱了。

    测试一下连通性

    ssh key 也创建好了,远程仓库密钥也保存了,本地配置也有了该试一下了,使用命令来看一下是否能正确抵达 git 源

    # 输入并运行
    ssh -T git@gitee.com
    
    # 首次运行可能会输出结果 xxxx[yes/no] 提示是否continue,输入 yes 并继续即可
    # xxxx [yes/no] yes
    The authenticity of host 'gitee.com (212.64.62.174)' can't be established.
    ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added 'gitee.com,212.64.62.174' (ECDSA) to the list of known hosts.
    Hi 试试手气! You've successfully authenticated, but GITEE.COM does not provide shell access.
    
    

    检查

    见过 ssh 有关一番操作后,.ssh 文件夹应该有 6 个文件

    • config
    • gitee_id-rsa
    • gitee_id-rsa.pub
    • github_id-rsa
    • github_id-rsa
    • known_hosts

    前5个上文介绍过是手动创建出来的,known_hosts 是在运行 ssh -T 时 continue 后创建的,用于缓存 git 仓库源与ip地址和私钥的数据。极端情况下如果出现因 dns解析、网络问题导致与 git 仓库无法连接时可修改或删除文件

    试一下

    都配置好,试一下从 gitee 远程 clone 一个仓库到本地,打开 vs code 切换到 git 栏目点击 克隆存储库,输入远程仓库的 ssh 地址如 git@gitee.com:cinlap/learngit.git,选择目标文件夹,如无意外很快就 clone 到本地了

    ssh 操作中的一些补充

    • 添加私钥(作用?)

    ssh key 创建后添加私钥运行

    ssh-add ~/.ssh/gitee_id-rsa $ ~/.ssh/github_id-rsa $ xxx
    

    如果提示 Could not open a connection to your authentication agent 可以先执行以下命令再重新运行 ssh-add

    ssh-agent bash
    
    • 查看私钥列表和删除
    # 查看
    ssh-add -l
    # 清空
    ssh-add -D
    
  • 相关阅读:
    Python Generators(生成器)--yield
    [带你飞]一小时带你学会Python
    [Effective C++ --032]确定你的public继承塑模出is-a
    [Effective C++ --031]将文件间的编译依存关系降至最低
    [Effective C++ --030]透彻了解inlining的里里外外
    [Effective C++ --029]为“异常安全”而努力是值得的
    [Effective C++ --028]避免返回handles指向对象内部成分
    unity 获取本机ip地址
    unity 局域网游戏开发知识点
    unity 中函数调用的顺序
  • 原文地址:https://www.cnblogs.com/cinlap/p/12894667.html
Copyright © 2011-2022 走看看