lms*_*lms 4 git version-control
假设我有2个平行的长寿分支:master和experimental.我做了一些工作中的话题岔开的experimental,我这样做的一对夫妇的功能(feature1,feature2,feature3).我怎么会在移植完成的工作feature2到master?
我的初始存储库:
master
|
A-B-C
\
D-E I L P
\ / \ / \ /|
F-G-H \ / \ / |
| J-K \ / experimental
feature1 | M-N-O
feature2 |
feature3
Run Code Online (Sandbox Code Playgroud)
我想要的存储库:
master
|
A-B-C-----------------------------J'-K'
\
D-E I L P
\ / \ / \ /|
F-G-H \ / \ / |
| J-K \ / experimental
feature1 | M-N-O
feature2 |
feature3
Run Code Online (Sandbox Code Playgroud)
我可以想到这样做的一种方式是,git checkout master; git cherry-pick J K但这容易出错,主题分支可能有许多不同的提交.
我希望它的工作有点像git checkout master; git <transplant-commits-in-topic-branch-onto-current-branch> feature2,但所有的垫底命令我熟悉移植都来自共同祖先差异列表(在这种情况下A),我想刚刚移植上比较I和K,并与提交哈希不乱.
一点上下文:我正在研究一个原始代码的代码库,但是我想回馈一些特性.我开发了主题分支中的所有新功能,然后将其合并回主人.
如果你只是想移动feature2到master,和"我"和"K"不依赖于制造的变化feature1,你可以用它移植:
git rebase --onto master feature1 feature2
Run Code Online (Sandbox Code Playgroud)
这句法读取,松散,为"衍合feature2上master.这是原来的上游是feature1".
然后,如果合并feature2到master,这将是一个快进合并.
但是,如果feature2依赖于feature1不会发生的变化master,则整个情况会变得复杂得多,您想要做的事情完全取决于您的工作流程以及您与父项目的关系.采摘樱桃会有效......只要你愿意让你的功能分支的后期合并与原始主人的复杂化.或者你可以改变你所有的分支,以便feature2干净地应用master,或者......大约十几种其他方法.这实际上取决于您对这些分支机构的长期计划.一般情况下,如果可以帮助它,请切断feature2(feature3等等)master.它可以为您节省很多麻烦.
| 归档时间: |
|
| 查看次数: |
1312 次 |
| 最近记录: |