GitHub 究竟是如何压缩和合并的?

Wyc*_*yck 6 git github

假设我有两个分支:

  • master
  • feature-1

我想将 feature-1 压缩并合并到 master 中。我有一个拉取请求来执行此操作。

当我单击拉取请求上的绿色“挤压和合并”按钮时,GitHub 正在执行什么 git 命令?

是吗:

git checkout master
git merge feature-1 --squash --no-edit
Run Code Online (Sandbox Code Playgroud)

...或者是其他东西?

例如,如果我希望能够预测挤压和合并的结果是什么,或者预测是否会出现合并冲突,我想先在本地尝试一下。但我会做什么 git 命令呢?

tor*_*rek 5

GitHub 在这里没有直接使用 Git 的任何内置操作,但它确实获得了与您建议的等效内容。标有“挤压和合并”的绿色按钮与执行操作之间的主要区别git merge --squash在于,如果git merge --squash 成功,它还不会进行提交如果失败,它会将部分合并留在索引和工作树中。如果挤压失败,GitHub 按钮不会执行任何操作;如果挤压成功,则 GitHub 按钮会进行提交。