我试图撤销自上次提交以来的所有更改。在看完这篇文章后,我尝试了git reset -hard和git reset -hard HEAD。我回复头部现在在18c3773…但当我查看我的本地资源时,所有的文件都还在那里。我错过了什么?


当前回答

我使用源代码树....你可以通过2个简单的步骤恢复所有未提交的更改:

1)只需要重置工作空间文件状态

2)选择所有未升级文件(命令+a),右键单击并选择删除

就是这么简单:D

其他回答

# Navigate to project root, `.` works too.
git restore *

git状态显示我有一些文件被更改,但我想摆脱这些并开始一个新的分支。直到今天,我一直在使用git重置方法,我喜欢用它来跳回其他特定的提交。

https://www.git-tower.com/learn/git/commands/git-restore/

我使用源代码树....你可以通过2个简单的步骤恢复所有未提交的更改:

1)只需要重置工作空间文件状态

2)选择所有未升级文件(命令+a),右键单击并选择删除

就是这么简单:D

Git中有三个选项可以帮助撤消本地更改。

要查看在你的工作目录中所做的更改,你应该运行git status:

git status

用git stash撤销更改 要丢弃所有本地更改,但也要保存它们以供以后使用,您可以运行git stash命令:

git stash

用git签出撤消更改 要永久丢弃对文件的本地更改,您可以运行:

git checkout -- <file>

用git重置撤销更改 要永久丢弃对所有文件的所有本地更改,您可以执行:

git reset --hard

来源:https://www.w3docs.com/snippets/git/how-to-discard-unstaged-changes.html

如果你想“撤销”所有未提交的更改或本地更改,只需运行:

git add . 
git stash 
git stash drop
git clean -fdx

国家从一个承诺过渡到新的承诺

0. last commit,i.e. HEAD commit
1. Working tree changes, file/directory deletion,adding,modification.
2. The changes are staged in index
3. Staged changes are committed

状态转换的动作

0->1: manual file/directory operation
1->2: git add .
2->3: git commit -m "xxx"

检查差异

0->1: git diff
0->2: git diff --cached
0->1, and 0->2: git diff HEAD
last last commit->last commit: git diff HEAD^ HEAD

恢复到上次提交

2->1: git reset
1->0: git checkout .     #only for tracked files/directories(actions include modifying/deleting tracked files/directories)
1->0: git clean -fdx     #only for untracked files/directories(action includes adding new files/directories)
2->1, and 1->0: git reset --hard HEAD

相当于git的克隆,没有重新下载任何东西

git reset && git checkout . && git clean -fdx