Compare commits

...

21 Commits

Author SHA1 Message Date
孟凡兴 c70c7280c3 公司服务器地址调整,修改git服务器地址 2025-01-06 09:27:24 +08:00
孟凡兴 71a8cbeb63 定制版本更改同步说明 2024-05-30 09:41:20 +08:00
孟凡兴 ccd287340d 根据培训反馈问题修改定制规约中的内容 2024-05-30 09:28:41 +08:00
孟凡兴 975fcf4cb3 新增冲突章节 2024-05-21 11:48:42 +08:00
孟凡兴 caf33dbe07 更新思维导图 2024-05-21 09:09:45 +08:00
孟凡兴 aa4cc6100a 增加同步操作的思维导图 2024-05-21 09:02:34 +08:00
孟凡兴 8e3af01327 丰富了基线版本和定制版本多仓库方案的操作步骤 2024-05-20 16:49:01 +08:00
孟凡兴 e724517172 修改忽略部分的相关描述 2024-03-28 16:28:31 +08:00
孟凡兴 454e758f12 修改忽略文件的内容, 保留bin、scf文件, 保留map文件;
增加Lab4的导航
2024-03-28 16:17:43 +08:00
孟凡兴 bcab3adc12 增加Git整体流程图 2024-03-28 11:23:29 +08:00
孟凡兴 c748f12eb7 修改拉取操作的描述 2024-03-28 10:27:43 +08:00
孟凡兴 318476a2fc 增加重置类型的说明 2024-03-28 10:05:42 +08:00
孟凡兴 0c730121fe 安装章节的排版 2024-03-28 09:03:52 +08:00
孟凡兴 96c180404f 增加基线和定制版本章节 2024-03-27 14:22:50 +08:00
孟凡兴 8aebbca0b2 新增检出和回退 2024-03-26 17:29:15 +08:00
孟凡兴 0fc81ab31c 排版错误更定 2024-03-26 16:32:00 +08:00
孟凡兴 2c68859608 更改Git flow一些说明 2024-03-26 10:03:47 +08:00
孟凡兴 e53c1d1a13 分支管理章节完善 2024-03-25 17:11:14 +08:00
孟凡兴 90eaabae86 Merge branch 'master' of http://172.188.24.12:3000/mengfanxing/git_tutorials 2024-03-25 11:23:27 +08:00
孟凡兴 25d9de05fe 增加Lab2章节的内容,
修改lab0和lab1内容中的一些描述
git文件名不区分大小写太**了
2024-03-25 11:23:11 +08:00
孟凡兴 6725477bca 增加Lab2章节的内容,
修改lab0和lab1内容中的一些描述
2024-03-25 11:19:19 +08:00
46 changed files with 250 additions and 29 deletions

BIN
Lab0/git_app_download.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -1,8 +1,11 @@
# Git环境搭建
## 资源准备
- git服务器账号注册
- Git for Windows. https://git-scm.com/download/win, 一般选择“64-bit Git for Windows Setup”版本
- TortoiseGit. https://tortoisegit.org/download/ 需要下载安装两个软件,一个主程序的安装包,另一个为语言支持包
- git服务器账号注册
Git软件安装包已经在服务器准备好了http://172.188.24.12:3000/mengfanxing/git_tutorials/releases
![](./git_app_download.png)
## 安装教程
### Git for Windows
打开下载好的Git应用程序开始安装
@ -12,8 +15,8 @@
3. 选择组件没有特别需求直接Next
![](./git_components.png)
4. 在开始菜单创建git文件夹
![](./git_start_folder.png)
5. 为git选择默认的文本编辑器,初始值为vim可以选择VSCode、NotePad++等
![](./git_start_folder.png)
5. 为git选择默认的文本编辑器,初始值为vim可以选择VSCode、NotePad++等
![](./git_editor.png)
6. git默认分支名称直接Next
![](./git_branch.png)
@ -22,13 +25,13 @@
8. 后面的全部默认Next然后等待安装成功
### TortoiseGit
先安装TortoiseGit主程序
打开下载好的“TortoiseGit-2.15.0.0-64bit.msi”
先安装TortoiseGit主程序
打开下载好的“TortoiseGit-2.15.0.0-64bit.msi”
一路Next根据下图所示选择安装位置NextInstall
![](./TortoiseGit_install_location.png)
安装完后,第一次打开会让你选择语言包。 不要关闭,先放到一边。
先安装TortoiseGit 语言包
打开“TortoiseGit-LanguagePack-2.15.0.0-64bit-zh_CN.msi”直接下一步等待安装完成。
打开“TortoiseGit-LanguagePack-2.15.0.0-64bit-zh_CN.msi”直接下一步等待安装完成。
这时回到TortoiseGit点击“Refresh”会出来中文选项。
一路下一页,在“配置用户信息”界面,填入用户名和邮箱,要和在公司服务器注册时保持一致。
![](./tortoisegit_user.png)

