我试图撤销自上次提交以来的所有更改。在看完这篇文章后,我尝试了git reset -hard和git reset -hard HEAD。我回复头部现在在18c3773…但当我查看我的本地资源时,所有的文件都还在那里。我错过了什么?
当前回答
国家从一个承诺过渡到新的承诺
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
其他回答
对于那些到达这里搜索是否可以撤消git clean -f -d的人,通过它在eclipse中创建的文件被删除,
你也可以在UI中使用“restore from local history”为ref: restore from local history进行同样的操作
下面定义了一个可重用的Git命令别名来删除任何本地更改,然后可以在将来的任何时候使用它来删除任何未提交的更改:
git config --global alias.remove-changes '!git stash push --include-untracked && git stash drop'
使用别名很简单:
git remove-changes
别名使用git stash push—include-untracked将所有更改推入存储(包括未提交的),然后使用git stash drop删除新创建的存储条目。
如果你想“撤销”所有未提交的更改或本地更改,只需运行:
git add .
git stash
git stash drop
git clean -fdx
使用此选项可以在上次提交后删除不需要的更改。
git reset --hard HEAD
如果你想“撤销”所有未提交的更改,只需运行:
git stash
git stash drop
如果您有任何未跟踪的文件(通过运行git状态检查),可以通过运行以下命令删除:
git clean -fdx
Git stash创建一个新的stash,它将成为stash@{0}。如果你想先检查一下,你可以运行git stash list来查看你的存储列表。它看起来像这样:
stash@{0}: WIP on rails-4: 66c8407 remove forem residuals
stash@{1}: WIP on master: 2b8f269 Map qualifications
stash@{2}: WIP on master: 27a7e54 Use non-dynamic finders
stash@{3}: WIP on blogit: c9bd270 some changes
每个存储都以前一个提交消息命名。
推荐文章
- 如何获得Git存储库中的Git存储库名称?
- 当git说它正在“解析delta”时,它实际上在做什么?
- Git命令将一个文件夹移动到另一个文件夹
- 在单个文件中重新启动/撤消冲突解决方案
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 如何删除多个已删除的文件在Git仓库
- 使用vimdiff查看所有' git diff '