从 git 日志中删除不需要的推送提交

Getting rid of an unwanted pushed commit from git log

我已经阅读了这个特定问题的所有答案,我知道它可能看起来是重复的,但我不认为它是,我认为我被要求做一些不同的事情,也许我没有我不明白答案,我的 git 也不是那么强。 (主要使用源代码树)

问题是:

  1. 我有一个项目是在开发的时候得到的,但它没有去任何地方,我是否有任务来修复它。现在它已修复并且我已经将以前开发人员的旧提交推送了 30 倍我的老板希望我从日志(历史记录)中删除他不想让客户看到的特定提交(完全删除提交形成日志。

  2. 问题是我的代码是基于旧提交的代码,我没有时间从头开始这个项目所以我修复了旧代码然后从那里开始我怕我做了一个rebase,我会删掉一些东西。

  3. 说清楚(我无法 post git 历史,抱歉,但希望有人能提供帮助)。我有旧的推送提交需要保留在历史记录中,然后在中间我有两个 推送提交我需要从日志和历史记录中完全删除但保留推送到其中的代码 然后我有更多需要保留在历史记录中的推送提交。

感谢您的帮助,很抱歉我没有任何示例可以放在这里。

如果您从旧提交到当前提交的历史记录是线性的,则可以进行简单的交互式变基,然后强制推送。在交互式 rebase 中,您可以将 "bad" 提交压缩到之前或之后的提交中,因此更改仍然存在,但看起来它们是其他提交的一部分。

注意你可以"backup"一些分支名称下的当前状态,在变基之后你可以比较,如果你不喜欢结果,你可以随时重置到你的备份提交。