我在 Git 中有两个主要分支:master
和dev
.
我的分支结构如下所示:
B-->E-->F-->G (master branch)
B-->C-->D-->H-->I-->J-->K (dev branch)
Run Code Online (Sandbox Code Playgroud)
之前,我进行了合并,master
并dev
有一个共同的母公司B
。
在提交E
,F
并G
掌握的,我删除了一些文件(说foo
和bar
)不正确,而他们在提交仍然存在C
起在dev
分支。
结果,当我执行三向合并以加入G
并K
创建 commit 时L
,L
不再包含 foo 和 bar !Git 没有以任何方式通知我他们的失踪。
在我看来,由于E
,F
并G
进行了简单的重播后提交C
因此foo
而bar
都不见了。
Git 合并的这种行为对我来说很奇怪。因为我无法知道是否有人从另一个分支删除了一些文件。
我不应该至少在合并时收到有关任何冲突修改的通知吗?
我不应该至少在合并时收到有关任何冲突修改的通知吗?
在这种情况下,无:合并dev
到master
从报告修改dev
(由于共同的祖先B
)到master
。
这里foo和酒吧都没有修改的dev
,因为B
。从B
. 有没有冲突(如果foo
和bar
地方在不修改dev
):这两个文件不会被合并(没有从应用而言dev
),并在保持不变master
(意味着删除)。
您可以预览合并:
git checkout master
git diff --name-status dev
Run Code Online (Sandbox Code Playgroud)
那将列出已删除的文件。
你能给我一些关于 Git 如何决定在合并期间重放哪些提交的指示吗?
Git在合并时不会“重放”提交(仅在rebase时):它只考虑两个分支 HEAD(和共同的祖先)。
Git 创建一个新的快照,该快照由这个三向合并产生,并自动创建一个指向它的新提交。这被称为合并提交,它的特殊之处在于它有多个父级。
归档时间: |
|
查看次数: |
1566 次 |
最近记录: |