从git log

时间:2017-11-30 07:41:21

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

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

问题是:

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

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

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

  4. 感谢您的帮助,对不起,我没有任何例子可以放在这里。

1 个答案:

答案 0 :(得分:2)

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

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