如何在命令行中使用git-revert?

34

在使用 TortoiseGit 进行 git revert 操作时,我会得到如下美丽的窗口:

图片描述

但是,当我想要通过命令行执行相同操作时,文档 完全把我搞糊涂了。如何撤销所有本地未提交的更改?


只是词汇笔记:revert 是创建一个新的提交以撤消以前的提交,reset 才是你想要的(还原未提交的更改)。 - CharlesB
2
@CharlesB:我知道他们保留了这个名字,可能是从TortoiseSVN沿用过来的,但是这个命名方式似乎有些不负责任。 - Cascabel
3个回答

77

如果要放弃所有本地修改,不需要使用revert命令。 revert命令是用来撤销提交的。相反,可执行以下命令:

$ git reset --hard

当然,如果你跟我一样,输入了这个命令后7毫秒就会想起自己刚刚删除了某些不该删除的内容,那么你可能更愿意使用:

$ git stash save 'Some changes'

这样可以放弃工作目录中的更改,但仍然可以恢复它们。


请注意,这会丢弃所有本地更改,因此它不是具有复选框的对话框的完全替代。如果您只想放弃某些更改,请使用git checkout <path>...,如马克在下面建议的那样 - Cascabel

20

假设你还没有提交,你也可以:

git checkout filename(s)

1
但是仍然会在Git状态中显示该文件,已准备提交。 - vidur punj
2
只有在之前执行了 "git add" 命令,才会出现这种情况。如果你只是编辑了一个文件然后进行检出操作,它将回到原始状态。 - Marc Hughes

2

像我这样的Git新手应该知道工作目录' != pwd

它实际上指的是整个树。

所以我很感谢Williams的建议,使用:

$ git stash save 'Some changes'

以下是可以撤销的方法:
$ git stash pop

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