git - Git在合并后恢复提交
问题描述
我有以下情况:
Remote: A<-B<-----C<-D<-------\
Local: \-B1<------B2<-B3<-M
因此,我已将远程拉取合并到我的本地存储库 (M) 中。我现在想恢复 B3 并返回 B2。我试着做一个
git revert --no-commit -m 1 M
git revert --continue
现在我的 git 日志显示以下内容:
commit R
Revert "Merge branch 'master' of https://...."
This reverts commit M, reversing changes made to B3
commit M
....
commit B3
....
....
然而,即使 git 日志提到“撤销对 B3 所做的更改”,当我执行 git status 时,它显示的内容与我在B3 提交后所期望的相同。看来,我实际上是向前而不是向后(新提交 R)。
我的问题:
- 如何返回 B2?
- 恢复合并是否正确/需要?
解决方案
您可以重置master
并B2
执行合并:
git reset --hard B2
git merge remote/master
提交是不可变的,所以如果你想合并到不同的提交中,你必须从头开始。
另一方面,如果您对自己的历史感到满意并且只想查看B2
,则可以查看:
git checkout B2
很可能revert
不是您想要的。revert
将添加一组提交,以反转您选择的范围引入的更改。通常有更简单的方法可以到达您想要的状态。
推荐阅读
- python - 在视图 form_valid 函数中访问保存在 ModelForm 中的数据
- java - java while循环没有按预期工作
- python-3.5 - 整数格式说明符中不允许精度
- c - 错误:在初始化字符串时无法将 'char**' 转换为 'char*'
- java - JWT 组件信息
- python-3.x - 在 GeoViews 中显示 Linestrings 的路径
- c - 使用 c 进行冒泡排序
- .net-core - ASP.NET Core SignalR 上的持久连接 API 可用性
- java - 如何在考虑函数调用成本和代码冗余的情况下选择最佳代码时进行全面比较?
- mysql - 空的Rails范围返回不正确的结果