2017-09-27 53 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(更改子文件夹没有),所以也承诺不会在新的回购显示。
相关问题