作者Kenqr ( ̄▽ ̄)
看板Soft_Job
標題[請益] git orphan 如何合併回原分支
時間Tue Jul 28 10:53:13 2015
公司的一個案子,需要將程式的一部份外包給其他公司處理。
但是程式中有一些較機密的部分,不希望外流出去,所以會需要先把這些部分拿掉。
假設原程式中節點P有a0,b0,c0三個檔案,其中c檔案是機密。
移除機密檔案c0後,a0檔案需要做一些修改,才能正確執行,
所以新分支的節點Q剩下的是a1,b0兩個檔案。
為了不讓外包公司看到c檔案,所以新分支沒有歷史紀錄,
這部分我查到可以用git checkout --orphan處理。
將a1,b0交給外包公司處理後,假設修改後的節點R是a2,b1,
同時間,我們自己將檔案修改為節點S a3,b2,c1
這邊的問題是,外包公司處理過的節點R要怎麼合併回原本分支的節點S呢?
圖示如下:
P------>S
(->)Q->R
其中Q是由P分支出來的,但是沒有歷史紀錄。
而且P->Q的修改不希望合併回原分支,只要把Q->R的修改合併回去。
請問這有辦法靠git的指令做到嗎?假如要手動處理感覺會很頭大...
--
﹌ ﹌
﹌ 十
起初,他們捉◢
共產黨員 ,﹑ ,我不說話,因為我不是
共產黨員
後來,他們捉▕工會會員 ●
_<
█>
,﹑ ,我不說話,因為我沒有
參加工會
後來,他們捉▕天主教徒<█『
猶,﹑ ,我還是不說話,因為我
是新教徒
後來,他們捉▕ 猶太人 /\ 」」 =
天●=
工●=
共●,我不說話,因為我
是日耳曼人
ψQSWEET**◥ 最後, 等到他們來捉我時 ▏ ▏ ▏,已經沒有人能為我說話了...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.209.142
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1438051998.A.DA2.html
推 adsl99801: Interface or sdk? 07/28 11:55
推 snaketsai: 先把外包的commit依功能跟檔案拆成數個小commit,再git 07/28 12:06
→ snaketsai: rebase -i用squash跟edit接回來? 07/28 12:06
推 qrtt1: @adsl99801 +1 07/28 14:13
→ uranusjr: 直接 git cherry-pick 不就好了? 07/28 16:07
不太確定一樓的意思。是不是說只要能把程式解構得很好,
使得外包的部份和我們自己寫的部份,檔案完全沒有重疊。
等到外包的部份完成,把檔案丟回原分支覆蓋,
最多只會蓋到原本就給外包處理的檔案,所以直接commit即可。
rebase不太熟,這種情況也能處理嗎? 之後再來研究。
cherry-pick確實可行,應該會用這個方法。
雖然感覺不夠漂亮,但可能已經是這種情況的最佳解了。
感謝各位前輩指教!
※ 編輯: Kenqr (1.34.239.200), 07/28/2015 22:56:16