Git和管理层的分支机构

时间:2017-07-24 07:30:06

标签: git rebase

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

然后让我们继续动作rebase [dev-project2]到[dev-project1]并在rebase之后推送[dev-project2]分支。

但是当我按照上面的回复[pull request 1]时,在[dev-project2]重新定位到[dev-project1]分支后,[pull request 1]发生了大量的提交。

那么,你能帮我解释一下吗?如何更新[拉请求1]只看到创建拉请求的[pj2 / new-registry-feature]提交

2 个答案:

答案 0 :(得分:3)

以下是我理解您的问题的方法(如果我遗漏了某些内容,请告诉我):

您从:

开始
--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

随着rebase的完成,图表现在看起来像:

--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

如果您想要恢复更接近初始图表的内容,则需要在pj2/new-register-feature之上重新定位e'(即:{{1}之间原始分叉点的重新定义版本}和pj2/new-register-feature)。

答案 1 :(得分:0)

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

将project2重新绑定到project1之后,更改project2中的所有提交(至少是它们的哈希),因为rebase在project1中提交后将它们放入。 在这种情况下,您的project2提交和新注册功能提交完全不同,您可以看到所有这些提交。

阅读https://git-scm.com/book/en/v2/Git-Branching-Rebasing了解更多数据,他们会解释您在重新定位时会发生什么。