2017-09-27 94 views
0

我有一個很大的代碼庫,我正在評估一個策略,將某些部分拆分成較小的存儲庫。使用git subtree split,我能夠分離出我想要的提交歷史記錄的目錄&似乎完好無損。如果我將一個子樹從我的主回購庫中分離出來並創建一個新的回購庫,那麼我的舊拉申請會發生什麼?

話雖這麼說,假設我用這種方法前進,會發生什麼我的老引入請求(其中包括從分離的目錄代碼)在Github上?

他們會仍然顯示舊的代碼引用或將改變只引用這仍然是在原來的代碼庫的代碼?

感謝您的幫助。

+0

pull請求的本質是一個存儲庫中的散列ID。你的散列ID和現有的存儲庫會發生什麼?這會告訴你關於你的pull請求會發生什麼的答案。 – torek

+0

拉請求只不過是一個分支。你甚至可以添加一行:'fetch = + refs/pull/*/head:refs/remotes/origin/pr/*'。試圖合併拉請求就像合併分支和通常的衝突解決方案一樣。 – o11c

回答

1

git subtree split新建的回購將只包含您在指定目錄進行更改的提交。

假設如下原混帳回購協議的文件結構:

Root 
|___ file1  
|___ file2 
|___ subfolder/ 
     |___ file3 
     |___ file4 

和原來的承諾歷史:

* 8cb09fb (HEAD -> master) Merge branch 'dev' into matser 
|\ 
| * e1e054c (dev) change file2 for fourth time merge 
* | 6e8ee57 change file3 for fourth time merge 
* | ebdfb0b Merge branch 'dev' into master 
|\ \ 
| |/ 
| * 5d93766 change file2 for thrid time merge 
* | b95668a change file1 for thrid time merge 
* | 09ca222 Merge branch 'dev' into matser 
|\ \ 
| |/ 
| * d3dc890 change file3 for second time merge 
* | 5818123 change file1 for second time merge 
* | cb39f04 Merge branch 'dev' into master 
|\ \ 
| |/ 
| * 4dc4aaa change file3 and file4 on dev branch 
* | fef775c change file3 and file4 on master branch 
|/ 
* d8d81e6 add subfolder and it’s files 
* 5446ea3 change file1 

如果使用git subtree splitsubfolder分割到一個新的混帳回購協議,那麼僅改變了subfolderfile3file4)的提交將顯示在新的回購提交歷史。如下面的新的回購提交歷史:

* 60a7f3e (master) change file3 for fourth time merge 
* 954b730 Merge branch 'dev' into master 
|\ 
| * b4b8d92 change file3 for second time merge 
* | 35f7754 Merge branch 'dev' into matser 
|\ \ 
| |/ 
| * fde1de3 change file3 and file4 on master branch 
* | d4795a8 change file3 and file4 on master branch 
|/ 
* cd367a2 add subfolder and it’s files 

正如你可以在原來的回購看到:

  • 對於第一次提交5446ea,它不僅改變了file1(出subfolder目錄),因此承諾將不會顯示在新的回購。
  • 對於提交5818123需要進行第二次合併,因爲它也只改file1,提交將不會在新的回購顯示。
  • 對於第三次合併提交(b95668a,5d93766ebdfb0b),所有這些都沒有更改subfolder,所以它們不會顯示在新的回購中。
  • 對於提交e1e054c,它只能在dev分行變更file2,所以不會在新的回購顯示。
  • 對於第四合並提交8cb09fb,它保持subfolderfile3file4)爲同一版本,它的第一個家長對master分支提交6e8ee57(更改子文件夾沒有),所以也承諾不會在新的回購顯示。
相關問題