Git - 使用 rebase 将 public 分支合并到 master

Git - using rebase to merge public branch to master

我们目前有 3 名开发人员在一个功能分支上工作。我们不断地提交和推送 WIP 提交到 feature_branch(和 origin/feature_branch),每隔一天我们将 master 合并到 feature_branch 以确保我们与所有其他的都是最新的正在发生的变化。

我们的 feature_branch 现在包含大约 100 个提交(包括大量合并提交),可以轻松地将其压缩为一个或两个提交。 到目前为止,当在功能分支上完成工作时,我们只是将其合并回 master,这导致意大利面条日志和检查点提交被推送到 master。

相反,我们想要变基。 如果我们决定我们在 feature_branch 上的工作已经完成,并且没有开发人员将永远拉取或推送新的提交 from/to 这个分支 - 并且是时候将我们的更改合并回 master,将违反 rebase the golden rule of rebasing?
在阅读了该主题之后,在 master 之上重新设置交互听起来是个好主意(然后合并回 master 这将是一个 ff 合并)但我只是想确保我没有遗漏任何东西。

此外,在我们不断将 master 合并到 feature_branch 之后(为了保持更新),rebase 有什么问题吗?压缩合并提交可以吗?

谢谢!

实际上这取决于你通常的工作流程,我不认为变基总是错误的。

例如,如果您使用基于 Garrit 的工作流程,通常会与主服务器一起变基,将您的提交压缩为一次提交,然后将其推送到主服务器中以进行合并。 (基本上你提供了一个补丁来掌握一个包含你的代码的补丁,因为你的 rebase 操作已经部分合并了)。 Here 您可以找到有关此一直使用变基的工作流程的更详细说明。

rebase 与 merge 的选择在某种程度上是一个品味问题。您拥有的 link(用 "golden rule of rebasing" 表示避免对已发布的提交进行变基)使用了一种有品位的规则,使临时用户的操作变得简单。但是,没有任何内容表明您和您的同事不能事先同意 允许变基已发布的提交,只要您和他们都知道如何处理它们。

git 的 git 存储库中有几个故意重新设置分支,称为 nextpupu 代表 Pick Up,不是臭鼬味 :-) )。当你git fetch最新的git时,你会经常看到这样的东西:

 + 104e649...1352ede next       -> origin/next  (forced update)
 + cf10e94...a619c8c pu         -> origin/pu  (forced update)

请注意 forced updategit fetch 打印它是因为更新不是快进的,并且仅由于获取 refspec 中的 + 而发生。