在某次提交后使用TortoiseGit删除所有内容

时间:2010-03-28 00:09:56

标签: tortoisegit

使用TortoiseGit(我试图避免使用命令行)如何删除从某个提交中获取的所有提交,并“回到过去”(示例用法:继续做某事,我认为没有就像它的去向一样,并且决定“无视”所有人之间的“回归”。

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

3 个答案:

答案 0 :(得分:27)

转到TortoiseGit - >显示日志。选择您要保留的最新提交,上面的所有内容都将被删除。然后右键单击它并选择“重置”主“到此”并选择硬。但要小心,因为一旦你这样做,它之后的所有提交将永远丢失,除非它们存储在某个地方的另一个分支中。

答案 1 :(得分:2)

我从来没有使用任何Tortoise(除非你算上electronica组),但是如果你没有找到使用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很多,你可能希望在某些时候学习这些东西。对不起,我不知道如何使用Tortoise ......

答案 2 :(得分:0)

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

(我没有使用TortoiseGit所以我无法检查它)