git - 如何重置先前提交中的所有更改并将其与实际合并?
问题描述
我有 3 次提交:master -> v1 -> v2 在 v1 中我们发现了问题并决定丢弃其中的所有更改。如何重置 v2 中的这些更改?
我尝试切换到分支 v1 并运行“git reset --hard HEAD^”。下一步是什么?我现在尝试结帐到 v2 并将其与 v1 合并,但它不起作用。
解决方案
您很可能想在git revert
这里使用:
# from your branch
git log
找到提交的 SHA-1 哈希v1
并将其记录在某处。然后还原:
git revert abc123
这将在您的分支顶部添加一个新提交,该提交在功能上撤消v1
提交引入的任何更改。
请注意,硬重置在这里不起作用,除非还取消v2
提交,因为它所能做的就是将 theHEAD
和所有其他指针移回一定数量的提交。如果您想改写历史记录以删除v1
,那么交互式 rebase可以做到这一点。但一般来说,重写 Git 分支的历史是不可取的,假设该分支已经公开并且可能正在被其他用户使用。
推荐阅读
- elasticsearch - 用timelion绘制同一elasticsearch索引中两个时间字段之间的差异
- mysql - AWS RDS (MySQL) 不会通过 VBA 将所有列内容输出到 Excel
- excel - Excel 数据透视表 - 带有子标题的多个标题
- apache-kafka - 有没有办法在 Kafka 流中的计数函数上应用过滤器?
- react-native - 在 Appbar.content 上面有空白空间
- git - git pull 后显示“强制更新”
- java - Glide gradle 无法识别 ModelLoader
- c# - 使 URL 的参数持久化
- django - 指定 HTTP 或 HTTPS 时 Django 重定向不起作用
- html - 发送带有嵌入图像的数据库邮件