我试图撤销自上次提交以来的所有更改。在看完这篇文章后,我尝试了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
推荐文章
- Visual Studio Code无法检测已安装的Git
- 强制LF eol在git的回购和工作副本
- Git:在裸库中更改活动分支的正确方法?
- 删除git中的分支是否会将其从历史记录中删除?
- 防止在GitHub上推送到master ?
- 根据Git,谁是“我们”,谁是“他们”?
- git如何合并后樱桃采摘工作?
- Git搜索单个文件历史记录中的字符串
- Git命令显示所有(轻量级)标签创建日期
- Gitignore并没有忽视文件夹
- 什么时候用。git/info/exclude代替。gitignore来排除文件?
- 如何告诉git忽略个别行,即gitignore为特定行代码
- 如何删除所有MySQL表从命令行没有DROP数据库权限?
- “git diff——耐心”是什么意思?
- 我如何在GitHub中为其他人的代码做出贡献?