我来自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
的拉取请求怎么办?
答案 0 :(得分:0)
我真的很惊讶它不是重复...... 结果是I already answered almost the same question。提交方式它是一个重复(即有一个分支有2个不必要的提交)。但是,问题以完全不同的方式陈述(例如,另一个问题没有提到拉请求),如果不是我的答案那么我就找不到它。
在您的本地存储库中:
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
的点处逐个复制它们。如果某些提交无法自动应用,则该过程将暂停,您必须手动解决冲突。
警告:do not force-push unless you are sure it's safe。如果您推送到自己的fork存储库并且可以假设没有其他人使用它,那么您可能没问题(即使它在技术上是公开的)。这是你的私人分支,有时可能足够意味着它很好。但了解与删除历史相关的风险(或尝试)非常重要。
替代品(樱桃挑选):my answer to the other question详述了一些替代品。那里的情况基本相同,分支F1包含不必要的提交。