如何找到应用于git merge的标志
git合并提交似乎破坏了我对一个父级所做的更改。具体来说,一个父级包含更改(从文件中删除一些行,然后删除另一个文件),而另一个父级不包含这些更改。合并的结果不包含更改。合并提交上的git show显示添加到文件中的已删除行,而不是删除这些行。git show不会显示对已删除文件的任何更改 我试图理解为什么合并结果不包含更改。合并提交消息并不表示受影响文件存在任何冲突 我的问题是:是否有某种方法可以发现对合并应用了哪些标志?(是否有任何标志不会从包含它们的父级引入更改?对于受影响的文件没有冲突,因此--我们的或--他们的文件会有任何影响?) 我担心可能有其他文件的更改被删除。我想我会尝试一些git diff的排列来找到它们。欢迎就这一点提出任何建议 我的问题是:是否有某种方法可以发现对合并应用了哪些标志 简短的回答是否定的。当合并完成时,作为结果记录的唯一内容是提交对象本身,它与任何其他提交一样,记录您的姓名、电子邮件地址和时间戳(作为作者和提交者),父提交散列(两个主要输入—第三个输入—合并基本提交—是根据这些输入自动计算的)、日志消息,当然还有最终快照 (是否有任何标志不会从包含它们的父级引入更改 对 受影响的文件没有冲突,所以我们的或他们的会有任何影响吗?)如何找到应用于git merge的标志,git,git-merge,Git,Git Merge,git合并提交似乎破坏了我对一个父级所做的更改。具体来说,一个父级包含更改(从文件中删除一些行,然后删除另一个文件),而另一个父级不包含这些更改。合并的结果不包含更改。合并提交上的git show显示添加到文件中的已删除行,而不是删除这些行。git show不会显示对已删除文件的任何更改 我试图理解为什么合并结果不包含更改。合并提交消息并不表示受影响文件存在任何冲突 我的问题是:是否有某种方法可以发现对合并应用了哪些标志?(是否有任何标志不会从包含它们的父级引入更改?对于受影响的文件没有冲突,因
git merge
命令本身没有--ours
和--theres
;相反,它有一组非常混乱的选项:
:完全忽略其他提交;找不到合并基;只需使用当前索引内容进行合并提交即可。(这种方式永远不会有任何冲突,因为Git甚至不会查看它们的更改。)-s ours
:如果存在冲突,请使用我们的更改自动解决冲突。如果对同一文件有其他未经确认的更改,请使用他们对该文件的更改-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
;相反,它有一组非常混乱的选项:
:完全忽略其他提交;找不到合并基;只需使用当前索引内容进行合并提交即可。(这种方式永远不会有任何冲突,因为Git甚至不会查看它们的更改。)-s ours
:如果存在冲突,请使用我们的更改自动解决冲突。如果对同一文件有其他未经确认的更改,请使用他们对该文件的更改-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>