如何找到应用于git merge的标志

如何找到应用于git merge的标志,git,git-merge,Git,Git Merge,git合并提交似乎破坏了我对一个父级所做的更改。具体来说,一个父级包含更改(从文件中删除一些行,然后删除另一个文件),而另一个父级不包含这些更改。合并的结果不包含更改。合并提交上的git show显示添加到文件中的已删除行,而不是删除这些行。git show不会显示对已删除文件的任何更改 我试图理解为什么合并结果不包含更改。合并提交消息并不表示受影响文件存在任何冲突 我的问题是:是否有某种方法可以发现对合并应用了哪些标志?(是否有任何标志不会从包含它们的父级引入更改?对于受影响的文件没有冲突,因

git合并提交似乎破坏了我对一个父级所做的更改。具体来说,一个父级包含更改(从文件中删除一些行,然后删除另一个文件),而另一个父级不包含这些更改。合并的结果不包含更改。合并提交上的git show显示添加到文件中的已删除行,而不是删除这些行。git show不会显示对已删除文件的任何更改

我试图理解为什么合并结果不包含更改。合并提交消息并不表示受影响文件存在任何冲突

我的问题是:是否有某种方法可以发现对合并应用了哪些标志?(是否有任何标志不会从包含它们的父级引入更改?对于受影响的文件没有冲突,因此--我们的或--他们的文件会有任何影响?)

我担心可能有其他文件的更改被删除。我想我会尝试一些git diff的排列来找到它们。欢迎就这一点提出任何建议

我的问题是:是否有某种方法可以发现对合并应用了哪些标志

简短的回答是否定的。当合并完成时,作为结果记录的唯一内容是提交对象本身,它与任何其他提交一样,记录您的姓名、电子邮件地址和时间戳(作为作者和提交者),父提交散列(两个主要输入—第三个输入—合并基本提交—是根据这些输入自动计算的)、日志消息,当然还有最终快照

(是否有任何标志不会从包含它们的父级引入更改

受影响的文件没有冲突,所以我们的或他们的会有任何影响吗?)

git merge
命令本身没有
--ours
--theres
;相反,它有一组非常混乱的选项:

  • -s ours
    :完全忽略其他提交;找不到合并基;只需使用当前索引内容进行合并提交即可。(这种方式永远不会有任何冲突,因为Git甚至不会查看它们的更改。)
  • -X ours
    :如果存在冲突,请使用我们的更改自动解决冲突。如果对同一文件有其他未经确认的更改,请使用他们对该文件的更改
  • -X他们的
    :如果存在冲突,则使用他们的更改自动解决冲突。与
    -X我们的
    一样,这只影响文件中的冲突区域;未冲突的更改会像往常一样合并

如果有任何未解决的冲突,尽管<代码> Git合并在合并的中间停止,并给予(合并的人)完全控制。在这一点上有<代码>——我们的< /代码>和<>代码>它们的选项,到<代码> Git签出< /代码> .< 我担心可能会有其他文件的更改被破坏。我想我会尝试一些git diff的排列来尝试找到这些文件。关于这一点的任何建议都是欢迎的

这是可能的;请注意,您可以运行
git show-m
将合并拆分为两个单独的虚拟提交,一个以父级#1作为其单亲(以便
git diff
将区分该父级与合并结果),另一个以父级#2作为其单亲(这样,由
gitshow-m
运行的第二个
git diff
,将使另一个父级与合并结果相区别)


要查看合并的输入,请运行:

git merge-base --all <hash of first parent> <hash of second parent>
看看你是否以不同的方式解决问题

我的问题是:是否有某种方法可以发现对合并应用了哪些标志

简短的回答是否定的。当合并完成时,作为结果记录的唯一内容是提交对象本身,它与任何其他提交一样,记录您的姓名、电子邮件地址和时间戳(作为作者和提交者),父提交散列(两个主要输入—第三个输入—合并基本提交—是根据这些输入自动计算的)、日志消息,当然还有最终快照

(是否有任何标志不会从包含它们的父级引入更改

受影响的文件没有冲突,所以我们的或他们的会有任何影响吗?)

git merge
命令本身没有
--ours
--theres
;相反,它有一组非常混乱的选项:

  • -s ours
    :完全忽略其他提交;找不到合并基;只需使用当前索引内容进行合并提交即可。(这种方式永远不会有任何冲突,因为Git甚至不会查看它们的更改。)
  • -X ours
    :如果存在冲突,请使用我们的更改自动解决冲突。如果对同一文件有其他未经确认的更改,请使用他们对该文件的更改
  • -X他们的
    :如果存在冲突,则使用他们的更改自动解决冲突。与
    -X我们的
    一样,这只影响文件中的冲突区域;未冲突的更改会像往常一样合并

如果有任何未解决的冲突,尽管<代码> Git合并在合并的中间停止,并给予(合并的人)完全控制。在这一点上有<代码>——我们的< /代码>和<>代码>它们的选项,到<代码> Git签出< /代码> .< 我担心可能会有其他文件的更改被破坏。我想我会尝试一些git diff的排列来尝试找到这些文件。关于这一点的任何建议都是欢迎的

这是可能的;请注意,您可以运行
git show-m
将合并拆分为两个单独的虚拟提交,其中一个虚拟提交的父级为#1(以便
git diff
将区分该父级)
git diff --find-renames <merge base hash> <hash of first parent>
git diff --find-renames <merge base hash> <hash of second parent>
git diff HEAD <other merge commit ID>