主线日志及修改
$ git log master -p
commit 31213fad6150b9899c7e6b27b245aaa69d2fdcff (master)
Author:
Date: Tue Nov 28 10:19:53 2023 +08004diff --git a/123.txt b/123.txt
index 294d779..a712711 100644
--- a/123.txt
+++ b/123.txt
@@ -1,3 +1,4 @@123
+4^Mcommit a77b518156879a5d7e93636eb826d40f873ff919
Author:
Date: Tue Nov 28 10:19:37 2023 +08003diff --git a/123.txt b/123.txt
index bd956ea..294d779 100644
--- a/123.txt
+++ b/123.txt
@@ -1,2 +1,3 @@12
+3^Mcommit 9cb0b0d6c2c638fa9c35685972d0b57edbfd2d95
Author:
Date: Tue Nov 28 10:19:30 2023 +08002diff --git a/123.txt b/123.txt
index f33dfa2..bd956ea 100644
--- a/123.txt
+++ b/123.txt
@@ -1 +1,2 @@1
+2^Mcommit 137b1d78d1f696c5dc21d595142e0681bb041e1a
Author:
Date: Tue Nov 28 10:19:00 2023 +08001diff --git a/123.txt b/123.txt
new file mode 100644
index 0000000..f33dfa2
--- /dev/null
+++ b/123.txt
@@ -0,0 +1 @@
+1^M
冲突分支日志及修改(其中第2、3次提交为冲突提交,第四次为相同提交)
$ git log master-1 -p
commit 53d255eb15f59d0395453c7688a038bb9cf05816 (HEAD -> master-1)
Author:
Date: Tue Nov 28 10:21:20 2023 +08004diff --git a/123.txt b/123.txt
index 6065780..403b9a5 100644
--- a/123.txt
+++ b/123.txt
@@ -1,3 +1,4 @@11-21-3
+4
\ No newline at end of filecommit 7ac2b8868b83c4c1a50b52a3808c7df870ad90bb
Author:
Date: Tue Nov 28 10:21:10 2023 +08001-3diff --git a/123.txt b/123.txt
index ea907e6..6065780 100644
--- a/123.txt
+++ b/123.txt
@@ -1,2 +1,3 @@11-2
+1-3^Mcommit 91cf797a56db8a42623e707e01435d6d82f19402
Author:
Date: Tue Nov 28 10:21:02 2023 +08001-2diff --git a/123.txt b/123.txt
index f33dfa2..ea907e6 100644
--- a/123.txt
+++ b/123.txt
@@ -1 +1,2 @@1
+1-2^Mcommit 137b1d78d1f696c5dc21d595142e0681bb041e1a
Author:
Date: Tue Nov 28 10:19:00 2023 +08001diff --git a/123.txt b/123.txt
new file mode 100644
index 0000000..f33dfa2
--- /dev/null
+++ b/123.txt
@@ -0,0 +1 @@
+1^M
在master-1分支中运行git rebase,结果如下:
$ git rebase master
Auto-merging 123.txt
CONFLICT (content): Merge conflict in 123.txt
error: could not apply 91cf797... 1-2
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 91cf797... 1-2
一、冲突部分全部手动解决不跳过,并以master-1为准
base 为 master-1 冲突提交(1-2)之前和 master 不冲突的BASE公共部分
local为 master 目的分支最新提交的全部内容
remote 为当前 master-1 冲突待(remote 在词典中可以翻译为相差很大的)提交的内容
提交1-2冲突后,解决1-3冲突显示如下:
base 和 remote的概念理解保持一致,但local与预期不符.
local更新为:当前 master-1 已经提交并保存的了部分,也就是最终master-1的在硬盘内(local)的内容
提交冲突1-3后,继续:
最终rebase完成。
二、第2个冲突以master为准,其他以master-1为准
解决1-2冲突,修改文件如下后再提交:
解决1-3冲突,修改文件如下后再提交。
前面说 base 为 master-1 冲突提交(1-2)之前和 master 不冲突的BASE公共部分,但这里与预期不符,修改为:
base 为 master-1 冲突提交之前和 master 不冲突的提交,也就是可以共用(BASE)的提交,且为未修改前的提交
区别在于主体从内容,变成了一次提交,且为未修改前的提交
当前冲突修改界面说明:
这里local为上次解决冲突后的结果,也就是master-1(新),base变成冲突的上个提交1-2的冲突部分master-1(原始).
原始master-1日志列表 : 1-2 > 1-3 > 4
解决冲突1-2后 master-1 日志列表: (LOACL):1-2(新)> 1-3 >4 他们的共用BASE 提交 就是1-2(未修改前)
解决1-4冲突:
当前冲突修改界面说明:
原始master-1日志列表 : 1-2 > 1-3 > 4
解决冲突1-2后 master-1 日志列表: (LOACL):1-2(新)> 1-3(新) >4
三、第2冲突跳过,其他以master-1为准
1-2跳过,解决1-3冲突界面如下:
界面说明:
当前解决1-3,本地LOCAL 由于跳过1-2,所以LOCAL内容还是原始的1234. 这里相当于1-3 和 master (1-2跳过了形但魂还在) 进行rebase , 所以BASE为冲突分支的1-2。
总结:
base为 master-1 冲突提交之前和 master 不冲突的提交,也就是可以共用(BASE)的提交,且为未修改前的提交
local 为 当前 master-1 已经提交并保存的了部分,也就是最终master-1的在硬盘内(LOCAL)的内容
remote 为当前 master-1 冲突待(REMOTE 在词典中可以翻译为相差很大的)提交的内容