首页 > 解决方案 > 合并时文件在 GIT 中被删除

问题描述

我在 GIT 分支 A 和分支 B 中有两个分支。分支 A 包含 10 个文件 分支 B 包含 15 个文件,其中 10 个文件在分支 A 中是常见的。

当我将分支 A 合并到分支 B 时,可以看到以下行为: 1. 额外的 5 个不常见的文件被删除。2. B 分支的常用文件中多余的行被删除。

当我将分支 B 合并到分支 A 时,可以看到以下行为: 1. 额外的 5 个文件没有添加到分支 A。

我在 GIT bash 和 Tortoise GIT 都试过了,可以看到相同的行为。您能否建议我如何处理这种情况而不会删除文件或丢失更改。

标签: gitgit-merge

解决方案


当您合并两个分支时,Git 会查看三个点来考虑要合并的内容:两个头,以及称为合并基的第三个位置,这通常是分支分叉的点。它在合并结果中产生的所有内容都是合并基础和每个头之间的变化的总和。换句话说,如果您在一侧而不是另一侧进行更改,则生成的合并将包含更改。

在您的情况下,在一个分支中您删除了文件,而在另一个分支中您没有对这些文件执行任何操作。由于删除文件算作更改,因此将其合并到结果中。

如果您不想删除这些文件,请调整分支 A 使其不会删除它们,然后进行合并。这是解决问题的最佳和最简单的方法。

或者,您可以执行所谓的邪恶合并,这是一种您篡改 Git 通常会产生的结果的合并。如果您想这样做,请照常执行合并,然后运行git checkout B -- file1 file2 file3 file4 file5,其中文件是已删除的路径。然后运行git commit --amend以将更改压缩到合并提交中。


推荐阅读