在其他人之后发送一个提交的拉取请求

时间:2014-09-17 22:13:12

标签: git github

我正在进行大规模的代码更改,并在我的存储库的分支上做了大量的提交。

在我工作的中间,我改进了一些与此更改无关的代码,并且我想立即提交拉取请求。

目前我的fork的树看起来像这样(为简单起见,使用字母代替commit id)

fork/master:
A ->  B -> C -> D -> E

upstream/master:
A

选择更改C并提交拉取请求的最简单方法是什么?

我尝试从我的叉子上的A分支,然后樱桃挑选C,但它也带来B变化。

我知道git将C视为A-B-C的路径而不是单个变更集...我的问题是你如何按下一个新的分支来回购一个具有C变化的拉取请求?目标是"提交拉取请求,从哪个新分支到上游/主人只有C更改并不重要"

然后我天真地尝试:

git checkout fork/master   
git diff A..C file_i_care_that_was_only_changed_on_C > patch
git checkout A
git checkout -b temp_for_pull
git apply < patch
# lots of errors. changes do not get applied.

想法?

1 个答案:

答案 0 :(得分:0)

(请参阅上面的AndrewC评论,了解具有交互式rebase的解决方案。)

我必须经常这样做,所以我总是在重新审视这个...我的最新解决方案是使用

(为简单起见,再次使用字母而不是commitID)

git format-patch B...C [optional file list]

这将生成文件0001_C_commit_message.patch

然后,在A

的新分支上

git am 0001-b_to_c_changes.patch

现在,提交,推送,创建拉取请求。