做一個簡單的抓取和合並導致了很多矛盾,其中沒有影響我想司機調試。如問題所示,我真的想限制我正在合併的那些提交給那些影響這個特定驅動程序的提交。
我找到了一種方法來做到這一點。關鍵是git cherry-pick命令。
首先添加上游回購作爲遠程,並獲取從它:
git remote add wireless-testing git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
git fetch wireless-testing
現在我有兩個遙控器,origin
(RPI的內核回購我原先克隆)和wireless-testing
,更上游回購,我想要從中改變。
下一頁檢查出你想從(在我的情況下,RPI RPI-3.17.y分支)開始,並掀起了新的本地分行根據它的起源的分支:現在
git checkout rpi-3.17.y
git checkout -b rtlfix
,以得到無線測試回購的提交,這是未來我的分支的名單,但只考慮犯下了影響特定的目錄樹:
git log wireless-testing/master ^HEAD -- drivers/net/wireless/rtlwifi
這意味着「顯示日誌提交的開始當先無線測試/主設備,當你到達當前局域網主管時停止牧場,只考慮目錄drivers/net/wireless/rtlwifi下的文件/目錄「。
已經證實,確實是你想要的清單,你可以繼續使用摘櫻桃命令應用它:
git rev-list --reverse wireless-testing/master ^HEAD -- drivers/net/wireless/rtlwifi | git cherry-pick --stdin
的第一個命令輸出以相反的順序提交的名單,他們是管道進入櫻桃挑選命令,然後應用給定的提交。
這種方法有一些注意事項。其中一個特別的情況是,如果您採取的任何提交都依賴於其他未提交的提交所做的更改,那麼最終將導致無法編譯和/或工作的軟件。然後您可能需要引入其他提交來解決這些問題。
謝謝!可以預見的是,拉時有很多衝突。有什麼辦法可以只提取影響工作副本中特定目錄的提交? – harmic 2014-10-27 11:47:48