git中什么时候合并会引发冲突

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces                                                                         
$ mkdir Test/  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces $ cd Test/  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test $ git init Initialized empty Git repository in D:/workspaces/Test/.git/  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master)

首先进入d盘下的workspaces文件夹下创建Test目录,并且将其初始化。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master)                                                           
$ vim one.txt  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master) $ cat one.txt aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee 

然后在Test目录下,创建了one.txt文件,内容如上,然后将其加入缓存区,并且提交到本地库。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master)                                                           
$ git branch hot_fix  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master) $ git branch-v git: 'branch-v' is not a git command. See 'git --help'.  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master) $ git branch -v  hot_fix 0ca2ee0 first commit * master  0ca2ee0 first commit  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master) $ git checkout hot_fix Switched to branch 'hot_fix'  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix) $ vim one.txt  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix) $ cat one.txt aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff 

创建新的分支 hot_fix 并切换到 hot_fix分支,然后修改one.txt文件,在原来的基础上增加了最后一行的内容。

注意:如果此时加入到缓存区,但没有提交到本地库时切换分支会出现错误,如果没有加入缓存区就切换分支是可以切换成功的,但是如果切换分之后,

再切换后的分支加入缓存区并且提交到本地库,那么文件的修改则会认为是切换后的分支做的。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master)                                                           
$ cat one.txt aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff ggggggggggggg hhhhhhhhhhhh iiiiiiiiiiiiii jjjjjjjjjjjjj 

在master分支下,one.txt文件的内容如上所示

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix)                                                          
$ cat one.txt  aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff ggggggggggggg hhhhhhhhhhhh iiiiiiiiiiiiii 

在hot_fix分之下,one.txt文件的内容如上所示

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix)                                                          
$ git merge master Updating 0ef9a92..52dcdab Fast-forward  one.txt | 1 +  1 file changed, 1 insertion(+)  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix) $ git status On branch hot_fix nothing to commit, working tree clean  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix) $ cat one.txt aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff ggggggggggggg hhhhhhhhhhhh iiiiiiiiiiiiii jjjjjjjjjjjjj 

在hot_fix分支下,将master分支合并进hot_fix分支,可以看出,合并成功后,执行git status命令,工作树是干净的,也就是说,如果合并成功,那么将不用再执行加入缓存区,

提交到本地库等操作。并且hot_fix分支中one.txt的内容与master分支中的一样。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix)                                                          
$ vim one.txt  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix) $ cat one.txt aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff ggggggggggggg hhhhhhhhhhhh 

在hot_fix分支下,将one.txt的最后两行删除,然后加入缓存区,提交到本地库。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master)                                                           
$ cat one.txt  aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff ggggggggggggg hhhhhhhhhhhh iiiiiiiiiiiiii jjjjjjjjjjjjj 

在master分支下,one.txt文件中的内容依然未变。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master)                                                           
$ git merge hot_fix Updating 52dcdab..ca43adc Fast-forward  one.txt | 2 --  1 file changed, 2 deletions(-)  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master) $ cat one.txt aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff ggggggggggggg hhhhhhhhhhhh 

在master分支下,执行合并操作,将hot_fix合并进master分支后,可以看出,master分支像hot_fix一样,one.txt的内容都少了两行。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master)                                                           
$ cat one.txt aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff ggggggggggggg hhhhhhhhhhhhiii 

在master分支下,修改one.txt的内容,如上,再最后一行中多填了3个i,然后加入缓存区,提交到本地库。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix)                                                          
$ cat one.txt  aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff ggggggggggggg hhhhhhhhhhhh  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix) $ git merge master Updating ca43adc..a0201e4 Fast-forward  one.txt | 2 +-  1 file changed, 1 insertion(+), 1 deletion(-)  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix) $ cat one.txt aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff ggggggggggggg hhhhhhhhhhhhiii 

在hot_fix分支下,内容仍然未变,然后合并master分支,发现更改了两行,一行为增,一行为减,git是以行为单位进行修改的,于是在hot_fix分支下,

one.txt先删去了最后一行的内容,再将master分支下新改的一整行加入进去。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix)                                                          
$ vim one.txt  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix) $ cat one.txt ppppppppppppppppppp aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff wulawula 

在hot_fix 分支下,修改one.txt文件,删除了最后两行,并在第一行插入了多个p字母,并且又在新的最后一行加入了新字符,然后加入缓存区,提交到本地库。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master)                                                           
$ cat one.txt aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff ggggggggggggg hhhhhhhhhhhhiii  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master) $ git merge hot_fix  Updating a0201e4..e2bde96 Fast-forward  one.txt | 5 ++---  1 file changed, 2 insertions(+), 3 deletions(-)  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master) $ cat one.txt ppppppppppppppppppp aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff wulawula 

