我正在GitHub上使用我们公司的应用程序。我们有一个开发分支,我们正在创建新的分支,从开发到工作(如 like feature/new-feature
),并在我们的工作完成时创建对原始仓库的拉取请求。当然,在创建PR之前要做一个改变。
在rebase之后,来自不同开发人员的一些提交( commitA 和 commitC )合并到我的分支。现在在我的PR中,这些提交也列为文件更改。与发展有冲突。
很快, 我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)也在develop分支上。
我的分支应该只提交B,commitA和commitC属于develop分支,而不是我的分支。
答案 0 :(得分:4)
您可以在交互模式下执行Git rebase,然后有选择地删除您不想要的A
和C
次提交。假设您想在rebase期间查看最后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
保存文件并退出编辑器,编辑器应该开始重组。您可能必须解决合并冲突。完成rebase后,您可以使用git log
验证您是否拥有所需的历史记录。
正如另一个注释,由于你重写了这个分支的历史,你将不得不通过以下方式强制将它推送到远程:
git push origin feature --force