目录
背景:git 合并代码或分支冲突
解决方法
1.冲突情景制造
2.冲突解决
3. 总结
3.1 代码提交正常流程
背景:git 合并代码或分支冲突
此种情况的原因是我们提交代码前没有更新代码,导致本地仓库版本不是最新的版本。
正常的操作流程在我们每次提交代码前,要从远处代码仓库更新代码,保证本地仓库代码版本和远端代码仓库版本保存一致。
解决方法
解决方法简单来说就是修改冲突的代码
1.冲突情景制造
提前准备好分支 branch-test1 ,文件 test-code
用户A 用vi test-code 新建一个文件,git status
提交文件,并推送到远程代码仓库中。
git add test-code
git add . 默认添加所有修改过的文件
git status 查看下状态,
git commit -m "add new file" -m 表示添加注释信息 "add new file"
如下图 所示
将文件推送到远程代码仓库
git push origin branch-test1
此处origin 表示远程仓库,branch-test1 表示本地分支仓库
如下图
前提情况准备完成
这个时候用户B 更新此文件到本地仓库,并修改部分内容提交
用户A 这个时候也修改的了test-code 文件,但是并没有先更新本地代码仓库,就提交,就会出现错误。如图
这个时候用户去合并代码,也就会报冲突的错误信息。
2.冲突解决
找到冲突的文件,修改冲突代码,这里冲突文件是test-code 直接修改它
打开文件可以看到<<<<<<<<HEAD 开始包括的是本地仓库的代码,<<<<<<<HEAD 之上是远程代码仓库的代码。
保留你需要的内容,去掉<<<<<<HEAD 和 ==========
>>>>>>>>标识的内容
然后重新命令
git add test-code
git commit -m "test-code"
git push origin branch-test1
如图
3. 总结
3.1 代码提交正常流程
一般来说我们在提交代码前,可以用命令git diff 来查看本地和远程代码是否一样,有不一样然后在合并到本地
git fetch命令更新代码是不会合并代码到本地仓库,用命令git diff 来查看代码的异同
git pull 命令会将远程仓库的代码合并到本地
此案例的流程如下
git fetch origin branch-test1
此命令用于从远处下载代码到本地,但是并不合并到当前代码中,orgin 表示远处代码仓库,branch-test1 为本地代码仓库
git diff origin/branch-test1 branch-test1
当用完fetch 命令后就可以用此命令来查看不一样的地方,好确定是否将远处代码库代码合并到本地代码库中。
------- a/test-code
a/test-code, 如果此处是 a/dev/null 说明指定的文件不对,此案例中
//如果是用 git diff origin branch-test1 就会有此中情况出现。
++++ b/test-code
@@ -1,3 +1,3 @@
//表示差异文件的位置是在- 1,3 表示 a/test.code 文件差异的位置在第一行之前 到 第三行
+1,3 表示 b/test.code 文件中 差异位置在第一行之后到第三行
test the confix situation
hello world!
-input the futhure
+get the futhure
// 黑色字体是两个文件都有的内容, - 红色表示是本地文件相对于远处代码仓库缺少的内容,
+绿色表示本地文件相对于远处代码仓库多出来的内容。
//表示是本地代码仓库的代码文件
git pull origin branch-test1