使用TortoiseGit删除所有提交后的所有提交

问题描述:

使用TortoiseGit(我试图避免使用命令行)如何删除从某个提交中继承的所有提交,以及“回到过去”(示例用法:继续做了一些事情,我觉得我不喜欢它要去的地方,并决定不顾一切地回去“)。使用TortoiseGit删除所有提交后的所有提交

总之我希望去5次提交“后退”,然后删除它们。

从命令行中,您可以使用revert或reset命令。 TortoiseGit应该有类似的命令,也许你可以通过查看提交日志来访问它们?

(我没用过TortoiseGit所以我不能检查它)

+0

哦,okey。那么,据我所知,它已经恢复了命令。但它将我在工作副本中所做的更改逆转回最后的提交。我没有看到一种方法来恢复“下路”的几次提交。在任何情况下,至少+1尝试:) – richard 2010-03-28 00:28:58

+0

啊,我没有注意到你想回去5次提交X( 'git-reset'(--hard)应该是你的新朋友;) – Tuxified 2010-03-28 00:31:12

我从未使用过任何龟(除非你的电子乐组),但我给你的情况下,此信息您没有找到一种方法来使用GUI,或者最终决定去CLI。

作为@Tuxified提到,您可以使用git reset --hard <COMMIT>完成此操作。您需要指定一个提交,这可以通过任何可能的方式进行恐吓;最常见的形式有HEAD~4,它指定在当前分支的头部之前提交的提交4,以及deadbeef42,它指定其SHA1以0xdeadbeef42开头的提交。如果您正在运行linux或OSX,则可以通过man git-rev-parse在“指定修订”下获取有关提交说明符的完整详细信息。

您也可以重新命名当前分支(git branch -m new_branch_name),然后创建一个头部位于要恢复的位置的新分支。好处是,如果你最终想要使用全部或部分你在那里做的东西,你仍然可以轻松访问它;如果你错误地提交了,你会从一个很大的圣诞节时刻被拯救出来。加上git分支是超级轻量级​​的,所以唯一真正的缺点是会有另一个分支列出。要创建新的主分支,您需要使用git branch master <COMMIT>,然后将其签出。因此,这里的净效果与第一个选项相同,只是您的旧更改仍保存在分支new_branch_name中。如果你喜欢它,你甚至可以在稍后新提交到master之后重新合并这些更改。

请注意,这些技术中的任何一种都被视为“重写历史记录”,如果您与其他人共享您的回购,将会导致问题。如果你很聪明并推动云市或另一台电脑中的备份仓库,那么在你重新推送它之前,你必须解决这个问题。

这可能比你现在需要更多的信息,但如果你最终使用git很多,你可能会想在某个时候学习这些东西。对不起,我不知道如何使用乌龟...

前往TortoiseGit - >显示日志。选择要保留的最近提交,上面的所有内容都将被删除。然后右键点击它并选择“重置”主“”到这个“并选择硬。要小心,因为一旦你这样做了所有的提交后,它将永远失去,除非它们被存放在另一个分支的某处。

+4

Side注意:当您将此更改推送给主设备时,您必须选择“强制覆盖现有分支”,否则它将失败。 – Powerlord 2013-04-19 15:47:56

+5

在TortoiseGit v1.8.14中,“强制覆盖”已更改为“选项”>“强制:可能丢弃”>检查“已知更改”复选框。我不需要使用更具破坏性的“未知更改”选项。 – ShawnFeatherly 2016-01-22 22:46:11