从 GitHub 拉取请求的不同分支提交
Commits from different branch on GitHub Pull Request
我正在 GitHub 上使用我们公司应用程序的分支。我们有一个 develop 分支,我们正在从 develop 创建新的分支以在 like (like feature/new-feature
) 上工作,并在我们的工作完成后创建对原始 repo 的拉取请求。当然在创建 PR 之前做一个 rebase。
rebase 后,来自不同开发人员的一些提交(commitA 和 commitC)合并到我的分支。现在在我的 PR 中,这些提交也列为文件更改。与develop有冲突。
很快,
我的 PR 的提交列表是这样的:
commitA <---this commmit is different developers and shouldn't be listed here
commitB
commitC <---this commmit is different developers and shouldn't be listed here
...
如何从我的 PR 中删除这些提交?这些提交(commitA 和 commitC)也在开发分支上。
我的分支应该只有commit B,commitA和commitC属于开发分支,不是我的分支。
您可以在交互模式下执行 Git 变基,然后有选择地删除不需要的 A
和 C
提交。假设您想在变基期间查看最后 5 次提交,您可以执行以下操作:
git rebase -i HEAD~5
这将打开一个编辑器,其中包含一个如下所示的文件:
pick dl4mn23 commitA comment
pick 47kmeu6 commitB comment
pick k39fn39 commitC comment
pick lsw42fg commitD comment
pick mk837dc commitE comment
要删除 A
和 C
提交,您只需删除相应的行,剩下的就是:
pick 47kmeu6 commitB comment
pick lsw42fg commitD comment
pick mk837dc commitE comment
保存文件并退出编辑器,这应该会开始变基。您可能必须解决合并冲突。完成变基后,您可以使用 git log
.
验证您是否拥有所需的历史记录
作为另一个注意事项,由于您重写了该分支的历史记录,因此您将不得不通过以下方式强制将其推送到远程:
git push origin feature --force
我正在 GitHub 上使用我们公司应用程序的分支。我们有一个 develop 分支,我们正在从 develop 创建新的分支以在 like (like feature/new-feature
) 上工作,并在我们的工作完成后创建对原始 repo 的拉取请求。当然在创建 PR 之前做一个 rebase。
rebase 后,来自不同开发人员的一些提交(commitA 和 commitC)合并到我的分支。现在在我的 PR 中,这些提交也列为文件更改。与develop有冲突。
很快, 我的 PR 的提交列表是这样的:
commitA <---this commmit is different developers and shouldn't be listed here
commitB
commitC <---this commmit is different developers and shouldn't be listed here
...
如何从我的 PR 中删除这些提交?这些提交(commitA 和 commitC)也在开发分支上。
我的分支应该只有commit B,commitA和commitC属于开发分支,不是我的分支。
您可以在交互模式下执行 Git 变基,然后有选择地删除不需要的 A
和 C
提交。假设您想在变基期间查看最后 5 次提交,您可以执行以下操作:
git rebase -i HEAD~5
这将打开一个编辑器,其中包含一个如下所示的文件:
pick dl4mn23 commitA comment
pick 47kmeu6 commitB comment
pick k39fn39 commitC comment
pick lsw42fg commitD comment
pick mk837dc commitE comment
要删除 A
和 C
提交,您只需删除相应的行,剩下的就是:
pick 47kmeu6 commitB comment
pick lsw42fg commitD comment
pick mk837dc commitE comment
保存文件并退出编辑器,这应该会开始变基。您可能必须解决合并冲突。完成变基后,您可以使用 git log
.
作为另一个注意事项,由于您重写了该分支的历史记录,因此您将不得不通过以下方式强制将其推送到远程:
git push origin feature --force