乐趣区

Git教程03冲突

大纲

  • 冲突
  • 解决
  • 练习

冲突

冲突 是在 多人协作 开发过程中常见的情况。
我们先学习在同一分支下的冲突问题。
同一分支 下,冲突的问题表现为 多人 同一文件 进行了 修改

模拟冲突
1、先克隆同一个项目到两个文件夹。此时两个项目都是最新的。

2、修改第一个项目中的文件,提交到仓库。

3、再修改第二个项目中的同一个文件,相当于另一个人在同时对项目进行了修改。

4、这时如果进行 Commit 操作,是没有问题的。因为 Commit 只提交到本地。

5、但当进行Push 操作 时,就会 出错 ,这就是 冲突

冲突特征
报错时,下面的标是红色的

弹出框里显示
error: failed to push some refs to …
git did not exit cleanly
并在 左下角 提示你去进行Pull 操作

解决

1、先进行 Pull 操作,但是还是会报错。

信息显示:
CONFLICT (content): Merge conflict in 新建文本文档.txt
Automatic merge failed; fix conflicts and then commit the result.
翻译过来就是 遇到冲突 ,无法将 线上仓库 本地 的这个文件进行 自动合并
2、如果没有出错,那说明线上仓库和本地虽然有冲突,但是可以自动合并。
3、有冲突的文件会显示成 警告状态
4、打开冲突文件,看到出现了奇怪的符号。

这就是 git 里 展示冲突 的方式,HEAD 本地 的最新版本内容,
下面的一串 数字 代表 线上仓库 的一个 版本 ,每一次 commit 都会产生一个这样的版本。
所以我们可以知道的是本地版本是”嘻嘻 222”,线上是”呵呵”,所以有冲突。

5、一种解决方式是直接进行修改,将冲突的几行删除,修改成我要的。

6、另一种方式是使用冲突编辑工具。
右键文件,TortoiseGit => Edit confilicts

7、打开后

在下面的编辑框中写上最终的代码,保存。
8、编辑完成后,保存。

9、之后就可以正常进行 commit 和 push 操作了。

练习

尝试个人模拟冲突,或者几个人共同使用一个 git 项目做一个真实的冲突。
练习如何解决冲突,成功上传。


github: https://github.com/lvancer/course_git

退出移动版