【问题标题】:Getting rid of an unwanted pushed commit from git log从 git log 中删除不需要的推送提交
【发布时间】:2017-11-30 07:41:20
【问题描述】:

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

问题是:

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

  2. 问题是我的代码是基于旧提交的代码,我没有时间从头开始项目,所以我修复了旧代码并在那里形成,我担心我做了一个变基,我会删除一些东西。

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

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

【问题讨论】:

  • 实践中的主要问题是你的提交历史是否是线性的,如果不是,是否需要保持非线性。

标签: git atlassian-sourcetree git-rebase git-rewrite-history


【解决方案1】:

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

请注意,您可以在某个分支名称下“备份”当前状态,并且在变基后您可以进行比较,如果您不喜欢结果,您可以随时硬重置为您的备份提交。

【讨论】:

  • 10x 但是如果有人在所有推送之后已经拉了主,当他们再次有拉请求时会发生什么?我正在阅读有关交互式 rebase 的内容,从我所阅读的内容来看,我似乎没有办法解决它,如果客户端已经拉出推送的提交,他们也必须在他们这边修复它?我错了吗?我试图认为我可能值得这样离开它。他试图隐藏我认为无法隐藏的东西......
  • 如果有人已经收到了提交,那么您无法让他们“丢失”提交。他们会看到旧历史和新历史,想知道为什么有人这样做。
  • 这就是我的想法...... 10x。如果您不介意,另一件事是,从我读过的有关交互式 rebase 的内容中,就像 rebase 一样,如果我删除提交,它将删除该提交中的代码,不是吗?也许我不明白,但在我阅读的每篇文章中,似乎提交背后的代码也被删除了,所以它不仅仅是删除日志历史记录,它实际上是删除代码,并且每篇文章都有警告确保你知道你在做什么,但我不确定 LOL
  • 正如我在回复中所说(请随意投票),您将不得不压缩提交。如果您不压缩提交,而是删除它们,那么它们的更改也会消失,是的。所以我建议你保留一个备份分支并进行比较,确保你的代码在你的 rebase 前后看起来是一样的。
猜你喜欢
  • 2012-10-22
  • 2011-12-03
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
  • 2021-10-28
  • 2013-03-26
相关资源
最近更新 更多