TortoiseGit如何撤销最近提交到仓库的操作?

46

在TortoiseGit中是否有撤销最后一次提交到仓库的选项?

我不小心将大量不必要的文件推送到我的git仓库(分支:master)中,现在需要撤销。我搜索了很多关于TortoiseGit的选项来撤销推送并回到前一次提交之前的状态。请告诉我如何撤销我的最后一次提交。

2个回答

63
如果您尚未推送更改(因此您的提交仅为本地提交):
  1. TortoiseGit -> Show log (显示提交日志)
  2. 选择要回滚到的提交
  3. Reset "<branch>" to this...(重置“<branch>”到此处...)
如果您已经推送了更改,则仍然可以完成此操作,但那时您还必须进行一次强制推送(勾选“覆盖已知更改”)。
“覆盖已知更改”标志将使用新的提交替换已经推送的提交。如果有可能已经有人提取了您要替换的提交,请不要使用此功能;否则这样做将在历史记录中创建一个分支,其中有两个冲突的真相。
还有一个快捷方式,用于当您只想(1)重做上一个提交并且(2)您尚未推送它时:
  1. 提交 -> 勾选“Amend Last Commit”(修改上一个提交)
这将使用新的提交替换上一个提交。但我不建议使用这个方法,如果上一个提交已经被推送,您可能会遇到很大的问题。TortoiseGit不会在这里停止您。
通过执行重置操作,您被迫查看提交日志,并在那里查看提交是否为本地提交。

我回答了自己的问题。没有必要删除非指向本地提交的分支。只需右键单击它,选择“在此提交处创建分支”并创建一个新分支。然后,您可以按照以下链接删除该分支:https://dev59.com/cGkw5IYBdhLWcg3ws8xj - Baz Guvenkaya
@BarryGuvenkaya:我认为你不需要创建一个新的分支。假设你还没有推送,当你重置现有的分支时,你需要刷新日志,因为你已经重置了索引,你的本地提交将会消失。 - Ellesedil
1
似乎在选择重置(软重置)到日志中的先前条目后,您需要在TortoiseGit的日志中按“刷新”才能看到该项目在工作树更改和以前的顶部提交消失后移到顶部。 - George Birbilis

42
如果您需要恢复到上一个提交之前的状态,只需从日志列表中选择已提交的操作,然后选择“通过此提交撤消更改”。
注意,您需要再次执行“提交”和“推送”以保存修改。

谢谢,它运行得很好。但是现在当我选择文件并单击提交按钮时,它会给我另一个错误(一个带有“确定”按钮的空警报消息)。我正在使用tortoisegit版本1.8.5。但是我的电脑上的其他存储库没有出现这种情况。 - user2742122

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接