最佳实践问题。我从功能分支(功能-A)打开了一个新分支(功能-B)。在我完成新分支的工作后,我提交并推送了我的更改 (--set-upstream) 然后我设置了 PR。
我们使用 Bitbucket。我在 Bitbucket UI 中看到,我的 PullRequest 中有来自 Branch 功能 A 的提交。
从我的 PR 中删除来自功能 A 的提交的最佳/最优雅的方法是什么?我是否必须删除它,因为我也可以等到另一个 PR(来自 feature-A)被记住。
答案 0 :(得分:0)
如果您对 B
进行了很小的更改,那么只需从正确的源分支创建一个新分支,然后进行更改即可。
如果您在 B
中进行了大量更改,您可以在您的分支中从 feature-A
恢复更改,但是 feature-A
只会将其放回原处。
如果 feature-A
有很多变化,而 B
有很多变化,从主源分支创建一个新分支 feature-C
(例如 develop
) 然后 cherry pick 您从 feature-B
更改为 C
。这应该会为您提供一组“干净的”您自己的更改,这些更改可以合并到 develop
,而无需源自 feature-A
的更改。
答案 1 :(得分:0)
删除特性一个分支不会有什么不同。让我们看看这里发生了什么。请考虑下图。
master
|
C1 <- C2 <- C3 featureA
\ |
C4 <- C5
\
C6 <- C7
|
featureB
让我们首先就git中的分支是什么达成共识。 git 中的分支是对提交的引用。分支不是提交链。因此,从上图中,master
是对提交 C3
的引用。我们不说 C6
和 C7
是分支 featureB
。我们说 featureB
引用 C7
。
如果可以从分支提交访问,则称该提交属于一个分支。 C6
是可访问的(如箭头所示)。在 git 中,每个提交都指向前一个,称为父提交。因此,C2
是 C3
的父级。例外情况是:没有任何父项的初始提交 C1
和具有两个父项的合并提交。
现在,回到最初的问题,当您针对 featureB
(或集成分支)创建 master
的 PR 时,git 会看到 master
和 {{1} 之间的变化} 包括提交 featureB
到,包括 C4
。如果你删除一个分支,你只是删除对提交的引用,你不会删除提交。让我们看看删除分支后 repo 的样子:
C7
如您所见,该分支只是一个指向提交的指针,被删除了。因此,git 仍然会看到 master
|
C1 <- C2 <- C3
\
C4 <- C5
\
C6 <- C7
|
featureB
和 master
之间的更改涉及提交 featureB
到,包括 C4
。
这回答了您的问题,即为什么您会看到来自 C7
的提交以及为什么删除 featureA
无济于事。