git - 如何删除不需要的提交和 merge

标签 git

我有以下提交顺序:

A---B---D---E---G---H---
     \     / \
      C---/   F---

提交 D 引入了不正确的更改, merge 提交 E 将其转发给 F 和 G。 我想完全删除 D 和 E 提交。 可以做什么:

A---B---C---G---H---
         \
          F---

最佳答案

你在这里修改历史。如果该历史记录不存在于任何其他存储库中,那很好,否则请确保您知道自己在做什么。

C 使用 HEAD 检查名为 my_better_history 的分支 git checkout -b my_better_history C

引入你想要的提交: git cherry-pick GH

检查你的工作。如果您的原始分支名为 master,您可以执行 git diff-tool master 以确保状态相同。如果一切顺利,您可以将您的新历史作为正式历史。假设您从分支 master 开始,那么您可以:

git checkout master
git reset --hard C #now your master is back to the common history point.
git merge my_better_history

现在 master 将拥有所需的历史记录。

关于git - 如何删除不需要的提交和 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38143472/

相关文章:

linux - 在 Linux 中 - 如何删除名称为 'erroneous' 的文件?

node.js - Git基于其他repo推送新的repo,开始新的

git - 在 TortoiseSVN 中使用 github 个人访问 token

git 只 pull 一个特定的标签

git - 使用 Git 存储库时遇到问题

git - Docker 构建错误 "Cannot fetch index base URL http://pypi.python.org/simple/"

git - 如何从远程 Git 存储库中删除所有内容?

git - 如何关闭 Git 的 ssh-agent.exe?

git - 在AWS ubuntu服务器下运行的git上的权限被拒绝(公钥)错误

git - 当用户按下git时,它会锁定 Remote 以进行写入吗?