【发布时间】:2010-10-29 23:12:14
【问题描述】:
我不小心提交了错误的文件到Git,但还没有将提交推送到服务器。
我如何从本地存储库撤消这些提交?
似乎唯一的方法是在某种 GUI 文本编辑器中复制编辑,然后擦除整个本地克隆,然后重新克隆存储库,然后重新应用编辑。然而,
- 这可能会导致数据丢失。
- 当只运行了一个意外的
git commit时,很难做到这一点。
有没有更好的办法?
【问题讨论】:
-
你知道 git 需要什么吗?
git undo,就是这样。然后 git 处理我们这些凡人所犯错误的声誉就消失了。通过在执行任何git命令之前将当前状态推送到 git 堆栈上来实现。它会影响性能,所以最好添加一个配置标志来决定是否启用它。 -
@YiminRong 这可以通过 Git 的
alias功能来完成:git-scm.com/book/en/v2/Git-Basics-Git-Aliases -
对于 VsCode 用户,只需键入 ctrl +shift +G 然后点击三个点,即更多选项,然后点击 undo Last Commit
-
@YiminRong 究竟要撤消什么?有许多非常不同的功能案例,其中“撤消”意味着完全不同的东西。我敢打赌,添加一个新奇特的“魔杖”只会让事情更加混乱。
-
@YiminRong 不买。人们仍然会摸索和撤消不该撤消的事情。但更重要的是,
git reflog已经接近您所描述的内容,但让用户可以更好地控制要(未)做的事情。但是,请不要,“撤消”在任何地方都不起作用,人们会期望实现该功能的许多不同的东西。撤消上次提交?撤消上一个操作?如果最后一个操作是推送,那么撤消的具体方式是(重置并推送)还是(还原并推送)?
标签: git version-control git-commit undo