Git之HTTPS和SSH两种方式托管项目到GitHub

Git和代码托管中心

  • 局域网环境

    GitLab服务器

  • 外网环境下

    GitHub、码云

Git结合GitHub使用

  • 介绍

    Github支持两种同步方式"https"和"ssh":

    1. 如果使用https很简单基本不需要配置就可以使用,但是每次提交代码和下载代码时都需要输入用户名和密码。

    2. 如果使用ssh方式就需要客户端先生成一个密钥对,即一个公钥一个私钥。然后还需要把公钥放到github的服务器上。

https方式

  • 注册GitHub账号

    在github、码云等代码仓库网站上注册一个帐号,这里用github的帐号

  • 登录GitHub网站

    https://github.com/login

  • 创建新项目(远程仓库)
    GitHub创建远程仓库

  • 填写项目信息
    GitHub补充项目信息

  • 复制Git项目地址
    GitHub复制Git项目地址

  • 桌面右键选择克隆(类似于SVN检出)
    本地右键选择克隆远程仓库项目

  • 填写复制仓库URL
    填写复制远程仓库URL

  • 在克隆完成项目路径下新建文件提交主分支
    新建文件直接提交

  • 填写日志信息提交
    填写日志信息提交

  • 推送最新版本

    必须推送后GitHub上才会出现最新版本
    推送文件到远程仓库

  • 输入GitHub账户密码
    输入GitHub账户密码

  • GitHub上检测项目是否更新
    检测项目是否更新

ssh方式

  • Windows下打开Git Bash创建SSH Key

    
        # 生成公钥和秘钥
        ssh-keygen -t rsa
    
        # 或
        ssh-keygen -t rsa -C "注册邮箱"
    
    

    执行命令完成后,在window本地用户.ssh目录 C:\Users\用户名.ssh 下面公钥和私钥

    
        id_rsa # 秘钥
        id_rsa.pub # 公钥
    
    
  • 配置公钥

    在github上配置公钥本地才可以顺利访问,复制id_rsa.pub里的内容
    在github上配置公钥

  • 测试ssh key是否成功
    测试sshkey是否成功

    
        # 测试ssh key
        ssh -T git@github.com
    
        # 如果出现You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github
    
    

同步到远程仓库

  • 使用GitBash

    在仓库所在的目录点击右键选择"Git Bash Here",启动git bash程序
    使用GitBash同步代码到远程仓库

    
        # 在GitBash中执行命令  
    
        # CharlesKai替换成个人用户名
        git remote add origin git@github.com:CharlesKai/nbsp.git
    
        git push -u origin master
    
    
        # 如果出现以下错误:remote origin already exists,须先执行以下命令
        git remote rm origin
    
    
    
    
  • 使用TortoiseGit同步

    由于TortoiseGit使用的ssh工具是"PuTTY",git Bash使用的ssh工具是"openSSH"
    如果想让TortoiseGit也使用刚才生成的密钥可以做如下配置

    1. ssh客户端配置成git使用的客户端
      ssh客户端配置成git使用的客户端

    2. 配置Git远端信息
      TortoiseGit配置Git远端信息

    
        # URL 远程仓库地址
        git@github.com:CharlesKai/nbsp.git
    
        # 推送URL 同 远程仓库地址
        git@github.com:CharlesKai/nbsp.git
    
        # Putty密钥 选择生成的密钥中私钥
        
    
    
    

    GitBash查看远程仓库协议

    1. 同步远程仓库代码
      TortoiseGit同步远程仓库代码

    2. 其他

      如果之前使用的是https协议,现在想换成ssh协议,只需要使用命令 git remote set-url url来调整你的url,或者重新增加一个远程仓库地址

    
        # 查看你当前的 remote url
        git remote -v ## git开头则表示是ssh协议
    
        # 调整当前远程仓库的url
        git remote set-url 
    
        # 或重新增加一个远超仓库地址
        git remote add origin_ssh git@github.com:CharlesKai/nbsp.git
    
    

从远程仓库克隆

  • 介绍

    克隆远程仓库也就是从远程把仓库复制一份到本地,克隆后会创建一个新的本地仓库。

  • 使用GitBash

    
        git clone git@github.com:CharlesKai/nbsp.git
    
    
  • 使用TortoiseGit

    在任意目录点击右键
    TortoiseGit从远程仓库克隆到本地

    克隆失败报错:git did not exit cleanly (exit code 128)

    TortoiseGit从远程仓库克隆代码到本地报错

    问题阐述:使用GitBash命令行,采用ssh方式克隆成功;但使用TortoiseGit克隆远程代码,采用ssh方式却失败,查找网上资料,说两者使用工具不同,网上大多数是要求使用TortoiseGit自带的PuTTYgen工具重新生成putty格式的公钥和私钥。但我考虑复用同一公钥,把TortoiseGit的客户端换成git安装目录下的ssh.exe,但是还是不行。使用TortoiseGit复用GitBash命令生成公钥和秘钥克隆远程代码

    解决方案:先使用GitBash命令行克隆代码到本地,在右击项目settings -> Git(Remote) 在putty key中加载(之前通过PuTTYgen工具load已用GitBash生成的密钥保存转换为).ppk格式的密钥

    参考链接:

    https://blog.youkuaiyun.com/m0_37727560/article/details/79408251

    https://blog.youkuaiyun.com/zhangbinu/article/details/52270559

从远程仓库取代码

  • 介绍

    Git中从远程的分支获取最新版本到本地有2个命令

        # 是从远程获取最新版本到本地,不会自动merge(合并代码)
        git fetch
    
    
        # 从远程获取最新版本并merge到本地,等同于git fetch + git merge
        git pull
    

    实际开发中,使用git fetch更安全一些,因为在merge前,可以查看更新情况,然后再决定是否合并

  • 使用TortoiseGit
    TortoiseGit获取远程代码

    遗留问题:冲突代码未发现可以比对地方,且使用Fetch后无任何反应,后期更新,如有大佬知道原因,麻烦指点一二。

    问题原因:应将代码先提交到本地仓库,再推送到远程仓库,此时会提示推送失败,要求Pull后再解决冲突。

    解决方案:将修改的文件提交到本地仓库,尝试将本地代码再Push到远程仓库失败,于是使用Pull拉取远程仓库代码,本地文件显示有冲突(黄色!号)

TortoiseGit手动解决冲突

编辑冲突内容,重新提交到远程仓库

TortoiseGit编辑冲突内容

其他

  • Git常见下标符号说明

    https://blog.youkuaiyun.com/zhangxingyu126/article/details/79169694

  • Windows10下TortoiseGit和Git配置使用同一SSH密钥

    https://blog.youkuaiyun.com/qq_32786873/article/details/81480414

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值