我来自 IBM RTC,所以我需要习惯 Git。
我已经分叉了一个存储库,在我的主分支上完成了几次提交并打开了一个拉取请求。
Pull request:
original-repository/master <- my-repository/master
commit-1
commit-2
然后我创建了一个新分支并推送了更改。我从新分支开始打开了另一个拉取请求,这就是我发现的。
Pull request:
original-repository/master <- my-repository/newbranch
commit-1
commit-2
commit-3
如果我只想发出拉取请求怎么办commit-3
?
我真的很惊讶它不是重复的......罢工>事实证明我已经回答了几乎同样的问题 https://stackoverflow.com/a/29029946/2468549%5D。就提交而言,它是重复的(即有一个分支有 2 个不必要的提交)。然而,问题以完全不同的方式陈述(例如,另一个问题没有提到拉取请求),如果不是我的答案,我就不会找到它。
Use git rebase --onto https://git-scm.com/docs/git-rebase.
在您的本地存储库中:
git checkout newbranch
git rebase master --onto origin/master
git push origin +newbranch # May look slightly different for you; The point is, you need to force push (the + does that).
注意,在第二行中,master
可以替换为HEAD~
或其他参考commit-2
.
简短说明: git 在指向它的提交之间进行提交(在本例中master
)和当前提交,并在定义的点将它们一一复制--onto
。如果某些提交无法自动应用,则该过程将暂停,您必须手动解决冲突。
Caveat: 除非您确定安全,否则请勿强行推动 https://stackoverflow.com/a/16702355/2468549。如果您推送到自己的分叉存储库并且可以假设没有其他人使用它,那么您可能没问题(即使它在技术上是公开的)。这是您的私人分支机构,有时可能足以意味着一切都很好。但重要的是要了解与删除历史记录(或试图).
替代方案(择优选择):我对另一个问题的回答 https://stackoverflow.com/questions/29029602/git-change-origin-commit-of-a-branch/29029946#29029946详细说明了一些替代方案。情况基本相同,分支 F1 包含不必要的提交。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)