C++学习之金融类安全传输平台项目git
目录
1.知识点概述
2.版本控制工具作用
3.git和SVN
4.git介绍
5.git安装
6.工作区 暂存区 版本库概念
7.本地文件添加到暂存区和提交到版本库
8.文件的修改和还原
9.查看提交的历史版本信息
10.版本差异比较
11.删除文件
12.本地版本管理设置忽略目录
13.远程git仓库介绍
14.创建远程仓库
15.本地仓库中项目推送到远程仓库
16.将远程仓库内容克隆到本地
17.克隆应用场景
18.生成rsa密钥对
19.设置本地ssh秘钥
20.远程仓库ssh公钥设置
21.使用ssh地址进行仓库操作注意事项
22.分支介绍
23.分支的切换
24.合并分支和解决冲突
25.往远程非空仓库推动本地仓库内容
26.git提交代码操作
27.protobu部署
1.知识点概述
1.1. 版本控制系统
- 集中式版本控制系统
> 集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。
>
> 集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,那就GG了.
2.版本控制工具作用
3.git和SVN
> 版本库又名仓库,英文名**repository**,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
## 2.1 概念
- 工作区
- 用户自己创建的目录 -> 存放源代码
- 本地的版本库也需要放到工作区中
- 每个工作区中都可以创建一个版本库
- 只有工作区的`新文件`才需要添加到暂存区
- 版本库
- 就是一个目录: 名字-> .git
- 管理用于提交的代码
- 暂存区
- 首先创建新文件 -> 在工作区 (和版本库没有关系)
- 将新文件添加到本地仓库中 -> 新文件被保存在了暂存区 (还是没有进行版本管理)
- 将暂存区数据提交到版本库 -> 这时候就可以进行版本管理了
- 暂存区也是一个目录: stage/index
4.git介绍
5.git安装
创建版本库
- 在工作区中鼠标右键



- 添加新文件
- 在工作区右键菜单


6.工作区 暂存区 版本库概念
7.本地文件添加到暂存区和提交到版本库
8.文件的修改和还原
9.查看提交的历史版本信息
10.版本差异比较
11.删除文件
12.本地版本管理设置忽略目录
13.远程git仓库介绍
14.创建远程仓库
15.本地仓库中项目推送到远程仓库
16.将远程仓库内容克隆到本地
17.克隆应用场景
18.生成rsa密钥对
19.设置本地ssh秘钥
20.远程仓库ssh公钥设置
21.使用ssh地址进行仓库操作注意事项
22.分支介绍
23.分支的切换
24.合并分支和解决冲突
25.往远程非空仓库推动本地仓库内容
- 远程仓库设置公钥
- 进入当前用户的设置界面



- 使用ssh地址遇到的问题

```shel
# 解决方案: 需要修改tortoisegit 使用的 ssh工具
# 需要在 tortoisegit 设置窗口中进行修改
```
- 默认的路径

- 修改后的路径


## 6.2 切换分支


## 6.3 合并分支
> 两个分支进行合并(master, new分支), 最终要合并到那个分支(master), 就先切换到那个分支(master), 切换完成之后, 在选择把哪个分支(new分支)合并到当前分支(master)


## 6.4 解决冲突


27.protobu部署
直接推送 -> 失败

> 失败的原因:
>
> - 远程仓库不是空的
> - 有一个默认分支, `master`
> - 本地仓库, 不是空的
> - 有一个默认分支, `master`
> - 远程仓库和本地仓库默认分支名字相同, 但是这两个分支没有任何关系
> - 没有关系的分支进行合并 -> 失败
- 解决方案
> 1. 将远程仓库拉取到本地(pull)
> - 拉取: 直接将远程仓库分支中的信息和本地分支进行合并
> - 获取: 将远程仓库分支复制到本地的另外一个分支中, 不会合并
> - 分支名字: fetch_head
> 2. 将两个分支进行强行合并
> 3. 将本地分支数据推送动到远程仓库
- 通过进行获取操作, 得到新分支`FETCH_HEAD`

- 合并分支: 得到的新分支`FETCH_HEAD`分支合并到本地`master`分支


- 将本地仓库推动到远程仓库

# 8. 使用最多的场景
> 远程仓库分支和本地仓库分支有关系的情况, 该如何操作?
>
> - 本地:
> - 修改代码提交到本地仓库
> - 提交到远程仓库
> - 不能直接提交
> - 在推送之前应该将远程仓库代码`拉取`到本地
> - 进程代码合并
> - 有可能冲突 -> 手动解决冲突
> - 将新的代码推动到远程仓库