Git之HTTPS和SSH两种方式托管项目到GitHub
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.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
遗留问题:冲突代码未发现可以比对地方,且使用Fetch后无任何反应,后期更新,如有大佬知道原因,麻烦指点一二。
问题原因:应将代码先提交到本地仓库,再推送到远程仓库,此时会提示推送失败,要求Pull后再解决冲突。
解决方案:将修改的文件提交到本地仓库,尝试将本地代码再Push到远程仓库失败,于是使用Pull拉取远程仓库代码,本地文件显示有冲突(黄色!号)
编辑冲突内容,重新提交到远程仓库
其他
-
Git常见下标符号说明
https://blog.youkuaiyun.com/zhangxingyu126/article/details/79169694
-
Windows10下TortoiseGit和Git配置使用同一SSH密钥
https://blog.youkuaiyun.com/qq_32786873/article/details/81480414