看板 Soft_Job 關於我們 聯絡資訊
公司的一個案子,需要將程式的一部份外包給其他公司處理。 但是程式中有一些較機密的部分,不希望外流出去,所以會需要先把這些部分拿掉。 假設原程式中節點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