git - 撤消更改两次提交并进入干净状态。
问题描述
假设我有一个看起来像这样的提交历史:
A <- B <- C
我目前在 C 上。我讨厌我的提交 B 和 C,并且我想以干净的 staging 和没有更改的方式回到 A。我想要 A 的状态。我如何以最有效的方式做到这一点。我目前正在这样做:
git revert --no-commit B
git revert --no-commit A
git checkout .
这也使得没有回复提交/没有新提交显示我的回复。说我想要这个。我该怎么办?
有没有更好的办法?
解决方案
git reset --hard A
这将带你回到修订版 A,它非常接近于说“b 和 C 没有发生”。此外,当前分支将开始指向 A,因此请谨慎使用。
如果您想要的是遵循 C (A <- B <- C <- D) 的新修订版 D,使其具有与 A 相同的内容,那么您可以试试这个:
git checkout A -- . # take back content of the whole project to how A was
git commit -m "Going back to revision A"
如果您想使用不创建提交的还原来执行此操作:
git revert --no-commit A..C
git commit -m "going back to A"
或者:
git revert --no-edit A..C
git reset --soft HEAD~2 # Moving branch pointer to C keeping everything else as-is
git commit -m "going back to A"
推荐阅读
- ios - 添加 SCNPhysicsBallSocketJoint 时 SceneKit 崩溃
- javascript - select2 选项已排序,但不能通过在选项之间放置每个字母的标签来分隔选项
- mysql - 如何通过在spring数据本机查询或存储库中传递userIds列表来获取用户的最大日期时间戳
- r - 我应该如何在 R 中有效地跨行格式化 gt 表?
- flutter - 在 ListView.builder 的末尾提供一些额外的空间
- python - 如何从表格行中抓取特定单词?
- amazon-web-services - 需要定期更新时使用 Dynamo 表的最佳实践
- python - 使用 matplotlib python 为数据透视表绘制折线图
- python - 向左旋转数组
- python - Pymongo - 快速搜索并留下重复项