Git:如何正确合并两个功能和完全不同的分支?

jay*_*rjo 10 git git-merge git-rebase

想象一下这样一种情况:你有两个同一个项目的分支,第一个分支的一部分在另一个分支上有重大的重构.但有一段时间你需要保持两个分支功能,所以你正在修复错误和两个关键功能添加,有时以不对称的方式.在某些时候,你需要将重构分支合并到原始分支上.在这种情况下使用的最佳技术是什么?是否仍然可以保持历史清洁?

但更重要的是,在这种情况下我最初的策略应该是什么?

jay*_*rjo 9

由于任务是简单地使用另一个分支而不是master,你可以简单地删除master分支或重命名它让我们说 - legacy,然后采取另一个分支并重命名为master.而已.以下是您可能需要执行的实际命令,以便在本地和GitHub上实现目标:

git branch -m master legacy               # rename local master to legacy
git checkout legacy
git branch -m another_branch master       # another_branch will be our new master
Run Code Online (Sandbox Code Playgroud)

在当地我们现在已经完成了.但是你不能简单地删除masterGitHub上的分支.首先需要将另一个分支作为默认分支.这可以在存储库中完成Settings > Default Branch.完成此操作后,您可以继续:

git push origin :master                   # remove master on GitHub
git push origin master                    # push out our new master branch
git push origin legacy                    # push our legacy branch too
Run Code Online (Sandbox Code Playgroud)

然后返回Settings > Default Branch并将默认分支切换回master.此外,您可以删除在迁移过程中可能已创建的所有额外分支.

或者,如果您要将所有操作保存在历史记录中,请在此处查看正确答案.

  • 重点是保留遗产,以防万一。如果您不需要遗留,您可以像任何其他分支一样删除它:http://stackoverflow.com/questions/2003505/how-do-i-delete-a-git-branch-both-locally-and-在github上 (2认同)