Git 试图理解为什么一个分支中的文件更改在合并到另一个分支后不会反映出来

Git 试图理解为什么一个分支中的文件更改在合并到另一个分支后不会反映出来,git,Git,背景 我们有dev、qa、prod和feature分支。当我们创建新的特征分支时,我们使用prod作为基础分支。我们的产品分支始终包含生产中的最新代码 我们的一位开发人员正在开发一个功能分支,这需要几个月的时间。每次更新产品分支时,他都会将产品分支合并到其要素分支中 问题 昨天,他将prod合并到他的feature分支中,并注意到对prod分支中某些文件的更改没有反映在他的分支中。他没有在分支中修改的文件被选中,而不是在prod分支中更新的文件。我们正试图找出原因 一个文件在prod分支上具有以

背景

我们有dev、qa、prod和feature分支。当我们创建新的特征分支时,我们使用prod作为基础分支。我们的产品分支始终包含生产中的最新代码

我们的一位开发人员正在开发一个功能分支,这需要几个月的时间。每次更新产品分支时,他都会将产品分支合并到其要素分支中

问题

昨天,他将prod合并到他的feature分支中,并注意到对prod分支中某些文件的更改没有反映在他的分支中。他没有在分支中修改的文件被选中,而不是在prod分支中更新的文件。我们正试图找出原因

一个文件在prod分支上具有以下历史记录

commit 19e90b87c4e62ec772a8141789f34c608aa45013 
Date:   Mon Aug 10 14:28:07 2015 -0500    

commit 78cc39d513ee357f416d09137e88cfcc2c33196e 
Merge: ef23ce7 adc3177 
Date:   Thu May 7 08:45:12 2015 -0500
将prod合并到其功能分支中并查看其功能分支中该文件的日志后,历史记录从以下提交开始

commit 78cc39d513ee357f416d09137e88cfcc2c33196e
Merge: ef23ce7 adc3177
Date:   Thu May 7 08:45:12 2015 -0500
我不知道为什么commit 19e90b87没有包含在从prod到他的feature分支的合并中,而他从未在他的分支中更改过这个有问题的文件


我将继续研究,但任何想法都将不胜感激

你检查过文件权限了吗?阅读有关
core.filemode
config选项的信息。@ezaquarii:该值当前为false。我将其更改为true,执行了与我的开发人员朋友相同的操作并获得了相同的结果。我们可以假设他没有提供任何会产生这种效果的
-s
-X
选项吗?(
-s ours
表示“忽略合并分支上的所有更改”
-X ours
-X theres
表示“仅使用我们的或他们的解决冲突”。)我认为这不是问题,现在我只想完全清除这些选项。我能够验证命令行上没有传递任何选项。在签出功能分支时,正在执行的命令是git merge prod。您的问题似乎与我在中提到的问题不同,但您可以通读它以了解git merge的功能。首先要做的主要事情是找到原始的合并基,并从原始基运行两个
git diff
s到所讨论的两个分支提示。然而,这确实假设存在一个最佳合并基;如果存在交叉合并,您可能会遇到这样一种情况:有两个基础,然后git使用“虚拟合并基础”。我在另一个答案中忽略了这一点,因为它有点深奥,但您可能正在进行交叉合并。