從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 split
到subfolder
分割到一個新的混帳回購協議,那麼僅改變了subfolder
(file3
和file4
)的提交將顯示在新的回購提交歷史。如下面的新的回購提交歷史:
* 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
,5d93766
和ebdfb0b
),所有這些都沒有更改subfolder
,所以它們不會顯示在新的回購中。
- 對於提交
e1e054c
,它只能在dev
分行變更file2
,所以不會在新的回購顯示。
- 對於第四合並提交
8cb09fb
,它保持subfolder
(file3
和file4
)爲同一版本,它的第一個家長對master
分支提交6e8ee57
(更改子文件夾沒有),所以也承諾不會在新的回購顯示。
pull請求的本質是一個存儲庫中的散列ID。你的散列ID和現有的存儲庫會發生什麼?這會告訴你關於你的pull請求會發生什麼的答案。 – torek
拉請求只不過是一個分支。你甚至可以添加一行:'fetch = + refs/pull/*/head:refs/remotes/origin/pr/*'。試圖合併拉請求就像合併分支和通常的衝突解決方案一樣。 – o11c