2012-09-30 42 views
39

我有一个从GitHub分叉的存储库,它有一些修改。但是,在某个提交中,我想更改一些文件以提交请求,并将其他修改后的文件留在请求之外。只对某些文件/提交的请求

做拉请求合并全部提交,还是我需要做一些特殊的事情来隔离此提交?

+1

这可能是相关的:[git-cherry-pick-only only changes to某些文件?](http://stackoverflow.com/q/5717026) – jww

+2

@jww多年后,'git cherry-pick'成了绝对是无价的。应该比我早得多。 – Qix

回答

28

上拉请求而作出整体的提交,你需要拆分这次提交到含有变化就摆在拉要求两个独立提交一个,和另一保持的其他变化。要做到这一点,您需要git rebase -i,例如参见How can I split up a Git commit buried in history?以获得有关如何操作的良好解释。

一旦你分离了提交,将你想要包含的提交到主题分支中,例如参见How to move certain commits to another branch in git?,但它取决于提交请求的提交是否是顺序的。

然后最后你可以推送到Github并从你的主题分支创建拉请求。

+3

有关记录,'git cherry-pick'是非常宝贵的工具。 – Qix

+3

我看到这是被接受的答案;但确切地说,哪里是执行步骤,以便可以在修改多个文件的拉取请求中更改一个文件? – jww

+0

当你是合并请求的人而没有提出请求时会发生什么?这个工具太蹩脚了...... – jww

11

拉取请求合并分支。所以,如果你想为拉取请求分离出一些东西,最好的办法是将这些改变放在一个单独的分支中。

优点是,您可以通过推送对该分支的新更改(甚至在您需要更改已提交的提交时推送-f)来更改拉取请求。