有没有办法在不触及分支的情况下强制 Git 合并冲突?
Is there any way to force a Git merge conflict without touching branches?
情况:
我有一个分支master
和一个分支feature
。我想在 feature
中进行更改并将它们 PR 以掌握,其中一些更改被标记为合并冲突。
为了说明,假设在分支 master
中有一个文件 test.txt,就像这样。
foo
Feature
看起来像这样
bar
zed
我想从 feature master 创建一个 PR,其中一些更改(例如从 foo 到 bar 的更改)被标记为合并冲突并且必须手动解决。同时,一些更改,如添加 zed,未标记为冲突。本质上,我需要在关闭 PR 之前对这些类型的冲突进行手动干预以进行标记和解决,但我不希望审查所有更改。
有什么办法吗?可能通过手动将 git 冲突标记写入功能?
Is there any way to do this?
只能通过制造实际冲突。
可能有冲突的合并1 有三个输入:
- a merge base: 其他两个提交的共同提交,
git merge
,或人为选择的提交 git cherry-pick
或 git revert
,例如;
- 当前提交(
HEAD
或--ours
,有时本地);
- 另一个提交(有时称为 other 或 remote 或
--theirs
)。
发生低级(文件内)冲突时间:
- 从合并基础到文件的当前副本的
git diff --find-renames
输出中,某些文件存在差异, 和
- 从合并基础到另一个提交的
git diff --find-renames
输出中看到的同一文件存在差异, 和
- 这些变化触及相同的线条,或者相邻(一个的结尾是另一个的开始)。
在这种特殊情况下,当 Git 尝试合并两组更改时,更改会发生冲突,您会看到冲突,除非您使用 -Xours
或 -Xtheirs
自动从两个相互冲突的更改中选择一个。
(高级冲突也有相同的三个输入,但发生在例如差异 的一侧修改 文件,而另一侧 删除 文件。不存在冲突的行集,但仍然存在冲突:应该Git 保留修改后的文件,还是完全删除文件?)
1任何真正的合并——我指的是合并的过程,或者合并作为动词——都可能有冲突。这里的措辞是为了掩盖 git merge
有时不执行合并的事实,当它执行 fast-forward 操作时。
情况:
我有一个分支master
和一个分支feature
。我想在 feature
中进行更改并将它们 PR 以掌握,其中一些更改被标记为合并冲突。
为了说明,假设在分支 master
中有一个文件 test.txt,就像这样。
foo
Feature
看起来像这样
bar
zed
我想从 feature master 创建一个 PR,其中一些更改(例如从 foo 到 bar 的更改)被标记为合并冲突并且必须手动解决。同时,一些更改,如添加 zed,未标记为冲突。本质上,我需要在关闭 PR 之前对这些类型的冲突进行手动干预以进行标记和解决,但我不希望审查所有更改。
有什么办法吗?可能通过手动将 git 冲突标记写入功能?
Is there any way to do this?
只能通过制造实际冲突。
可能有冲突的合并1 有三个输入:
- a merge base: 其他两个提交的共同提交,
git merge
,或人为选择的提交git cherry-pick
或git revert
,例如; - 当前提交(
HEAD
或--ours
,有时本地); - 另一个提交(有时称为 other 或 remote 或
--theirs
)。
发生低级(文件内)冲突时间:
- 从合并基础到文件的当前副本的
git diff --find-renames
输出中,某些文件存在差异, 和 - 从合并基础到另一个提交的
git diff --find-renames
输出中看到的同一文件存在差异, 和 - 这些变化触及相同的线条,或者相邻(一个的结尾是另一个的开始)。
在这种特殊情况下,当 Git 尝试合并两组更改时,更改会发生冲突,您会看到冲突,除非您使用 -Xours
或 -Xtheirs
自动从两个相互冲突的更改中选择一个。
(高级冲突也有相同的三个输入,但发生在例如差异 的一侧修改 文件,而另一侧 删除 文件。不存在冲突的行集,但仍然存在冲突:应该Git 保留修改后的文件,还是完全删除文件?)
1任何真正的合并——我指的是合并的过程,或者合并作为动词——都可能有冲突。这里的措辞是为了掩盖 git merge
有时不执行合并的事实,当它执行 fast-forward 操作时。