BIN
Lab1/git.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

BIN
Lab1/git_checkout.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,4 +1,6 @@
# 创建、修改、暂存和提交
## Git整体流程图
![](./git.png)
## 创建
要将现有的软件程序纳入git管理首先是创建版本库或称存储库
选中要管理的工程文件夹右键选择“Git 在这里创建版本库”点击“确定”git就会在工程目录下创建“.git”文件夹一个空白的版本库就创建成功。
@ -10,36 +12,51 @@
并不是所有的文件都需要纳入Git管理有些文件与源代码无关只是编译生成的中间文件或者用户个人的配置纳入管理反而增加存储库的内存。
这里拿Keil的工程举例
![](./hello_struct.png)
“./objects”文件夹下编译生成的中间文件.o、.d、.crf是用不到版本管理的。但是生成的hex文件**可以选择**记录。“./listing”下的map文件也是用不到的
“./objects”文件夹下编译生成的中间文件.o、.d、.crf是用不到版本管理的。但是生成的hex、bin、scf文件**可以选择**记录。“./listing”下的map文件可以纳入管理
用户自己的uvguix文件不会影响编译结果也没必要管理。
我们通过创建.gitignore文件确定工作目录下哪些文件要纳入管理哪些文件要忽略掉。
举例在Hello目录下创建 “.gitignore” 文件,将./objects文件夹下编译生成的中间文件忽略掉但是保留生成的hex文件。内容如下
举例在Hello目录下创建 “.gitignore” 文件,将./objects文件夹下编译生成的中间文件忽略掉但是保留生成的hex、bin、scf文件。内容如下:
```
#这是注释
#忽略整个listing文件夹
/listing
#忽略某个文件夹下的所有文件
#Git管理忽略文件
#忽略objects文件夹下的所有文件
/objects/*
#在上面基础上将hex文件纳入管理(可选)
#在上面基础上将hex文件纳入管理
!/objects/*.hex
#在上面基础上将bin文件纳入管理
!/objects/*.bin
#在上面基础上将sct文件纳入管理
!/objects/*.sct
#忽略keil的用户uvguix文件
*.uvguix.*
#忽略JLinkLog.txt文件
#忽略单独一个JLinkLog.txt文件
JLinkLog.txt
```
现在在“检查已修改”窗口,点击“刷新”按钮,./objects文件夹下只剩hex文件./listing文件夹消失uvguix文件消失。
现在回到“检查已修改”窗口,点击“刷新”按钮,./objects文件夹下只剩hex、bin、scf文件uvguix文件消失JLinkLog.txt文件消失。
## 暂存和提交
### 暂存
在其他Git客户端中可能有暂存的概念它们提交的过程为修改 >> 暂存 >> 提交。
暂存主要用于分批提交比如已经开发了A、B两个功能想要把A、B分开提交可以先把A的文件放在暂存区然后提交。再把B放到暂存区然后提交。
TortoiseGitz支持勾选文件提交因此用不到暂存功能它的提交过程为修改 >> 提交。
### 提交
紧跟上面的操作,点击“提交”,弹出提交窗口:
![](./hello_submit.png)
紧跟上面的操作,点击“提交”,弹出提交窗口:
![](./hello_submit.png)
最上面是选择提交到哪个分支现在只有“master”分支。
然后是本次提交的日志信息日志信息必须写不写提交不了。日志信息应尽可能详细和之前的readme.txt一样。
下面选择要提交的文件,这里我们点击“全部”。
最后点击提交。
## 检出
有时候要临时回到之前的版本工作,这时候用到“检出”。
在工程目录下右键选择“TortoiseGit”在“TortoiseGit”下选择“切换/检出”,弹出“切换/检出”窗口,选择“提交”,点击右边三个点,选择要检出的版本,点确定,然后下面注意不需要选创建新分支(不然还得手动删除),点击确定。
回到最新更新一样操作。
![](./git_checkout.png)
## 回退(慎用)
有时候最近的几次变更不想要了。这时候就要回退了。
在工程目录下右键选择“TortoiseGit”在“TortoiseGit”下选择“显示日志”弹出“日志信息”窗口选中要回退到的更改右键选择“重置xxx到此版本”。点击确定重置类型选择合适的类型
- 软重置,要删除的更改退回到暂存区
- 混合,要删除的更改退回到修改状态,适用于稍作改动再提交
- 硬重置,彻底删除更改
点击“刷新”,所选版本之后的版本消失了。
## 贮藏更改
有些情况下,正在开发的功能被打断,需要做其他工作,例如紧急修复BUG。这时需要保留已经更改的代码 “检查已修改” >> 贮藏 >> 填写贮藏日志 >> 确定
其他工作忙完后,弹出贮藏

