我在分支 B。经过一堆提交后,分支 A 准备好/需要一些文件,但很多文件还没有准备好/不需要。我只想合并这些文件,保留正确的 git 历史记录。后来,当我真正合并时,我不希望对这些更改的起源有任何误导性的线索——它们应该正确引用它们来自的提交,即使作为这些提交的一部分的其他文件中的更改没有被合并(但)。我想这意味着将提交分为与这些文件无关的部分。
当我后来想将 B 合并到 A 但 B 的一些更改已经存在时,所有为此提出的解决方案最终都会丢失这些更改的历史并导致一个大问题。我想要一个避免这种情况的解决方案。
在 tortoise 中,我可以查看单个文件的日志并选择一些较旧的版本来恢复。因此,原则上,我可以从 B 创建一个新分支 C,并将我不想合并的所有文件恢复到 B 从 A 分支时的点。然后我可以将 C 合并到 A。这似乎是正确的跟踪 git 历史并让我将 B 合并到 A 中,而不会惊讶于 B 的一些更改已经存在。
但是当我只想合并2个文件时,手动识别和还原20个文件很痛苦。为什么这不是一个常见的一步操作?tortoise 的 revert 是如何工作的——因为它可以对单个文件进行操作,所以它必须是 sub-commit,这是我正在寻找的基本功能。它是否抛弃了我从较新的修订版到较旧的修订版的事实,并使它看起来像我只是进行了一些手动更改,然后与最终将 B 合并回 A 相冲突?