使用TortoiseGit(我试图避免使用命令行)如何删除从某个提交中获取的所有提交,并“回到过去”(示例用法:继续做某事,我认为没有就像它的去向一样,并且决定“无视”所有人之间的“回归”。
总之,我希望“返回”5次提交,然后删除它们。
答案 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
所以我无法检查它)