三、Git远程仓库?
1.常见的Git托管平台
常见的有GitHub、码云、GitLab
GitHub:(地址:GitHub: Let’s build from here · GitHub)是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,所以名为GitHub
码云:(地址:码云官方 (gitee.com))是国内的一个代码托管平台,,由于服务器在国内,所以相比GitHub,码云速度会更快
Git Lab:(地址:The most-comprehensive AI-powered DevSecOps platform | GitLab)是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务
2.注册码云和创建远程仓库
进入 + 新建仓库 (自定义填写)
3.远程仓库操作
- 添加远程Git仓库
-
#添加一个新的Git仓库 $ git remote add 仓库名 仓库地址 #查看关联仓库有 $ git remote #克隆一个远程仓库 $ git clone 远程仓库地址url #移除无效远程仓库 $ git remote rm 远程仓库名称 #此命令只从本地移除远程仓库记录,并不会真正影响远程仓库
- Git远程仓库推送
- 自己gitee账号和密码
#本地仓库代码推送至远程仓库
$ git push 仓库名 分支名
#遇到冲突则
$ git pull --rebase origin master
#在执行
$ git push origin master
4.推送抓取和拉取
#抓取文件
$ git fetch
合并代码
$ git merge 仓库名/分支名
#例子:
$ git merge origin/master
注:git fetch 是从远程仓库获取最新版本到本地仓库,不会自动merge,看见文件就需要手动合并 git merge origin/master
git pull :原理同上,但是这个自动merge,不用合并文件(推荐使用)
5.多人协作冲突问题
- 不同分支下的合并
- 同一个分支下的pull后者push
报错信息:
$ git push To https://gitee.com/WCCRegistered/hundred-battles.git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'https://gitee.com/WCCRegistered/hundred-battles.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
先$ git pull --rebase origin master 重新拉取最新的代码
查看那点代码冲突
注:不要手动删除代码
重新提交
先 add . 后 commit
先 pull 后push
6.SSH协议推送
git支持的传输协议
由于git的远程仓库不在我们本地,当我们在使用远程仓库时(例如克隆、拉取、推送)就会涉及到数据的网络传输,git支持多种数据传输协议,包括:
- 本地协议(Local)
- HTTPS协议
- SSH(SecureShell)协议
- Git协议
什么是SSH协议
SSH协议是Secure Shell(安全外壳协议)的缩写,由IETF的网络所制定,SSH是目前较可靠的,转为远程登录会话和其他网络服务提供安全性的协议,利用SSH协议可以有效地防止远程管理中的信息泄露
配置SSH协议
以使用Git提供的命令行工具Git Bash生成公钥和私钥,具体过程如下:
- 使用命令ssh-keygen -t rsa 生成公钥和私钥
#生成公钥和私钥
$ ssh-keygen -t rsa
- 执行完在Windows本地用户.ssh目录下生成如下名称的公钥和私钥
- 可以在Windows中查看你的gitee账号的用户凭据
打开复制公钥到gitee中打开设置,找到SSH公钥
测试SSH克隆
#查看文件
$ ll
#新建文件
$ echo "Yolo HHH" > yolo.info
#存入暂存区
$ git add .
# 提交文件
$ git commit -m "test SSH"
#提交依赖于SSH
$git push
SSH协议主要解决信息泄露问题