问题描述
|
这是场景:我已经为代码库创建了一个新的存储库并进行了一些提交,但是我决定该代码库的某些部分应该在其自己的分支中,而不是在主服务器上。如何将代码分隔到另一个分支中,以便母版“不知道”它?显然,我不能只创建分支然后从master删除代码,因为从master到新分支的任何后续合并也将删除分支中的代码。
我敢肯定这是一个简单的答案,但是我不认为应该怎么做:)
解决方法
如果您可以重新设置master的基础(即没有其他人要更改到分支的更改),我将使用
git rebase -i
重新排列master中的提交,以便所有应在分支中的提交都应保留在所有提交中主。之后,创建分支并重置主节点,以使其不包含任何分支提交。
例如,如果您有提交(“ 1”表示要移动的提交,而“ 2”应保留的提交):
M1---B1---M2---B2---M3
将它们重新建立
M1---M2---M3---B1---B2
创建新分支,并将“ 5”母版创建为“ 6”。
如果您无法使master变基,请创建分支,然后在ѭ7上不需要对master所做的更改,然后再执行do8ѭ。这有效地告诉分支您知道有关还原的信息,而您不希望在那儿看到它。
之后,如果您将master合并到分支中,则master中的更改会正确合并,但还原不会。此外,如果您随后决定分支已完成并且想要合并回master,那么它也可以正常工作-分支中的所有更改都将合并,包括已还原的更改。
, 您可以通过将您要提交的内容挑选到自己的分支中来实现。
您想要私有的第一个提交之前的第一个分支:
git checkout -b feature1 sha1^ # sha1 is the hash of the first private commit
现在,每次提交都认真挑选
git cherry-pick hash1 hash2 etc
现在,在母版中删除相同的
git checkout master
git rebase -i sha1^ # as in the first checkout
现在删除您精心挑选的提交。
希望这可以帮助
, 检出master,然后编辑工作目录以删除(或隐藏?)功能,然后提交。
为\“ new \”功能开发创建一个分支(我将其称为\“ dev \”,但应将其命名为有意义的名称)。然后在开发人员上,还原(而不是重置!)上一个提交,撤消您刚刚执行的“删除”(或隐藏)工作。将还原提交到dev分支。
第三步,获利。现在,您将了解如何在没有功能的情况下分支母版,并在其中分支主题。