如果拉取请求仍处于待处理状态,我该如何继续工作 (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/foo2feature/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/foolocal 副本和 remote 副本 develop,这就是为什么它被指定为 origin/develop

What can I do differently?

一些可能适用于您的选项:

  1. 您可以跳过依赖于尚未合并到 develop 中的功能的功能,然后选择其他功能。
  2. 您可以采取行动更快地完成第一个 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,尽管您可能必须选择一个选项,例如“重新启动合并”或类似选项。