Git分支 - HEAD分支上的pull请求也需要先前的分支提交

时间:2018-05-02 22:19:22

标签: git github branch pull-request

我来自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的拉取请求怎么办?

1 个答案:

答案 0 :(得分:0)

我真的很惊讶它不是重复...... 结果是I already answered almost the same question。提交方式它是一个重复(即有一个分支有2个不必要的提交)。但是,问题以完全不同的方式陈述(例如,另一个问题没有提到拉请求),如果不是我的答案那么我就找不到它。

使用git rebase --onto

在您的本地存储库中:

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包含不必要的提交。