View File

@ -1,6 +1,24 @@
## 推送
在前一章我们在本地创建了版本库,现在把它推送到服务器。
### 服务器新建仓库
登录到[服务器](http://172.188.24.12:3000),点击右上角的“+”,选择“创建仓库”。
![](./git_server_create.png)
![](./git_server_create2.png)
填写“仓库名称”和“仓库描述”,正式应用时“可见性”记得勾选。
其他的默认即可,点击“创建仓库”,一个新的仓库便创建完成。
### 推送
在前一章的工作目录下右键菜单选择“TortoiseGit”,点击“推送”,弹出推送窗口。
在“目标” >> "远端"下,点击"管理"按钮,添加远程仓库的链接。
![](./git_server_push.png)
![](./git_add_push_url.png)
在URL中填写复制的链接点击确定。
选择刚添加的远程仓库“origin”点击“确定”等待推送完成。第一次推送时会做身份验证。
刷新网页,可以看到代码已经同步到服务器。
## 克隆
指将远端服务器的存储库下载到本地
拿本存储库举例在本地新建一个文件夹进入文件夹右键菜单选择“Git 克隆”弹出克隆窗口在URL输入"http://172.188.24.12:3000/mengfanxing/git_tutorials.git"前面的链接可以在服务器存储库界面复制。点击确定开始克隆等待克隆完成然后在本地文件夹就可以看到名为“git_tutorials”的存储库。
指将远端服务器的存储库下载到本地。如果想把别人的存储库下载到本地就用到克隆了。
拿本存储库举例在本地新建一个文件夹进入文件夹右键菜单选择“Git 克隆”,弹出克隆窗口。
![](./git_clone.png)
![](./git_server_clone_url.png)
在URL输入"http://172.188.24.12:3000/mengfanxing/git_tutorials.git"前面的链接可以在服务器存储库界面复制。点击确定开始克隆等待克隆完成然后在本地文件夹就可以看到名为“git_tutorials”的存储库。
## 拉取
由于服务器存储库不只一个人维护常常出现本地软件版本才V1.0服务器仓库都更新到V1.3的情况。这时可以在本地存储库右键菜单选择“TortoiseGit”然后选择“拉取”点击确认。这样维持服务器和本地的同步。
## 推送
多人协作工作时,常常出现服务器程序版本比本地新的情况,需要通过拉取操作维持本地和服务器的同步

BIN
Lab2/git_add_push_url.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
Lab2/git_clone.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
Lab2/git_merge.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
Lab2/git_push_error.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
Lab2/git_server_create.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
Lab2/git_server_create2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
Lab2/git_server_push.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
Lab3/git_checkout.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
Lab3/git_create_fork.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
Lab3/git_flow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
Lab3/git_fork_push.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
Lab3/git_tag.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -1,8 +1,60 @@
# 分支管理
前面提交、推送操作都是在“master”分支进行的。针对一个不断迭代的复杂项目如果全部都在“master”上操作版本的结构会乱其他人看不懂哪个提交是稳定的是生产下发版本哪个提交是尚在开发版本。
针对这一问题下面介绍Git flow分支模型大家不一定要严格套这个模型。
## Git Flow
模型的分支如下:
- master
- develop
- release
- hotfix
多定制版本维护
- feature/xxx
- hotfix/xxx
- release/xxx
它们的流程图如下:
![](./git_flow.png)
## master
- master主分支代码库应该有一个、且仅有一个主分支主分支存放最稳定的程序版本
- 所有用于正式生产下发的版本都应该在master分支上发布
- 不能直接在master分支上修改提交只能从其它分支合并
- 所有在master上的提交应该标记tag
## develop
- develop分支是主开发分支
- 用于合并来自feature分支的程序
- 从该分支创建release分支
- 接收来自release和hotfix分支的优化
## feature
- 用于新功能的开发
- 从develop分支签出
- 开发完后合并到develop
## hotfix
- 用于紧急修复现场出现的bug
- 从master签出
- 完成修复后要双向合并到master和develop
## release
- 用于准备版本发布
- 从develop分支签出
- 等测试组测试通过双向合并到master和develop
## 其他说明
远程仓库应该只存在两个分支一个是master分支存放生产环境版本这个分支的代码总是可靠可用的另一个是develop分支这个分支用于日常开发。
hotfix分支、feature分支和release分支都在本地原则上不能推送到远程仓库。这三种分支都属于临时性需要使用完以后应该删除。
develop分支下允许有多个feature分支且尽量避免冲突允许在有feature处在开发中的情况下从develop分支拉取到release分支。
# 分支操作
## 创建分支
在工程目录下右键菜单选择“TortoiseGit”点击“创建分支”。
![](./git_create_fork.png)
输入分支名称。“切换到新分支”可选,后面可以手动切换。点击“确认”新分支便创建成功。
## 切换分支
想要在某个分支上做修改提交,首先要切换到该分支。
在工程目录下右键菜单选择“TortoiseGit”点击“切换/检出”。
![](./git_checkout.png)
选择分支,点击确认。
## 创建标签
master分支提交后要加一个标签用来表示版本号。
在工程目录下右键菜单选择“TortoiseGit”点击“创建标签”。
输入标签名称,选择分支即可。
![](./git_tag.png)
## 分支推送
当某个分支提交的差不多了,就可以推送了。
之前推送的是master分支现在可以选择本地的其他分支。
![](./git_fork_push.png)
值得注意的是“包括标签”选项按照模型master分支需要标记Tag版本号master分支推送时勾选该选项可以将Tag同步到服务器。

BIN
Lab4/BC_diff.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 KiB

BIN
Lab4/git_cherry_pick.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
Lab4/git_clone.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
Lab4/git_delete_branch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
Lab4/git_deletebase.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
Lab4/git_diff1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
Lab4/git_fetch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
Lab4/git_fetch_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
Lab4/git_log_main.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
Lab4/git_merge.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
Lab4/git_origin.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
Lab4/git_push.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
Lab4/git_push_upstream.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
Lab4/git_submit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
Lab4/git_upstream.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

90
Lab4/lab4.md Normal file
View File

@ -0,0 +1,90 @@
# 基线版本和定制版本同步更改
可以参考这个链接
https://www.cnblogs.com/Mufasa/p/14431990.html
有两种方案:
- 多分支
- 多仓库
结合咱们公司项目分配到具体负责人的特点,推荐大家采用 **多仓库**方案创建定制规约版本。
~~## 多分支~~
~~1. 从基线仓库拉取最新的程序到本地~~
~~2. 创建新分支代表定制版本,并切换到新分支~~
~~3. 做一些定制化修改~~
~~4. 测试无误后提交更改~~
~~5. 把定制版本分支推送到服务器~~
~~6. 基线仓库更新优化~~
~~7. 切换到定制版本分支单次更改可以采用摘取cherry-pick命令把基线上的更改提交到当前定制分支。同时同步多次更改可以采用合并命令。~~
~~8. 推送定制分支~~
## 多仓库
### 定制版本搭建
#### 1. 从基线仓库克隆最新的程序到本地
在文件夹右键选择Git克隆在URL栏填写基线仓库的服务器地址,点击确定
![](./git_clone.png)
#### 2. 做一些定制化修改,代表定制版本
- 如果是新定制版本,直接在当前程序上修改即可
- ~~如果是已经存在的定制版本,首先删除基线程序所有文件(保留.git文件夹和.gitignore文件),然后把定制程序复制过来即可。**需要注意的是: 要保证定制程序和基线程序的版本相同。如果定制程序比基线落后的话,会丢失中间版本的更改。**~~
拿一个已经存在的定制程序举例,删除基线程序所有文件,只保留.git和.gitignore文件。(这里简化操作,所有操作都在"master"分支进行,如果已经用上"Git Flow"分支管理,应当先切换到"develop"分支,再删除。)
![](./git_deletebase.png)
然后把定制程序复制过来,可以用TortoiseGit查看已修改的内容此时的已修改应当是基线程序和定制程序的不同点和用BC对比出来是一样的。
![](./git_diff1.png)
![](./BC_diff.jpg)
#### 3. 提交更改
测试无误后提交更改
![](./git_submit.png)
#### 4. 创建定制版本仓库
在服务器新建定制版本仓库。
打开TortoiseGit的推送界面点击“管理”按钮选中“origin”查看详细信息。会发现“URL”还是原来的基线仓库连接。我们需要将"URL"改成定制仓库的连接。
然后我们需要再添加一个名叫“upstream”上游仓库**名字可以任意能表示基线需要和origin区分开**)的远端仓库,链接为原来基线仓库的链接。后面抓取时会用到。
此时的远端列表如下:
![](./git_origin.png)
![](./git_upstream.png)
#### 5.推送
把定制版本程序推送到定制版本仓库打开TortoiseGit的推送界面保持远端还是origin点击确定。
![](./git_push.png)
### 实际应用
前面的操作把定制版本的架子搭好了,下面就要测试应用了。
#### 基线程序的更改同步到定制版本
![](./git_from_base_to_custome.png)
##### 1. 基线程序版本更新
在基线程序上面做一些更改并且提交推送。
##### 2. 定制版本获取基线更改
在本地的定制版本库打开TortoiseGit的获取界面把远端改成“upstream”,点击确定。
![](./git_fetch.png)
##### 3. 合并获取的更改
打开TortoiseGit的合并界面分支选择“remotes/upstream/master”点击确定。
![](./git_merge.png)
如果没有冲突,合并会顺利结束;如果有冲突,需要手动解决冲突。
合并完成后,就可以测试程序、提交更改、推送更改。
<span style="color: red;font-weight: bold;font-size: 24px;">注意合并只是代码文本的合并git不会检查字节对齐、EE跨页等问题仍然需要自己检查改动点。</span>
#### 定制版本更改同步到基线程序
***定制版本更改同步到基线版本仍然采用原来手动比对的方式***
下面的方案暂不采用
定制版本同步到基线程序要麻烦一些。
![](./git_from_custome_to_base.png)
##### 1. 定制版本更改
在定制程序上面做一些更改、提交和推送到定制仓库。
##### 2. 推送定制版本到基线仓库
如何让基线仓库知道定制版本修改了什么呢?给基线仓库也推送一份就可以了。
在定制程序下打开TortoiseGit的推送界面修改要推送到远端的分支名称不要和master、develop等重要分支重复并且把远端的连接改为“upstream”点击确定。
![](./git_push_upstream.png)
这样在服务器上就会多出一个分支“GX”内容为定制版本的更改。
##### 3. 获取基线仓库的更改
在基线程序下打开TortoiseGit的获取界面点击确定。
然后打开TortoiseGit的日志信息界面点击右上角的超链接这里是master
![](./git_log_main.png)
然后在引用列表选择“remotes/origin/GX”即上一步新上传的分支。双击打开。
##### 4. 摘取更改
找到要采纳的更改,右键选择“摘取此提交”,点击“继续”。
![](./git_cherry_pick.png)
有冲突的会提示冲突,需要解决冲突,没有冲突了,然后点击提交。这样就把定制版本的更改同步到基线。测试无误后就可以推送到基线仓库。
##### 5. 删除基线上的定制分支
一切都结束后,基线上的定制分支就用不到了,可以删除它。
在引用列表界面选中“remotes/origin/GX”右键选择“删除远端分支”这样本地和服务器上都会删除该分支。
![](./git_delete_branch.png)

