Git 冲突解决 (合并二:逻辑冲突)

两个用户修改了同一文件的同一区域,则在合并的时候回遇到冲突而导致合并过程中断。这是因为Git不能越俎代庖地替用户做出决定,而是把决定权交给用户。下面是合并冲突实验:

用户一在MySQLPDO.class.php 文件第8行写入一行代码;

commit -m "conflict test";

git push

用户二在MySQLPDO.class.php 文件第8行写入一行代码;

commit -m "conflict test";

git push

报错:

Git 冲突解决 (合并二:逻辑冲突)_第1张图片

git pull  (git pull = git fetch + git merge) 报错:

Git 冲突解决 (合并二:逻辑冲突)_第2张图片

git status 查看文件处于未合并(冲突)状态,因为这个文件在两个不同的提交中做了修改。

Git 冲突解决 (合并二:逻辑冲突)_第3张图片

版本库暂存区则会记录冲突文件的多个不同版本,可以使用git ls-files命令查看:(在下面的输出中,每一行分为四个字段,前两个分别是文件的属性和SHA1哈希值。第三个字段是暂存区编号,当合并冲突发生后,会用到0以上的暂存区编号。这三个副本实际上是提供冲突解决工具,用于实现三向文件合并的。

Git 冲突解决 (合并二:逻辑冲突)_第4张图片

cat chapter_2/MySQLPDO.class.php (特殊标识<<<<<<<和=======之间的是当前分支所更改的内容。特殊标识>>>>>>>和=======之间的内容是所合并的版本更改的内容也就是本实验中的user1更改并提交的内容)

Git 冲突解决 (合并二:逻辑冲突)_第5张图片

冲突解决:( 解决办法就是 user1 和 user2 商议将冲突部分代码更改为合适的内容,如果完全采取user2的代码,则不用更改,直接 add , commit , 然后 push 就 OK ) ;

Git 冲突解决 (合并二:逻辑冲突)_第6张图片

 

 

你可能感兴趣的:(Linux系统运维)