如果拉取请求仍处于待处理状态,我该如何继续工作 (Gitflow)?
If a pull request is still pending, how do I continue working (Gitflow)?
所以我们正在使用 GitFlow 工作模式。
我有一个名为 feature/foo
的分支,我刚在那里完成我的票并创建了一个合并请求,该分支 (feature/foo
) 将与我们的总分支 [=12] 合并=]
所以现在,我需要继续处理其他功能,但我需要刚刚在 feature/foo
中完成的工作,所以我从 develop
创建了一个新分支
git co -b feature/foo2
并合并上一个分支的更改我在以下分支上进行了更改:
git merge feature/foo
现在我在那里进行更改,但是当我尝试创建 feature/foo2
的合并请求时,上一个分支的所有提交和文件也出现了。
解决这个问题的最佳方法是什么?我可以做些什么不同的事情?
创建 PR 时,您可以指定一个 base 分支,PR 将被合并到该分支。
如果您将基本分支指定为 feature/foo
,将显示的差异将是 feature/foo2
和 feature/foo
之间的差异。
What is the best way to approach this?
如果是我,我会离开它继续前进。一旦第一个 PR 完成并且 feature/foo
被合并到 develop
,您的第二个 PR 应该能够更新,这样来自前一个 PR 的更改将消失1。 但是,如果您的 PR 有变基或压缩合并策略,并且第一个分支是 re-written,即使 更改将脱离 PR,提交不会。如果你不想在第二个 PR 中看到这些提交,在第一个完成后你可以做一个 feature/foo2
的“花式”rebase 来更新它:
git fetch
git rebase feature/foo feature/foo2 --onto origin/develop
git push --force-with-lease
请注意,在上述命令中,您要使用 feature/foo
的 local 副本和 remote 副本 develop
,这就是为什么它被指定为 origin/develop
。
What can I do differently?
一些可能适用于您的选项:
- 您可以跳过依赖于尚未合并到
develop
中的功能的功能,然后选择其他功能。
- 您可以采取行动更快地完成第一个 PR。 (也许尝试与审阅者会面并立即对其进行审阅和完成。)
旁注: 当您必须开始处理依赖于尚未完成的另一个分支的功能时 develop
,假设另一个分支是最新的(特别是如果您使用变基工作流),那么您可以从前一个分支分支出来,而不是您介绍的多命令方法。 而不是:
git switch -c feature/foo2 origin/develop
git merge feature/foo
你可以简单地做:
git switch -c feature/foo2 feature/foo
1这取决于实现,但是许多PR工具会在source分支发生变化时自动更新PR,并且还提供了一种机制用于在 target 分支更改时更新 PR,尽管您可能必须选择一个选项,例如“重新启动合并”或类似选项。
所以我们正在使用 GitFlow 工作模式。
我有一个名为 feature/foo
的分支,我刚在那里完成我的票并创建了一个合并请求,该分支 (feature/foo
) 将与我们的总分支 [=12] 合并=]
所以现在,我需要继续处理其他功能,但我需要刚刚在 feature/foo
中完成的工作,所以我从 develop
git co -b feature/foo2
并合并上一个分支的更改我在以下分支上进行了更改:
git merge feature/foo
现在我在那里进行更改,但是当我尝试创建 feature/foo2
的合并请求时,上一个分支的所有提交和文件也出现了。
解决这个问题的最佳方法是什么?我可以做些什么不同的事情?
创建 PR 时,您可以指定一个 base 分支,PR 将被合并到该分支。
如果您将基本分支指定为 feature/foo
,将显示的差异将是 feature/foo2
和 feature/foo
之间的差异。
What is the best way to approach this?
如果是我,我会离开它继续前进。一旦第一个 PR 完成并且 feature/foo
被合并到 develop
,您的第二个 PR 应该能够更新,这样来自前一个 PR 的更改将消失1。 但是,如果您的 PR 有变基或压缩合并策略,并且第一个分支是 re-written,即使 更改将脱离 PR,提交不会。如果你不想在第二个 PR 中看到这些提交,在第一个完成后你可以做一个 feature/foo2
的“花式”rebase 来更新它:
git fetch
git rebase feature/foo feature/foo2 --onto origin/develop
git push --force-with-lease
请注意,在上述命令中,您要使用 feature/foo
的 local 副本和 remote 副本 develop
,这就是为什么它被指定为 origin/develop
。
What can I do differently?
一些可能适用于您的选项:
- 您可以跳过依赖于尚未合并到
develop
中的功能的功能,然后选择其他功能。 - 您可以采取行动更快地完成第一个 PR。 (也许尝试与审阅者会面并立即对其进行审阅和完成。)
旁注: 当您必须开始处理依赖于尚未完成的另一个分支的功能时 develop
,假设另一个分支是最新的(特别是如果您使用变基工作流),那么您可以从前一个分支分支出来,而不是您介绍的多命令方法。 而不是:
git switch -c feature/foo2 origin/develop
git merge feature/foo
你可以简单地做:
git switch -c feature/foo2 feature/foo
1这取决于实现,但是许多PR工具会在source分支发生变化时自动更新PR,并且还提供了一种机制用于在 target 分支更改时更新 PR,尽管您可能必须选择一个选项,例如“重新启动合并”或类似选项。