BIN
Lab5/git_conflict_cause.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
Lab5/git_conflict_list.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
Lab5/git_conflict_merge.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

BIN
Lab5/git_merge_icons.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
Lab5/git_tip_conflict.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

40
Lab5/lab5.md Normal file
View File

@ -0,0 +1,40 @@
# 解决冲突
## 文件冲突原因
在进行合并、摘取和变基操作时,不可避免的会遇到更改发生冲突,需要先解决冲突,然后才能继续。
![](./git_tip_conflict.png)
产生冲突的原因很简单:
从同一个节点衍生出两个版本A和B 在相同的位置A版本改成某个值B版本改成另个值然后把B合并到A上这时git就会触发冲突两个版本的优先级是相同的git不知道该采用哪个值所以就需要人工干预。
![](./git_conflict_cause.png)
## 冲突界面介绍
右键TortoiseGit选择解决冲突就会弹出冲突列表。
![](./git_conflict_list.png)
双击列表中的文件,打开合并窗口。
![](./git_conflict_merge.png)
### 文本框
合并窗口有三个文本框:
- 左上角是要导入的版本
- 右上角是当前的版本
- 下方是合并后的版本
要注意的是,只有下方的文本框可以编辑,上面两个都是只读的。
文本框的左边会有一些小图标,它们代表对应行所做更改的操作类型。
![](./git_merge_icons.png)
### 工具栏
常用的几个操作:
- 标记为已解决:在该文档的所有冲突解决完后点击,会在冲突文件列表中删除该文件。
- 上/下一处冲突:快速定位冲突。
- 使用左侧文本块:用于快速采纳更改,下面有个三角,可以选择“使用右侧文本块”。
## 详细操作
1. 在冲突列表打开冲突文件。
2. 找到下文本框左侧的叹号,该行表示尚未解决的冲突。
3. 然后再看上方两文本框的相同位置。
- “=”代表该版本的修改前的文本;
- “+”代表新增或者修改后的文本;
- “-”代表删除该行;
4. 然后根据实际情况选择左边或者右边,亦或者两个都不满足,直接在下文本框编辑。
5. 用“上/下一处冲突”切换到下一处冲突编辑。
6. 全部修改完后,点击“标记为已解决”,然后再保存退出。
7. 处理剩下的冲突文件。
8. 测试、提交、推送。

View File

@ -2,7 +2,7 @@
研发Git工具内部培训教程
## 服务器
用浏览器访问公司Git服务器网址 (孙村或临沂的同事需要先打开PLM的VPN):
http://172.188.24.12:3000/
http://172.188.23.7:3000/
后面所有涉及到Git服务器的操作都应保证VPN畅通
新用户需要先注册:
@ -12,6 +12,7 @@ http://172.188.24.12:3000/
## 教程内容
0. [Git环境安装](./Lab0/lab0.md)
1. [创建、修改、暂存和提交](./Lab1/lab1.md)
2. [克隆、拉取、推送](./Lab2/lab2.md)
2. [推送、拉取、克隆](./Lab2/Lab2.md)
3. [分支管理](./Lab3/lab3.md)
4. [进阶coming](./)
4. [基线和定制版本同步更改](./Lab4/lab4.md)
5. [解决冲突](./Lab5/lab5.md)