在 Git 中将一个功能分离到一个新分支中

Wil*_*den 2 git version-control branch

场景如下:我为代码库创建了一个新的存储库并进行了一些提交,但我决定该代码库的某些部分应该位于其自己的分支中,而不是位于 master 上。如何将该代码分离到另一个分支中,以便 master “不知道”它?显然,我不能只创建分支,然后从 master 中删除代码,因为任何后续从 master 到新分支的合并也会删除分支中的代码。

我确信这有一个微不足道的答案,但我不知道应该如何完成:)

svi*_*ick 5

如果您可以对 master 进行变基(即没有其他人拥有您想要移动到分支的更改),我将使用git rebase -i重新排列 master 中的提交,以便应在分支中的所有提交都在应保留在 master 中的所有提交之后。之后,创建分支并重置 master,以便它不包含任何分支提交。

\n\n

例如,如果您有提交(其中B表示您想要移动的提交,以及M应该保留的提交):

\n\n
M1---B1---M2---B2---M3\n
Run Code Online (Sandbox Code Playgroud)\n\n

将它们重新设置为

\n\n
M1---M2---M3---B1---B2\n
Run Code Online (Sandbox Code Playgroud)\n\n

创建新分支并git reset --hard主控到M3.

\n\n

如果您无法对 master 进行变基,请创建您的分支,git revert在 master 上进行您不需要的更改,然后执行git merge -s ours master. 这有效地告诉分支您知道恢复并且您不希望它在那里。

\n\n

之后,如果将 master 合并到分支中,master 中的更改会正确合并,但恢复不会。更重要的是,如果您随后决定分支已完成并且想要合并回 master,它也可以正常工作 \xe2\x80\x93 来自分支的所有更改都会合并,包括那些已恢复的更改。

\n