【问题标题】:How to stop Git from making extra merge commits when team members make commits当团队成员提交时如何阻止 Git 进行额外的合并提交
【发布时间】:2021-06-29 10:53:37
【问题描述】:

我有一班学生,我们都在一个存储库中工作,并不断检查小的状态更新和代码等。

我们注意到,除了我们所做的提交之外,Git 似乎还创建了合并并将它们签入,请参见屏幕截图。

这些提交充满了来自其他团队成员的更改,因此只会让我们混淆我们的 git 历史。

这些自动提交是什么?有什么方法可以将 Git 配置为不进行这些提交?

【问题讨论】:

  • 听起来你正在与no-ff 合并,或者merge.ff 在配置中为假。看起来您正在使用某种围绕 git 的 UI 包装器,因此您需要检查其文档以了解合并配置。
  • 但是根本没有人合并分支。我们只是更新每个目录中的文件,将它们作为提交推送到 GitHub 的 dev 分支,并从 GitHub 的 dev 分支中提取提交。我们只在 dev 分支中工作,因此不会创建分支或将它们合并回来。什么可能会创建这些“将 nnn 的分支 'dev'' 合并到 dev 中”条目?
  • 鉴于它是从 github 合并到 dev 的分支,也许有人正在做 git pull --no-ff 或将 pull.ff 配置为 false。

标签: git merge commit


【解决方案1】:

您的评论解释了为什么会这样:

我们只是简单地更新每个目录中的文件,将它们作为提交推送到 GitHub 的 dev 分支,并从 GitHub 的 dev 分支中提取提交

导致合并提交的是 pull。大概你们都在检查dev 分支,进行提交,并在某个时候提取最新的。当您从分支的远程版本拉取提交时并且您在本地分支上也有新的提交,Git 中的默认设置将创建一个合并提交。

为避免这种情况,您有几个选择:

  1. 拉动时,使用git pull --rebase。这会将您的本地提交重新定位到最新版本的 dev,而不是创建合并提交。如果这是您决定采用的方式,您可以让所有人configure this to happen automatically
  2. 不要再拉了。如果您想更新dev 的本地副本,请先执行git fetch,然后执行git rebase origin/dev。结果与 #1 相同,但这让您更清楚地知道您正在这样做。
  3. 与 #2 类似,您可以开始使用单独的分支,而不是使用 dev 的每个人。在合并到dev 之前,先执行git fetch,然后执行git rebase origin/dev

3 号可能是最好的方法,但工作流程稍微复杂一些。但是,如果您想同时处理不同的事情,它可以启用任务切换。

【讨论】:

    【解决方案2】:

    尝试使用git pull -r 将您的提交重新设置在最新的源/主节点之上,而不是创建合并提交。尽管要与您的队友创建适当的工作流程,您应该使用分支,但这是一种摆脱合并提交的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 2015-05-27
      • 2018-01-12
      相关资源
      最近更新 更多