4

为了便于查看功能分支何时合并到 master,可以--no-ff在将其功能分支合并到 master 时使用 Git 的选项。

无需键入即可完成此操作的一种方法--no-ff是完全禁用快进合并到 master:

git config branch.master.mergeoptions --no-ff

但是,这很笨拙,因为当简单地将 master 中的上游更改合并到 master 的本地副本时,它也阻止了快进合并(为普通git pulls 创建合并提交。)

是否有某种方法可以配置 Git 以防止仅在将功能分支合并到 master 时才将快进合并到 master中,以便在git pull从 master 执行 s 时允许快进,但在合并功能分支时总是创建合并提交?还是明确地使用--no-ff唯一的方法来实现这一点?

4

1 回答 1

2

注意:不存在预合并挂钩。
2008年引入,当时被批评(因为控制最好在服务器上实现(使用更新挂钩)。
它正在重新引入(2012年9月

并且pre/post-commit 钩子不会在git merge.

所以:

  • 要么你在开发者推送的 git 服务器上放置一个更新钩子(但到那时他们可能意识到他们快进了一个特性分支可能为时已晚)
  • 或者您编写(并分发和维护......)一个git-merge包装器,它将在本地回购级别进行控制。

话虽如此,正如我在“使用拉时快进,拉时不使用FF ”中提到的,使用--no-ff有其优点,因为它不会破坏git bisectgit blame
因此,一个特性的开发人员可能想要重新组织他/她的特性提交(如果它们太多,则将它们压缩一点),然后在 master 分支中快速转发它们(而不是创建一个巨大的提交)。
有关更多信息,请参阅“了解 Git 工作流程”。

于 2012-10-11T05:44:36.663 回答