首页 > 解决方案 > Github UI 合并的 3 种类型的细分

问题描述

我一直在使用 Github UI 来合并 PR(拉取请求),UI 看起来像:

在此处输入图像描述

我试图更仔细地了解这三件事是如何工作的。这是我对这三个选项的最佳猜测:

  1. 创建合并提交
git merge <base> <other>
  1. 挤压和合并
git merge --squash <base> <other>
  1. 变基和合并
git rebase <base> <other>

这是准确的吗?还是我错过了什么?

标签: gitgithubgit-mergepull-request

解决方案


在 git 中的 Merge pull request 中有一个较长版本的这个答案导致上游分支先于原点,但这里是速记等价物。所有人都假设您一开始就在基本分支上,即. 下面的消息是并且是根据拉取请求自动计算的。git checkout branchMerge pull request #number from repositoryhash

  1. 创建合并提交

    git merge --no-ff -m message hash

  2. 挤压和合并

    git merge --no-commit --squash hash && git commit -m message

  3. 变基和合并

    git rebase --force-rebase hash

(请注意,如果发生合并冲突,rebase-and-merge 将不起作用。我不清楚 GitHub 系统是否会检查是否有--merge它,或者完全以其他方式检查。拉取请求已经检查了合并冲突with git mergeor without --squash;总是存在,但只有在没有这样的冲突时才存在,我认为。他们——GitHub——还跟踪用于创建拉取请求的“基本分支”是否是最新的,但是目前还不清楚他们是如何做到这一点的。)refs/pull/head/numberrefs/pull/merge/number


推荐阅读