Pull请求后重新绑定

Ram*_*ams 5 git github git-pull git-rebase pull-request

我有一个功能分支test.我做了我的更改并将更改提交到该分支.与此同时,我的master提示已被更改(假设它有更多来自其他开发人员的提交).

在将我的更改推送到我的远程分支之前,我做了一个git rebase然后推送我的更改并创建了一个Pull Request.

对于我的拉取请求,我需要修改一些注释.

修复后,我看到我的master分支已更新.(假设其他开发人员提交了更多提交).

在任何时候,合并mastertest分支的原因是:可能存在需要集成master中的更改并使用此功能分支测试应用程序的情况

在这种情况下,我有两个问题.

  1. 如何master在我的test分支中没有合并提交的情况下将新的更改合并/重新绑定到我的test分支上?这样我将同时拥有我之前的提交,这些提交是Pull Request的一部分,而新提交是Pull Request注释修复.

  2. 我该如何合并/变基mastertest,并添加新的承诺,我现有的一次提交,这样我会永远在我的PR一个承诺?

Sco*_*don 10

首先,确定您是否真的需要将新更改master集成到您的功能分支中。您可能可以忽略来自master. 如果它们与您在 中的更改不冲突test,那么这是最容易做的事情,并且维护者无论如何都可以合并您的 PR。

您可以通过查看 GitHub PR 页面轻松查看是否是这种情况。如果您收到“无法自动合并”消息,则必须使用以下解决方案之一。


在不合并的情况下包含上游更改的标准方法是再次变基:

git checkout test
git rebase master
Run Code Online (Sandbox Code Playgroud)

由于这会重写历史记录,因此您需要强制推送:

git push --force-with-lease
Run Code Online (Sandbox Code Playgroud)

您的 PR 将使用您的所有提交进行更新,并且现在将master在其历史记录中包含新的提交。

强制性警告:由于 rebase 会重写历史记录,因此对于在此分支上工作的任何其他人来说,这可能是危险的/具有破坏性的。确保您与正在合作的任何人清楚地传达您所做的事情。

如果你不想变基,你的其他选择是:

  • 合并mastertest,但您已声明不想这样做。
  • git cherry-pick上的任何新提交master。这具有在您的分支上复制这些提交的缺点。
  • 做一个壁球合并mastertest: git merge --squash master。这在效果上类似于cherry-pick,但只创建一个提交。