已经打开的新拉取请求
New pull request when one is already opened
我已经创建了从我的分支分支项目的拉取请求。 Repo 所有者将在代码审查后接受它,但它可以等待一段时间,因为他目前很忙。我不想等待,在我的 fork 中的全新分支上,我实现了下一个功能。
如果我现在创建新的拉取请求,它会与之前的合并并创建一个巨大的拉取请求吗?或者会有两个单独的PR?我担心它会合并,因为在 GH 的提交字段中我看到了以前 PR 的提交。
您可以一个接一个地开发功能,没问题。唯一就是要操作的时候稍微费点功夫。所以...一旦您的第一个功能合并到 master 中(假设您不必将它从现在的位置移动),您就可以非常轻松地对 feature2 进行变基:
git checkout feature2
git rebase master
之所以可行,是因为启动 feature2 的修订版本已经合并到 master 中。
如果要求您重新设置 feature1 的基线,它可能会变得有点棘手...那么您需要执行以下操作:
git branch temp feature1 # save current position of feature1, will need it later
git checkout feature1
git rebase feature1
# now... in order to rebase feature2, you have to make sure _not_ to rebase the revisions you have already rebased of feature1
git rebase --onto feature1 temp feature2 # rebase feature2 onto feature1, do _not_ rebase the revisions of the old feature1
git branch -D temp # delete temp branch
希望对您有所帮助
找出以下内容
___ you created a new branch, call it "branch-01"
/
master branch __/_______________________
现在这取决于你如何从那里继续前进以及你想如何从那里继续前进,因为有 2 种不同的情况。
场景一:
您创建了一个 PR branch-01,其中包含一些提交,其中包含需要合并回 master 的所有工作。但需要审查,所以它就像搁置一样。
场景二:
您创建了一个 PR branch-01,其中包含一些包含一些工作的提交。现在您需要这些更改才能继续下一步的工作。所以你现在要做的是,如果你在 branch-01 上,你现在做 git checkout -b branch-01-next-steps
分支 branch-01-next-steps 将拥有 branch-01 之前的工作,因为你从那里创建了一个新分支。所以这个分支在 branch-01 之上,看起来像这样
______branch-01-next-steps______
/
____branch-01___/
/
master branch __/_______________________
也许这就是您想要和需要的。但也许你需要一个来自 master 的“全新”新分支。你首先要做的是 git checkout master
现在你在你本地的 master 分支上。从那里你可以做 git checkout -b next-steps
然后看起来像
__branch-01..(waiting) ___next-steps
/ /
master branch __/___________________________________/________
如果您需要在开始处理 next-steps 之前从 master 获取已在远程合并的更改,您必须先转到 master git checkout master
然后键入 git pull origin master
然后git checkout -b next-steps
现在 next-steps 将包含来自远程主机的最新更改。
您随时可以使用 git checkout branch-01
返回 branch-01
这只是两个单独的拉取请求。然后它们都需要被审查并合并到主分支中。
虽然如果您将第一个分支的更改包含在第二个分支中,那么可以使用这些更改审查第一个分支,但是如果合并两者,您最终可能会遇到诸如冲突之类的问题(如果您也是例如,对第二个分支的第一个分支中的代码进行更改)。
我过去有过类似的经历,我会做的是 cancel/decline 第一个拉取请求(您的回购所有者可能需要这样做)而不是合并它,而只是合并来自您最新的拉取请求,其中包含来自两者的更改。在我看来,这是最简单的事情。
我已经创建了从我的分支分支项目的拉取请求。 Repo 所有者将在代码审查后接受它,但它可以等待一段时间,因为他目前很忙。我不想等待,在我的 fork 中的全新分支上,我实现了下一个功能。
如果我现在创建新的拉取请求,它会与之前的合并并创建一个巨大的拉取请求吗?或者会有两个单独的PR?我担心它会合并,因为在 GH 的提交字段中我看到了以前 PR 的提交。
您可以一个接一个地开发功能,没问题。唯一就是要操作的时候稍微费点功夫。所以...一旦您的第一个功能合并到 master 中(假设您不必将它从现在的位置移动),您就可以非常轻松地对 feature2 进行变基:
git checkout feature2
git rebase master
之所以可行,是因为启动 feature2 的修订版本已经合并到 master 中。
如果要求您重新设置 feature1 的基线,它可能会变得有点棘手...那么您需要执行以下操作:
git branch temp feature1 # save current position of feature1, will need it later
git checkout feature1
git rebase feature1
# now... in order to rebase feature2, you have to make sure _not_ to rebase the revisions you have already rebased of feature1
git rebase --onto feature1 temp feature2 # rebase feature2 onto feature1, do _not_ rebase the revisions of the old feature1
git branch -D temp # delete temp branch
希望对您有所帮助
找出以下内容
___ you created a new branch, call it "branch-01"
/
master branch __/_______________________
现在这取决于你如何从那里继续前进以及你想如何从那里继续前进,因为有 2 种不同的情况。
场景一: 您创建了一个 PR branch-01,其中包含一些提交,其中包含需要合并回 master 的所有工作。但需要审查,所以它就像搁置一样。
场景二:
您创建了一个 PR branch-01,其中包含一些包含一些工作的提交。现在您需要这些更改才能继续下一步的工作。所以你现在要做的是,如果你在 branch-01 上,你现在做 git checkout -b branch-01-next-steps
分支 branch-01-next-steps 将拥有 branch-01 之前的工作,因为你从那里创建了一个新分支。所以这个分支在 branch-01 之上,看起来像这样
______branch-01-next-steps______
/
____branch-01___/
/
master branch __/_______________________
也许这就是您想要和需要的。但也许你需要一个来自 master 的“全新”新分支。你首先要做的是 git checkout master
现在你在你本地的 master 分支上。从那里你可以做 git checkout -b next-steps
然后看起来像
__branch-01..(waiting) ___next-steps
/ /
master branch __/___________________________________/________
如果您需要在开始处理 next-steps 之前从 master 获取已在远程合并的更改,您必须先转到 master git checkout master
然后键入 git pull origin master
然后git checkout -b next-steps
现在 next-steps 将包含来自远程主机的最新更改。
您随时可以使用 git checkout branch-01
这只是两个单独的拉取请求。然后它们都需要被审查并合并到主分支中。
虽然如果您将第一个分支的更改包含在第二个分支中,那么可以使用这些更改审查第一个分支,但是如果合并两者,您最终可能会遇到诸如冲突之类的问题(如果您也是例如,对第二个分支的第一个分支中的代码进行更改)。
我过去有过类似的经历,我会做的是 cancel/decline 第一个拉取请求(您的回购所有者可能需要这样做)而不是合并它,而只是合并来自您最新的拉取请求,其中包含来自两者的更改。在我看来,这是最简单的事情。