Git 在最终合并之前将 master 预合并到我的功能分支是否安全?

Is it safe in Git to pre-merge master into my feature branch before final merge?

在本地开发功能分支时,发现该功能需要进行大量更改。为了最大程度地减少合并时的工作量和压力,我想到了先将本地master合并到我的分支中,解决所有冲突,然后将我的功能合并到master中——这应该是一个快速、简单的合并。

此合并是否存在丢失某人更改的风险?你推荐另一种方法吗?

这种方法是完全可以接受的(出于与您提到的相同原因,我自己也使用过几次)。当然,当您解决冲突时,您必须注意保留哪些更改。如果您在这里犯了一些错误,那么其他开发者所做的更改可能会丢失(但它们始终保留在历史记录中,因此您可以轻松识别和恢复该更改)。

我通常会在 master 之上重新设置功能基础,这使得需要合并它们的人更容易。但是,无论您朝哪个方向执行 - 即使没有合并冲突,您仍然需要对其进行测试。你永远不能认为它是安全的。

只有当功能分支不会要合并到 master 时,我才会这样做。我建议定期将上游合并到功能分支中,以最大程度地减少开发期间和之后合并所需的工作。但是,如果您向后合并,则以一种方式合并然后立即以另一种方式合并是没有意义的。简单地合并到 master 让你的意图更明确。

我将上游合并到功能分支的另一个原因是,有时,例如,在将另一个功能合并到上游之后,分支是如此分歧以至于我需要在合并后至少进行一次提交才能使一切重新开始。这是功能分支上应该做的事情。

因为所有这些操作都快速且便宜,所以我通常会尝试合并到 master 中,如果我发现这只是比预期的工作更多,我就会中止并以相反的方式进行合并。

哦,关于丢失的东西:你永远不会丢失任何东西,除非你自己删除它。 Git 不会丢弃任何更改,除非您告诉它(在合并期间删除内容、使用非默认合并策略等)。