git 回滚分支并稍后应用修复

问题描述 投票:0回答:1

我读了很多主题,但我仍然有疑问。

我有 2 个分支,这些提交位于远程存储库上:

大师

  • 提交04
  • 提交03
  • 提交02
  • 提交01

发展

  • 提交04
  • 提交03
  • 提交02
  • 提交01

我想将 masterdevelop 返回到“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 merge
1个回答
0
投票

这部分是正确的:

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”是一种不好的做法

不打破鸡蛋就无法制作煎蛋卷。你问这个问题的前提是你打算改写历史。完成此操作后,用力推送是推送远程上也存在的重写分支的唯一方法。

最后,请记住,由于引用日志,您在这里所做的一切都是不可撤销的。所以就试试吧!

© www.soinside.com 2019 - 2024. All rights reserved.