2012-09-30 50 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)來更改拉取請求。