Wil*_*den 2 git version-control branch
场景如下:我为代码库创建了一个新的存储库并进行了一些提交,但我决定该代码库的某些部分应该位于其自己的分支中,而不是位于 master 上。如何将该代码分离到另一个分支中,以便 master “不知道”它?显然,我不能只创建分支,然后从 master 中删除代码,因为任何后续从 master 到新分支的合并也会删除分支中的代码。
我确信这有一个微不足道的答案,但我不知道应该如何完成:)
如果您可以对 master 进行变基(即没有其他人拥有您想要移动到分支的更改),我将使用git rebase -i
重新排列 master 中的提交,以便应在分支中的所有提交都在应保留在 master 中的所有提交之后。之后,创建分支并重置 master,以便它不包含任何分支提交。
例如,如果您有提交(其中B
表示您想要移动的提交,以及M
应该保留的提交):
M1---B1---M2---B2---M3\n
Run Code Online (Sandbox Code Playgroud)\n\n将它们重新设置为
\n\nM1---M2---M3---B1---B2\n
Run Code Online (Sandbox Code Playgroud)\n\n创建新分支并git reset --hard
主控到M3
.
如果您无法对 master 进行变基,请创建您的分支,git revert
在 master 上进行您不需要的更改,然后执行git merge -s ours master
. 这有效地告诉分支您知道恢复并且您不希望它在那里。
之后,如果将 master 合并到分支中,master 中的更改会正确合并,但恢复不会。更重要的是,如果您随后决定分支已完成并且想要合并回 master,它也可以正常工作 \xe2\x80\x93 来自分支的所有更改都会合并,包括那些已恢复的更改。
\n