使用 TortoiseGit(我试图避免使用命令行)如何删除从某个提交中附加的所有提交,并“回到过去”(示例用法:继续做某事,认为我不喜欢它的位置正在走,并决定“返回”,不考虑中间的一切)。
简而言之,我希望“返回”5 次提交,然后删除它们。
使用 TortoiseGit(我试图避免使用命令行)如何删除从某个提交中附加的所有提交,并“回到过去”(示例用法:继续做某事,认为我不喜欢它的位置正在走,并决定“返回”,不考虑中间的一切)。
简而言之,我希望“返回”5 次提交,然后删除它们。
转到 TortoiseGit -> 显示日志。选择您要保留的最新提交,上面的所有内容都将被删除。然后右键单击它并选择“将“主”重置为此“并选择硬。不过要小心,因为一旦你这样做了,所有的提交都将永远丢失,除非它们被存储在某个地方的另一个分支中。
我从来没有使用过 Tortoise 任何东西(除非你算上电子组),但我会给你这个信息,以防你找不到使用 GUI 的方法,或者你最终决定使用 CLI。
正如@Tuxified 提到的,您可以使用git reset --hard <COMMIT>
. 您需要指定一个提交,这可以通过任何一种令人生畏的可能方式来完成;最常见的形式有HEAD~4
,它指定在当前分支的头部之前的 4 个提交,以及deadbeef42
,它指定一个 SHA1 以 0xdeadbeef42 开头的提交。如果您运行的是 linux 或 OSX,您可以通过man git-rev-parse
“SPECIFYING REVISIONS”下的 获取有关提交说明符的完整详细信息。
您还可以重命名当前分支 ( git branch -m new_branch_name
),然后创建一个新分支,其头部位于您要恢复到的位置。优点是,如果您最终想要使用您在那里所做的全部或部分内容,您仍然可以轻松访问它;如果你在提交上打错了字,你就可以从一个巨大的糟糕时刻中解脱出来。另外 git 分支是超级轻量级的,所以唯一真正的缺点是会列出另一个分支。要创建您将使用的新主分支git branch master <COMMIT>
,然后检查它。所以这里的实际效果与第一个选项相同,只是您仍然将旧更改保存在分支中new_branch_name
。master
如果您愿意,您甚至可以在以后重新提交这些更改后合并这些更改。
请注意,这些技术中的任何一种都被视为“重写历史”,如果您与他人共享您的存储库,则会导致问题。如果您很聪明并推送到云城或另一台 PC 中的备份存储库,那么您必须先修复这方面的问题,然后才能再次推送。
这可能比你现在需要的信息多得多,但如果你最终经常使用 git,你可能会想在某个时候学习这些东西。对不起,我不知道如何使用乌龟......
从命令行,您可以使用 revert 或 reset 命令。TortoiseGit
应该有类似的命令,也许您可以通过查看提交日志来访问它们?
(我没用过TortoiseGit
所以不能查)