gpt4 book ai didi

git - `git merge` 是否能够将每个更改(w.r. 到一个共同的祖先)显示为 merge 冲突?

转载 作者:太空狗 更新时间:2023-10-29 13:59:03 25 4
gpt4 key购买 nike

假设我们有一个文件 common_ancestor (master)

ok
ok
ok
ok
ok

从那里,我们更改并提交 master

ok
change not ok (looking back)
ok
ok
ok
latest change
ok

现在我们有了一个更好的主意,检查 common_ancestor 并将其更改为

ok
ok
ok
This is a really good change
ok
ok

并提交到一个新的分支dev。因为我需要 master 的一些开发,所以我想将 dev merge 到 master 中,但我想决定是否保留每个更改。我试过了

git checkout master
git merge dev --no-ff --no-commit

但我没有得到我期望的。我正在寻找的是这样的:

ok
<<<<HEAD
change not ok (looking back)
====
>>>> HASH
ok
ok
<<<<HEAD
====
This is a really good change
>>>> HASH
ok
<<<<HEAD
latest change
====
>>>> HASH

哪里可以看到冲突标记(参见here)。

编辑:据我所知,git merge dev --no-ff --no-commit 没有突出显示更改 - @VonC 解释了为什么没有冲突标记可见(因为没有冲突!)。

最佳答案

在您的情况下,将 dev merge 到 master 会简单地:

  • 添加来自 dev 的更改“这是一个非常好的更改
  • 保留 master 中引入的更改“更改不正常(回头看)

那是因为这些更改不是在文件中的同一位置进行的:在同一行没有并发修改。
这意味着没有冲突。

如果您想在 merge 之后查看(但在 merge 提交 之前),您can set up a custom merge driver .

[merge "verify"]
name = merge and verify driver
driver = ./merge-and-verify-driver %A %O %B

您可以在 .gitattributes file 中将该驱动程序关联到您的文件.

*.R merge=merge and verify driver

使用 merge-and-verify-driver.sh 始终返回 1 的脚本,以指示存在冲突,即使 merge 实际上已解决且没有冲突(这是这里的案例: merge 中没有冲突)。

#!/bin/bash
git merge-file "${1}" "${2}" "${3}"
exit 1

注意:如果发生冲突,您将获得更多信息:

git config --global merge.conflictstyle diff3

关于git - `git merge` 是否能够将每个更改(w.r. 到一个共同的祖先)显示为 merge 冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39508424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com