如何快速撤消git中的分阶段和非分阶段更改?

时间:2013-04-23 03:03:40

标签: git

在Git中撤消更改(暂存和未暂停)的最快方法是什么?

两个文件都未分页。

$ git status -s
 M file1.txt # unstaged
?? oops.txt # unstaged

一个文件暂存,一个文件未分级。

$ git status -s
M  file1.txt # staged
?? oops.txt # unstaged

我可以add全部索引,然后stash savedrop

$ git add .
$ git stash save
$ git stash drop
$ git status
nothing to commit, working directory clean

有更快的方法吗?

4 个答案:

答案 0 :(得分:30)

您需要使用两个命令:git reset --hardgit clean -fdgit reset --hard将撤消所有暂存的更改和git clean -fd,非暂存更改(文件和目录)。您可以创建一个将执行这两个命令的别名。为此,只需在.gitconfig中添加以下行:

[alias]
  undo = '!git reset --hard && git clean -fd'

答案 1 :(得分:23)

git reset HEAD
git checkout .

git reset HEAD将取消所有更改,git checkout .会丢弃所有更改。

答案 2 :(得分:6)

您可以使用git clean

$ git status -s
?? oops.txt

$ git clean -f
Removing oops.txt

$ git status -s

更多信息:

  

通过递归删除不是的文件来清理工作树   在版本控制下,从当前目录开始。

答案 3 :(得分:0)

取消暂存所有暂存文件,请使用命令:

git reset HEAD

取消暂存单个文件暂存文件(例如:app.js),请使用命令:

git reset HEAD app.js

Git 版本 2.23.0 中引入了一个新命令 git restore

取消暂存文件,请使用:

git restore --staged app.js

此命令将从暂存区中删除文件并将其移回工作目录并保持更改不变。

撤消文件中的更改并将其恢复为原始内容,请使用:

git restore app.js

注意:您将丢失自上次提交以来所做的所有更改。