为什么本地 git merge 与分支共享相同的提交历史记录,而远程拉取请求则不然?

问题描述 投票:0回答:1

TL;博士

我的问题是:如何让我的本地 git 合并行为类似于我从 GitHub 中的分支返回到主干的拉取请求时的工作方式,即显示分支提交历史记录而不是类似 rebase 的历史记录? 据我所知,我没有将其设置为自动使用 rebase 执行任何操作 - 请参阅下面的详细信息。


场景如下:

  1. main
    树枝很干净。
  2. 我表演
    git checkout -b test-branch
  3. 我对 README.md 进行了更改;签入,将分支发布到原点。
  4. 对 README.md 的另一处更改;报到;再重复两次(总共 3 次本地提交),推送到原点。这是 git 图表显示的内容:

  5. 切换到主程序;从 VS code 菜单合并测试分支:



    然后推送到原点。这是 git 图表现在显示的内容:



    结果看起来像一行提交就好像它做了变基(我不想要)
  6. 现在我重复步骤 1 到 4 创建一个新分支
    test-branch1
    。这是 git 图表显示的内容:

  7. 现在,我不再在本地合并分支,而是从 GitHub 中的分支执行拉取请求:

  8. 在本地,我切换到主目录并从远程拉取。这是 git 图表现在显示的内容:



    现在看起来不像发生了变基,而是具有单独的历史记录。

我的用户 gitconfig 只有我的姓名和电子邮件地址,这是我的存储库 git 配置的样子(即据我所知没有变基设置):

所以,我的问题是如何让本地合并行为类似于我从分支向 GitHub 中的主分支发出拉取请求时的工作方式,即维护与分支的单独提交历史记录?

git visual-studio-code github git-merge git-rebase
1个回答
0
投票
Git 中的

--no-ff
标志可防止执行“快进”合并,它将导致您想要的结果。

git merge <branch-name> --no-ff

© www.soinside.com 2019 - 2024. All rights reserved.