Git 和分支机构的管理 rebase

Git and management rebase of branches

我从 [dev-project2] 分支创建了一个新分支 (pj2/new-register-feature),并向 [dev-project2] 分支创建了拉取请求。 (拉取请求 1)。

然后让我们继续将 [dev-project2] 变基到 [dev-project1] 并在变基后强制 [dev-project2] 分支。

但是当我如上所述查看 [pull request 1] 时,在将 [dev-project2] 重新设置为 [dev-project1] 分支后,[pull request 1] 发生了很多提交。

那么,你能帮我解释一下吗,以及如何更新 [pull request 1] 以仅查看创建 pull request

的 [pj2/new-registry-feature] 的提交

我会尝试用图片来解释它。

将 project2 变基到 project1 后,您更改了 project2 中的所有提交(至少是它们的哈希值),因为变基将它们放在 project1 中的提交之后。 在这种情况下,您的 project2 提交和 new-register-feature 提交完全不同,您会看到所有这些提交。

阅读 https://git-scm.com/book/en/v2/Git-Branching-Rebasing 以获得更多数据,它们解释了变基时会发生什么。

这是我对你的问题的理解(如果我遗漏了什么,请告诉我):

您从 :

开始
--A--B--C--D--E--F--G--H <- dev-project1
      \
       \-c--d--e--f--g <- dev-project2
                \
                 \-p--q--r <- pj2/new-register-feature

并创建了一个拉取请求以将 pj2/new-register-feature 合并到 dev-project2

然后你将 dev-project2 变基到 dev-project1

变基完成后,图表现在看起来像:

--A--B--C--D--E--F--G--H <- dev-project1
      \                 \
       \-c--d--e-[f]-[g] \-c'--d'--e'--f'--g' <- dev-project2
                \
                 \-p--q--r <- pj2/new-register-feature

您在合并请求中观察到的是:

  • 而不是将 : p--q--r 视为您分支机构的历史记录 (wrt dev-project2),
  • 你现在看到了c--d--e--p--q--r

如果你想恢复更接近初始图的东西,你需要在 e' 之上重新设置 pj2/new-register-feature (即:[= 之间的原始分叉点的重新设置版本) 12=] 和 dev-project2).