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

    技术2022-07-11  70

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

    Git和代码托管中心Git结合GitHub使用https方式ssh方式同步到远程仓库从远程仓库克隆从远程仓库取代码 其他

    Git和代码托管中心

    局域网环境

    GitLab服务器

    外网环境下

    GitHub、码云

    Git结合GitHub使用

    介绍

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

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

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

    https方式

    注册GitHub账号

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

    登录GitHub网站

    https://github.com/login

    创建新项目(远程仓库)

    填写项目信息

    复制Git项目地址

    桌面右键选择克隆(类似于SVN检出)

    填写复制仓库URL

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

    填写日志信息提交

    推送最新版本

    必须推送后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里的内容

    测试ssh key是否成功

    # 测试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中执行命令 # 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也使用刚才生成的密钥可以做如下配置

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

    配置Git远端信息

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

    同步远程仓库代码

    其他

    如果之前使用的是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

    在任意目录点击右键

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

    问题阐述:使用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.csdn.net/m0_37727560/article/details/79408251

    https://blog.csdn.net/zhangbinu/article/details/52270559

    从远程仓库取代码

    介绍

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

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

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

    使用TortoiseGit

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

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

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

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

    其他

    Git常见下标符号说明

    https://blog.csdn.net/zhangxingyu126/article/details/79169694

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

    https://blog.csdn.net/qq_32786873/article/details/81480414

    Processed: 0.009, SQL: 9