【问题标题】:Is it possible to force squashing commits before merge or not allow to merge if 'feature` branch has more than one commit?如果“功能”分支有多个提交,是否可以在合并之前强制压缩提交或不允许合并?
【发布时间】:2016-08-28 22:19:12
【问题描述】:

假设我有两个分支developfeature,而feature 分支在两个额外提交上领先。

我正在寻找某种跟随行为

$ git checkout develop
$ git merge feature
Error: make sure you squash all commits in `feature` branch before merging it

也许可以在 github 端进行配置?当develop 有来自feature 分支的几个提交时,让github 拒绝git push origin develop


为了让问题更清楚,我将提供一个示例。

// 1. working on a new feature
$ git checkout -b feature
$ git commit -m "foo"
$ git commit -m "bar"

// 2. merging to develop
// here I supposed to do `git rebase -i develop`
// but I forgot!!!!
$ git checkout develop
$ git merge feature

// 3. push to github
$ git push origin develop

我希望在步骤 2 或步骤 3 上收到一些警告,因为我忘记了压缩提交

【问题讨论】:

  • 这是给你自己的,还是给你仓库的其他贡献者的?
  • 我自己,但我想知道是否也可以全局设置。

标签: git github


【解决方案1】:

使用 git rebase -i 开发。然后你就可以压缩提交了。

【讨论】:

  • 我知道如何压缩提交,我在问天气是否可以强制压缩?
【解决方案2】:

我认为在 github 中执行此操作的正确方法是使用拉取请求并仅合并看起来正确的请求。我不知道 github 是否允许 pre-receive 钩子,但是一个独立的 git 会,对于其他人你可以试试 Gerrit。

您可以创建一个本地预推送挂钩,但由于它在提交者计算机上运行,​​因此避免它是微不足道的。

这为您提供了有关如何在合并之前进行本地检查的指导。

How would I write a pre-merge hook in Git?

【讨论】:

  • 是的,我们使用拉取请求。但我想确保提交者会压制提交。在特定情况下,我希望确保 I 不会将一些垃圾 (如wip 提交序列) 推送到远程develop。我去看看prepush钩子。
  • 是的,预推送会禁止它,但它不会阻止用户首先犯错误。
猜你喜欢
  • 2017-09-26
  • 2023-01-12
  • 1970-01-01
  • 2018-11-05
  • 2012-03-02
  • 1970-01-01
  • 1970-01-01
  • 2023-02-23
  • 2015-07-20
相关资源
最近更新 更多