切换到master分支,one.txt内容并未改变,然后合并hot_fix分支,是可以合并成功的,并且显示更改了五行内容,其中增加了两行内容,删除了三行内容。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master)                                                           
$ git diff a0201e4 diff --git a/one.txt b/one.txt index c712368..4975dde 100644 --- a/one.txt +++ b/one.txt @@ -1,8 +1,7 @@ +ppppppppppppppppppp  aaaaaaaaaaaaaaaaaaaaa  bbbbbbbbbbbbbbbbbb  ccccccccccccc  ddddddddddd  eeeeeeeeeeeee -fffffffffffff -ggggggggggggg -hhhhhhhhhhhhiii +fffffffffffff wulawula

这就是具体增加的内容和删除的内容,尽管修改了多行,仍然没有发生合并冲突。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master)                                                           
$ cat one.txt  ppppppppppppppppppp aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff wulawula last 

在master分支下,对one.txt文件进行修改,在最后一行增加了"last‘’,加入缓存区,提交到本地库。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix)                                                          
$ cat one.txt first ppppppppppppppppppp aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff wulawula 

在hot_fix分支下,对one.txt文件进行修改,在第一行增加了"first",加入缓存区,提交到本地库。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix)                                                          
$ git merge master Auto-merging one.txt Merge made by the 'recursive' strategy.  one.txt | 1 +  1 file changed, 1 insertion(+)  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix) $ cat one.txt first ppppppppppppppppppp aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff wulawula last 

然后合并master分支,没有发生冲突。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master)                                                           
$ cat one.txt  ppppppppppppppppppp aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff wulawula last  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master) $ git merge hot_fix Updating d6c1af4..b8e70d9 Fast-forward  one.txt | 1 +  1 file changed, 1 insertion(+)  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master) $ cat one.txt first ppppppppppppppppppp aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff wulawula last 

切换master分支,one.txt文件的内容并未改变,然后在master分支下,合并hot_fix分支,发现也能成功,没有发生冲突。

                                                                                                                    
86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master) $ vim one.txt  86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master) $ cat one.txt ppppppppppppppppppp aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee last fffffffffffff wulawula last last 

在master分支下,修改one.txt文件,在倒数第二行和第三行增加"last",并删除第一行。增加到缓存区,提交到本地库。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix)                                                           $ cat one.txt  first  ppppppppppppppppppp first  aaaaaaaaaaaaaaaaaaaaa fitst  bbbbbbbbbbbbbbbbbb  ccccccccccccc  ddddddddddd  eeeeeeeeeeeee  fffffffffffff wulawula 

在hot_Fix分支下,修改one.txt文件,在第二行和第三行增加"first",并删除最后一行。增加到缓存区,提交到本地库。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix)                                                                         
$ git merge master Auto-merging one.txt CONFLICT (content): Merge conflict in one.txt Automatic merge failed; fix conflicts and then commit the result. 

合并master发生冲突。

            

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master)                                                                          
$ cat one.txt  <<<<<<< HEAD first ppppppppppppppppppp first aaaaaaaaaaaaaaaaaaaaa fitst bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee fffffffffffff wulawula ======= ppppppppppppppppppp aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee last fffffffffffff wulawula last last last >>>>>>> master 

在master分支下,修改one.txt文件,在最后一行增加了last。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix)                                                                         
$ git merge master Auto-merging one.txt Merge made by the 'recursive' strategy.  one.txt | 2 +-  1 file changed, 1 insertion(+), 1 deletion(-) 

合并成功。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (master)                                                                          
$ cat one.txt <<<<<<< HEAD first first ppppppppppppppppppp first aaaaaaaaaaaaaaaaaaaaa fitst bbbbbbbbbbbbbbbbbb ccccccccccccc edit by master ddddddddddd eeeeeeeeeeeee fffffffffffff wulawula ======= ppppppppppppppppppp aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee last fffffffffffff wulawula last last last >>>>>>> master 

在master分支下,修改one.txt文件内容,在有许多c字母的那一行添加了 edit by master。增加到缓存区,提交到本地库。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix)                                                                         
$ cat one.txt  <<<<<<< HEAD first first ppppppppppppppppppp first aaaaaaaaaaaaaaaaaaaaa fitst bbbbbbbbbbbbbbbbbb ccccccccccccc eidt by hot_fix ddddddddddd edit by hot_fix eeeeeeeeeeeee fffffffffffff wulawula ======= ppppppppppppppppppp aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbb ccccccccccccc ddddddddddd eeeeeeeeeeeee last fffffffffffff wulawula last last last >>>>>>> master 

在hot_fix分支下,修改one.txt文件内容,在有许多c字母的哪一行添加了 edit by hot_fix 并且在下一行也添加了相同内容。增加到缓存区,提交到本地库。

86155@LAPTOP-R32U2085 MINGW64 /d/workspaces/Test (hot_fix)                                                                         
$ git merge master  Auto-merging one.txt CONFLICT (content): Merge conflict in one.txt Automatic merge failed; fix conflicts and then commit the result. 

合并发生冲突。

可见,如果两个分支同时修改了同一行内容,并且都提交到了本地库,合并时就会发生冲突。

注意:如果删除了第一行,那么第二行就会向前进为第一行,也就是说第一行修改了内容。

猜你喜欢

转载自www.cnblogs.com/huangshizhou/p/10334732.html