Git merge 合并所有跟踪文件(快照)或更改的文件?
Git merge merge all tracking files(snapshot) or changed files?
假设我们有三个文件 1 2 3 并且它们在每个文件中都有初始值 6 (commit a)
- 在分支 1 中,提交:a(666),b(166),c(126) d(663)
- 在分支 2 中,提交:a(666),e(777)
其中:
- b 将文件 1 6 更改为 1
- c 将文件 2 6 更改为 2
- d 将 file1 file2 改回 6,file3 改回 3
- e 将 file1 file2 file3 更改为 7
当我将分支1合并到分支2时,只有文件3有合并冲突?
这是为什么?
我的理解是提交d
和提交e
会将所有跟踪文件合并在一起,所以所有文件应该有合并冲突?
合并冲突通常发生在并发 修改(在文件的同一行上)。
在您的更改序列中,只有 file3 在 branch1 和 branch2 中都被修改了。
所以合并将是有道理的:
- 报告(合并)从 branch1 到 branch2 的修改,其中提交
d
恢复了 a
和 b
的更改(回到 6):合并包括保留它们的修改分支 2.
- 检测到 file3 的冲突,该文件已在以下位置修改:
- 提交 d(分支 1)
- 提交(分支 2)
假设我们有三个文件 1 2 3 并且它们在每个文件中都有初始值 6 (commit a)
- 在分支 1 中,提交:a(666),b(166),c(126) d(663)
- 在分支 2 中,提交:a(666),e(777)
其中:
- b 将文件 1 6 更改为 1
- c 将文件 2 6 更改为 2
- d 将 file1 file2 改回 6,file3 改回 3
- e 将 file1 file2 file3 更改为 7
当我将分支1合并到分支2时,只有文件3有合并冲突?
这是为什么?
我的理解是提交d
和提交e
会将所有跟踪文件合并在一起,所以所有文件应该有合并冲突?
合并冲突通常发生在并发 修改(在文件的同一行上)。
在您的更改序列中,只有 file3 在 branch1 和 branch2 中都被修改了。
所以合并将是有道理的:
- 报告(合并)从 branch1 到 branch2 的修改,其中提交
d
恢复了a
和b
的更改(回到 6):合并包括保留它们的修改分支 2. - 检测到 file3 的冲突,该文件已在以下位置修改:
- 提交 d(分支 1)
- 提交(分支 2)