紧跟上一篇文章:
https://blog.csdn.net/qq_44160357/article/details/103548128
1.通过上一篇知道:
两个commit.add到同一个gap. 那么不同的操作顺序最终结果不同. 这两个commit是conflict(冲突).
两个commit.当删除第n行或者在第n行末尾添加新内容或者把第n行替换成新内容或者在第n行上把该行的内容删除一部分时,只留下一部分时, 这一行本身和这一行前后的gap都被被锁定-----可以认为时被污染的范围之内. 此时在本行的前后面不能继续删除以及不能在末尾添加新内容以及在本行的前面或者后面不能添加一行新内容. 这样会产生冲突.
上一篇有个问题记录, 本文继续根据实验结论来解决这个问题记录:
为什么会产生冲突???
根据实验再次验证出来的(如果有不正确的地方,欢迎指正.)
解析一:
1. base文件(基地文件). 从图中可以看出base文件为aa.txt其内容为a. 图中有两个分支, maste分支和dev分支, 在master分支和dev分支上的修改都是根据base文件的内容为基础进行修改.
2. 首先git的区分文件变化的最细粒度是line行, 不是单词更不是字母, 当base文件的行数为1行时, 如果对第一行内容进行修改(删除该行内容或者在该行末尾添加新内容或者把改行内容替换成新内容或者删除该行部分内容,只留下一部分内容),那么在该行的上面或者该行的下面添加一行或者多行新内容,只要在该行的上面或者下面添加一行或者多行新内容都会产生冲突.
3. 既然都是根据base文件内容为基础进行修改, 如果要在maste,dev分支上来修改并且不产生冲突, 首先在master,dev其中一个分支上在第一行上面添加一行或者多行新内容, 在另一个分支上在第一行下面添加一行或者多行新内容. 两个分分支不能同时在第一行内容上面添加一行或者多行新内容. 也不能同时在第一行下面添加一行或者多行新内容. 总之一个分支要在第一行上面添加一行或者多行新内容,另一个分支要在第一行下面添加一行或者多行新内容.
4. 如图一和图二
解析二:
1. 首先git的区分文件变化的最细粒度是line行, 不是单词更不是字母, 当base文件(aa.txt)的行数为2时, 如果对第一行内容进行修改(删除该行内容或者在该行末尾添加新内容或者把改行内容替换成新内容或者删除该行部分内容,只留下一部分内容), 那么此时不能在第0行, -1, -2, -3, -4...行上添加一行或者多行新内容. 也不能在1.5上添加一行或者多行新内容. 也不能在第2行上对bbb进行修改.
2. 怎么样能避免冲突呢?
答案: 可以在第3行, 4, 5, 6, 7..行添加一行或者多行新内容. 就可以避免冲突.
解析三:
1. 首先git的区分文件变化的最细粒度是line行, 不是单词更不是字母, 当base文件(aa.txt)的行数为2时, 当对第2行的内容进行修改(删除该行内容或者在该行末尾添加新内容或者把改行内容替换成新内容或者删除该行部分内容,只留下一部分内容), 那么此时不能在第3行, 4, 5, 6...行添加一行或者多行新内容. 也不能在1.5上添加一行或者多行新内容, 也不能在第1行上对aaa进行修改.
2. 怎么样能避免冲突呢?
答案: 只能在第0行,1, 2, 3, 4...行上添加一行或者多行新内容.
解析四:
1,首先git的区分文件变化的最细粒度是line行, 不是单词更不是字母, 当base文件(aa.txt)的行数为2时
2. 如果都不把第1行和第2行上内容进行修改. 如何可以不产生冲突?
答案: 一个分支在第1行上面添加一行或者多行新内容, 另一个分支在第2行下面添加一行或者多行新内容.
或者一个分支在第1行上面添加一行或者多行新内容.另一个分支在1.5上添加一行或者多行内容. 或者一个分支在第2行下面添加
一行或者多行新内容.另一个分支在1.5上添加一行或者多行内容. 这样就不会产生冲突。
3. 切记: 不可以 两个分支同时在第1行上卖弄或者第2行下面一起添加一行或者多行新内容。这样会产生冲突的.
解析五:
1. 首先git的区分文件变化的最细粒度是line行, 不是单词更不是字母, 当base文件(aa.txt)的行数为3时
2. 当修改第1行时,此时第0,-1, -2, -3,-4...行不能添加一行或者多行新内容,同时在1.5上不能添加一行或者多行新内容.同时不能对第2行内容进行修改. 如果要这样.会产生冲突。
2.1: 如果要不产生冲突??
答案: 可以在2.5上添加一行或者多行内容. 也可以对第3行内容进行修改. 也可在第4,5,6,7..行上添加一行或者多行新内容.
3. 当修改第2行时, 此时1.5和2.5上不能添加一行或者多行内容, 不能对第一行和第三行内容进行修改。
3.1: 如果要不产生冲突?
答案: 可以在第0行, -1, -2, -3, -4..行上添加一行或者多行新内容. 也可以在第4,5,6,7..行上添加一行或者多行新内容.
4. 当修改第3行时, 此时不能在2.5上添加一行或者多行内容. 也不能对第2行内容进行修改. 也不能在第4,5,6,7..行上添加一行或者多行新内容.
4.1: 如果要不产生冲突?
答案: 可以对第1行内容进行修改. 也可以在1.5上添加一行或者多行新内容. 也可以在第0,-1,-2,-3,-4...行添加一行或者多行内容.
5. 如果都不修改第1行或者第2行或者第3行, 如何不产生冲突呢?
答案: 一个分支在第1行上面来添加一行或者多行新内容. 另一个分支在第3行下面添加一行或者多行新内容. 这样就可以避免冲突.
或者 一个分支在第0,-1,-2,-3, -4,-5...行上添加一行或者多行新内容. 另一个分支在1.5上或者在2.5添加一行或者多行新内容.也不会产生冲突. 或者一个分支在第4,5,6,7,8..行上添加一行或者多行新内容.另一个分支在1.5上或者在2.5上添加一行或者多行新内容. 也不会产生冲突.
或者 一个分支在1.5上添加一行或者多行新内容. 另一个分支在2.5上添加一行或者多行新内容. 这样也不会产生冲突.
切记: 两个分支不能在第1行上面或者第3行下面同时添加一行或者多行新内容。也就是说.两个分支要分开来,一个在上面一个在下面,不能同时在同一面, 在同一面会冲突的
记录:
1. base文件(基地文件). 从图中可以看出base文件为aa.txt其内容为a. 图中有两个分支, maste分支和dev分支, 在master分支和dev分支上的修改都是根据base文件的内容为基础进行修改.
2. 既然是根据base(基地)文件, 同时首先git的区分文件变化的最细粒度是line行, 不是单词更不是字母, 当base文件的行数为1行时。 只能在base文件的基础上来进行对行的增删改查.
博主是根据实验验证出来的, 总结的结论!!如果本文由写错的地方,欢迎指正!!!
来源:CSDN
作者:From_Dusk_Till_Dawn
链接:https://blog.csdn.net/qq_44160357/article/details/103568122