33

在 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

5 回答 5

42
git reset HEAD
git checkout .

git reset HEAD将取消暂存所有更改并git checkout .丢弃所有更改。

于 2014-01-28T04:14:56.213 回答
36

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

[alias]
  undo = '!git reset --hard && git clean -fd'
于 2013-04-23T06:57:32.240 回答
8

你可以使用git clean

$ git状态-s
?? 哎呀.txt

$ 混帐清理 -f
删除 oops.txt

$ git状态-s

更多信息:

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

于 2013-04-23T03:08:38.470 回答
3

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

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

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

于 2021-02-03T17:36:38.103 回答
0

git rm --cached -r .

// 将取消 git 中所有暂存/跟踪的文件

于 2021-12-10T09:47:38.830 回答