git - 合并时文件在 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 都试过了,可以看到相同的行为。您能否建议我如何处理这种情况而不会删除文件或丢失更改。
解决方案
当您合并两个分支时,Git 会查看三个点来考虑要合并的内容:两个头,以及称为合并基的第三个位置,这通常是分支分叉的点。它在合并结果中产生的所有内容都是合并基础和每个头之间的变化的总和。换句话说,如果您在一侧而不是另一侧进行更改,则生成的合并将包含更改。
在您的情况下,在一个分支中您删除了文件,而在另一个分支中您没有对这些文件执行任何操作。由于删除文件算作更改,因此将其合并到结果中。
如果您不想删除这些文件,请调整分支 A 使其不会删除它们,然后进行合并。这是解决问题的最佳和最简单的方法。
或者,您可以执行所谓的邪恶合并,这是一种您篡改 Git 通常会产生的结果的合并。如果您想这样做,请照常执行合并,然后运行git checkout B -- file1 file2 file3 file4 file5
,其中文件是已删除的路径。然后运行git commit --amend
以将更改压缩到合并提交中。
推荐阅读
- c++ - 如何从头到尾读取文本文件。C++
- typescript - 组织导入将导出放在单行上
- redirect - 从表单中获取字符串后,如何将字符串插入动态搜索 url?
- python - 从 Python 中的 json 文件中删除密钥(获取 TypeError)
- python - 我想要一个函数永远运行,但我不希望它重复
- python - 使用 Levenshtein 距离对 sqlalchemy 中的搜索查询进行排序?
- c - 重定向系统调用,如 fopen/open/等。在 macOS/达尔文
- c++ - “使用字符串”的 MSDN 文档不是最新的吗?
- sas - Sas 过滤器宏
- excel - 没有符号的 Excel 百分比