在开源项目上工作时,我遇到了以下git问题。我做了一些改变,并发送了拉请求。公关首先被接受。但是,我的更改发现有一些微妙的错误,维护者再次提交了我的提交,并要求我在解决问题后发送新的请求。但是,之间发生了很多其他提交,所以我需要更新我的请求。不幸的是,我不能让git在最近的状态master
之上重新绑定或挑选旧的PR。git rebase after git恢复
让我用一个例子来说明事情。说,我原来的拉动请求已提交A
和B
并被接受。然后,几次提交后我的公关被还原(R
),然后再发生几次提交。历史是这样的:
...--A---B--...--R--...--o master
现在,我想将它转化为以下形式,以精益求精最近的master
状态的顶我拉请求:
...--A---B--...--R--...--o master
\
A---B newPR
但是,我无法通过rebase
和cherry-pick
实现此目的。问题似乎是,git认为A
和B
已经是master
的一部分,因为它们已经在历史中了。因此,它不会将这些更改应用于master
之上。
我该如何强制git来做到这一点?
你究竟是什么意思*我未能实现这个*?你从Git得到一个特定的消息吗?另外,添加你使用的确切的'rebase'和'cherry-pick'命令。 – Jubobs 2014-08-31 17:50:01
@Jubobs *失败*表示“A”和“B”的更改不存在。就git而言,这不是一个错误。 rebase命令是'git rebase - master masterPR B',其中'beforePR'是'A'之前的最后一次提交。这直接来自'git rebase'手册页。樱桃采摘是'git cherry-pick A..B'。 – Lemming 2014-08-31 18:09:51
有人在这里评论,只是*恢复恢复*。这实际上工作得很好。不幸的是,我不记得用户名,但是如果那个人会将其作为答案发布,并且没有什么奇妙的更好的话,那么我会很乐意接受它。 – Lemming 2014-08-31 18:23:13