git合并后缺少文件

git合并后缺少文件,git,git-merge,Git,Git Merge,几周前,我创建了一个功能分支,我正在开发。这里有几个提交和一些新文件。我可以从主分支更改为开发分支,反之亦然,一切都很好 今天我试图将我的分支合并回主分支。所以我换了师父,打电话给他 git merge mydevbranch 这导致了几个合并冲突。我与他解决了这些冲突 git mergetool 但现在,我意识到,我必须提交的结果中缺少一些文件。 所以有两个问题:合并后我的硬盘上不应该有所有合并的项目吗?如何继续获得真正的合并结果(主功能+我的功能分支)。检查是否没有任何隐藏内容 git

几周前,我创建了一个功能分支,我正在开发。这里有几个提交和一些新文件。我可以从主分支更改为开发分支,反之亦然,一切都很好

今天我试图将我的分支合并回主分支。所以我换了师父,打电话给他

git merge mydevbranch
这导致了几个合并冲突。我与他解决了这些冲突

git mergetool
但现在,我意识到,我必须提交的结果中缺少一些文件。
所以有两个问题:合并后我的硬盘上不应该有所有合并的项目吗?如何继续获得真正的合并结果(主功能+我的功能分支)。

检查是否没有任何隐藏内容

git stash pop 吉特隐藏流行音乐 对于新文件,请确保首先添加它们(git状态应列出它们)

git添加
关于Git最好的文档,包括分支:

这样不可能丢失文件

您可以尝试以下方法:

git checkout mydevbranch
# following command to find the previous state easier if you are not familiar with reflog
git branch tmp-checkpoint 
git rebase master

然后解决冲突。如果文件仍然丢失,您可以使用git bisect(参见手册页)查找它们消失的点

经过一些调查,我发现了以下内容。该文件是我在创建分支之前在master上添加的(这就是为什么它在我的dev分支中)。但现在最疯狂的事情是:该文件后来被同事在master中删除,但没有任何状态信息。状态日志仅显示文件的创建。因此,合并是正确的,但由于缺少状态信息,我无法理解。

对于第一个问题,合并后我的硬盘上不应该有所有合并的项目吗

我在自己的环境中做实验。它的效果和你的一样。因此,我的结论是,如果合并具有相同文件的开发分支,那么在主分支中删除的文件将不会返回到主分支中


我认为这是有道理的。让我们假设您删除了主分支中许多不需要的文件,并提交这些删除。然后合并拥有所有这些不需要的文件的开发分支。如果所有这些不需要的文件都再次“添加”到主分支中,您可能会对这种情况感到不安,因为您必须花时间再次删除它们。

如果主分支中缺少mydevbranch中的文件,这意味着您可能在一个分支中删除了它们,并选择了一个错误的分支来保留该文件在devbranchdoes
git log中是新的--pretty=oneline--stat--all path/to/missing/files
是否提供了有趣的输出?另外,您确定要“git添加和git提交”它们吗?如果您签出到dev分支,文件是否还会在那里?是的,当我签出dev分支时,所有文件都在那里。因此,提交应该是正确的。git show HEAD--stat是否将这些文件显示为已删除?隐藏中没有任何内容。这个文件在dev分支中提交了几个星期,我已经阅读了这本书的整个部分。但是没有成功。我切换到master,调用merge命令,发现缺少一些文件。只要不是所有的文件都存在,我就不会提交(这对我来说似乎是正确的)。我也经历过类似的事情。怎么可能呢?您是否想发布另一个问题,并提供详细信息供其他人查看?此方法包含解决此问题所需的命令语法。
git checkout mydevbranch
# following command to find the previous state easier if you are not familiar with reflog
git branch tmp-checkpoint 
git rebase master