我读了很多主题,但我仍然有疑问。
我有 2 个分支,这些提交位于远程存储库上:
大师
发展
我想将 master 和 develop 返回到“commit02”,但我也想将其他提交保留在另一个分支中以修复它并再次合并以开发和掌握。我不能放弃这些改变。
我想过这样做:
git checkout master
git checkout -b fix-branch
设置 master 来正确提交
git checkout master
git reset --hard commit02
git push --force origin master
设置develop等于master(错误的代码会被丢弃吗)?
git checkout develop
git merge master
git push origin develop
现在我可以在修复分支上工作并创建新的提交
commit06
commit05
git push origin fix-branch
想象一下开发也收到新的提交。
commit07
git push origin develop
在合并回开发之前使用开发更新修复分支。
git checkout fix-branch
git rebase develop
现在我必须将所有提交合并到开发中
git checkout develop
git merge fix-branch
所以我的开发应该有所有提交
- commit06
- commit05
- commit07
- commit04
- commit03
- commit02
- commit01
最后,将开发合并到master
git checkout master
git merge develop
这是最好的方法吗?
很多人说,由于历史原因,执行“git Push --force”是一种不好的做法。
这部分是正确的:
git checkout master
git checkout -b fix-branch
设置 master 来正确提交
git checkout master
git reset --hard commit02
git push --force origin master
下列说法不正确的是:
设置develop等于master(错误的代码会被丢弃吗)?
git checkout develop
git merge master
git push origin develop
不,合并不会让“开发等于大师”。使它们相等的方法是将它们指向相同的提交:
git checkout develop
git reset --hard master
git push --force origin develop
我没听懂你之后说的话;到目前为止我们所做的已经完成了您基本上想要的:
我想支持 master 并开发到“commit02”,但我也想将其他提交保留在另一个分支中
你已经做到了。您如何处理通过设置分支名称
fix-branch
保存的提交取决于您,但重点是,它们不会丢失。
很多人说,由于历史原因,执行“git Push --force”是一种不好的做法
不打破鸡蛋就无法制作煎蛋卷。你问这个问题的前提是你打算改写历史。完成此操作后,用力推送是推送远程上也存在的重写分支的唯一方法。
最后,请记住,由于引用日志,您在这里所做的一切都是不可撤销的。所以就试试吧!