作者:岳骏哲爱237 | 来源:互联网 | 2024-12-11 10:05
假设您当前位于主分支(版本C4),但发现某些功能已损坏,而这些功能在之前的版本C1时还能正常工作。如何将从C1到C4的所有提交复制到一个新的特性分支中,同时将主分支回滚至C1,以便能够安全地进行版本控制和持续集成部署?
假设您现在处于主分支(版本C4),但最近的更改导致了一些问题,而这些问题在之前的版本C1时并不存在。为了修复这个问题,您希望将从C1到C4的所有提交复制到一个新创建的特性分支中,同时将主分支回滚到C1版本,确保生产环境不受影响。
首先,您需要从当前的主分支创建一个新的特性分支。这一步可以通过以下命令完成:
git checkout -b feature-branch-name
这样就创建了一个基于当前主分支的新特性分支。接下来,您需要将主分支回滚到C1版本。这可以通过以下步骤实现:
git checkout master
git reset --hard C1
执行上述命令后,您的主分支将被回滚到C1,而不影响新创建的特性分支中的更改。这样,您就可以继续在特性分支上工作,直到问题得到解决,之后再考虑是否合并回主分支。
解决方案
#1
首先,创建一个新分支来保存当前的更改:
git checkout -b holding-branch
接着,回到主分支并将其回滚到C1版本:
git checkout master
git reset --hard C1
这样做不会影响新创建的分支,并且可以成功地将主分支恢复到早期的状态。
#2
另一种方法是先创建一个用于测试的分支,然后回滚主分支:
git checkout master
git branch testing
git checkout master
git reset --hard C1的哈希值(例如:de79f21269b02125e50cf788fa83e91)
git push origin master
这样操作后,主分支将被回滚到指定的版本,而测试分支则保留了最新的更改。您可以在任何时候通过以下命令切换到测试分支进行检查:
git checkout testing