[請益] git orphan 如何合併回原分支

看板Soft_Job (軟體人)作者 ( ̄▽ ̄)時間10年前 (2015/07/28 10:53), 10年前編輯推噓3(302)
留言5則, 4人參與, 最新討論串1/1
公司的一個案子,需要將程式的一部份外包給其他公司處理。 但是程式中有一些較機密的部分,不希望外流出去,所以會需要先把這些部分拿掉。 假設原程式中節點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

07/28 11:55, , 1F
Interface or sdk?
07/28 11:55, 1F

07/28 12:06, , 2F
先把外包的commit依功能跟檔案拆成數個小commit,再git
07/28 12:06, 2F

07/28 12:06, , 3F
rebase -i用squash跟edit接回來?
07/28 12:06, 3F

07/28 14:13, , 4F
@adsl99801 +1
07/28 14:13, 4F

07/28 16:07, , 5F
直接 git cherry-pick 不就好了?
07/28 16:07, 5F
不太確定一樓的意思。是不是說只要能把程式解構得很好, 使得外包的部份和我們自己寫的部份,檔案完全沒有重疊。 等到外包的部份完成,把檔案丟回原分支覆蓋, 最多只會蓋到原本就給外包處理的檔案,所以直接commit即可。 rebase不太熟,這種情況也能處理嗎? 之後再來研究。 cherry-pick確實可行,應該會用這個方法。 雖然感覺不夠漂亮,但可能已經是這種情況的最佳解了。 感謝各位前輩指教! ※ 編輯: Kenqr (1.34.239.200), 07/28/2015 22:56:16
文章代碼(AID): #1LjkwUsY (Soft_Job)
文章代碼(AID): #1LjkwUsY (Soft_Job)