git撤消所有未提交或未保存的更改
本文翻译自:git undo all uncommitted or unsaved changes
I'm trying to undo all changes since my last commit. 我试图撤消自上次提交以来的所有更改。 I tried git reset --hard
and git reset --hard HEAD
after viewing this post . 在查看这篇文章后,我尝试了git reset --hard
和git reset --hard HEAD
。 I responds with head is now at 18c3773... but when I look at my local source all the files are still there. 我用头响应现在是18c3773 ...但是当我查看我的本地源时,所有文件仍然存在。 What am I missing? 我错过了什么?
#1楼
参考:https://stackoom.com/question/x3hV/git撤消所有未提交或未保存的更改
#2楼
This will unstage all files you might have staged with
git add
: 这将取消您使用git add
暂存的所有文件:git reset
This will revert all local uncommitted changes (should be executed in repo root): 这将还原所有本地未提交的更改(应在repo root中执行):
git checkout .
You can also revert uncommitted changes only to particular file or directory: 您还可以仅将未提交的更改还原到特定文件或目录:
git checkout [some_dir|file.txt]
Yet another way to revert all uncommitted changes (longer to type, but works from any subdirectory): 还原所有未提交更改的另一种方法(更长时间键入,但可以从任何子目录工作):
git reset --hard HEAD
This will remove all local untracked files, so only git tracked files remain: 这将删除所有本地未跟踪文件,因此只保留git跟踪文件:
git clean -fdx
WARNING:
-x
will also remove all ignored files, including ones specified by.gitignore
! 警告:-x
还将删除所有被忽略的文件,包括.gitignore
指定的文件! You may want to use-n
for preview of files to be deleted. 您可能希望使用-n
来预览要删除的文件。
To sum it up: executing commands below is basically equivalent to fresh git clone
from original source (but it does not re-download anything, so is much faster): 总结一下:执行下面的命令基本上相当于来自原始源的新git clone
(但它不会重新下载任何内容,因此速度更快):
git reset
git checkout .
git clean -fdx
Typical usage for this would be in build scripts, when you must make sure that your tree is absolutely clean - does not have any modifications or locally created object files or build artefacts, and you want to make it work very fast and to not re-clone whole repository every single time. 这种情况的典型用法是在构建脚本中,当你必须确保你的树是绝对干净的 - 没有任何修改或本地创建的目标文件或构建工件,并且你想让它工作得非常快而且不能重新每次都克隆整个存储库。
#3楼
there is also git stash
- which "stashes" your local changes and can be reapplied at a later time or dropped if is no longer required 还有git stash
- 它“ git stash
”你的本地更改,可以在以后重新应用,如果不再需要则可以删除
more info on stashing 关于藏匿的更多信息
#4楼
If you wish to " undo " all uncommitted changes simply run: 如果您希望“ 撤消 ”所有未提交的更改,只需运行:
git stash
git stash drop
If you have any untracked files (check by running git status
), these may be removed by running: 如果您有任何未跟踪的文件(通过运行git status
检查),可以通过运行以下命令删除这些文件:
git clean -fdx
git stash
creates a new stash which will become stash@{0} . git stash
创建一个新的存储,它将成为存储@ {0} 。 If you wish to check first you can run git stash list
to see a list of your stashes. 如果你想先检查一下,你可以运行git stash list
来查看你的stashes列表。 It will look something like: 它看起来像:
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
Each stash is named after the previous commit messsage. 每个存储都以先前的提交消息命名。
#5楼
For those who reached here searching if they could undo git clean -f -d
, by which a file created in eclipse was deleted, 对于那些到达这里的人,搜索他们是否可以撤消git clean -f -d
,删除在eclipse中创建的文件,
You can do the same from the UI using "restore from local history" for ref: Restore from local history 您可以使用“从本地历史记录还原”从UI执行相同操作,以获取参考: 从本地历史记录还原
#6楼
States transitioning from one commit to new commit 从一个提交转换到新提交的状态
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
Action for state transitioning 国家过渡的行动
0->1: manual file/directory operation
1->2: git add .
2->3: git commit -m "xxx"
Check diff 检查差异
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
Revert to last commit 恢复到上次提交
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
Equivalent of git clone, without re-downloading anything 相当于git clone,无需重新下载任何内容
git reset; git checkout .; git clean -fdx
git撤消所有未提交或未保存的更改相关推荐
- Git系列之把未提交的代码保存到本地
文章の目录 1.场景 2.解决方式 3.apply 和 pop的区别 写在最后 1.场景 当正在dev分支上开发某个项目,这时候项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不 ...
- git reset之后找回本地未提交(未add+commit)的代码
今天pull了线上代码,发现有问题想还原,结果头脑一发热执行了git reset.完事才发现本地有几个修改未提交的文件被无情的重置了,本来想着这不小问题吗,执行git reflog查看记录然后git ...
- mysql事务未提交 也未回滚
文章目录 一.场景模拟 二.紧急处理 三.原因分析 四.相关命令 1.查看正在执行的事务 2.查看正在锁的事务 3.查看等待锁的事务 4.查看所有的线程列表 5.定位未提交的事务执行的sql语句 公司 ...
- 草稿9206 作业未提交
作业未提交 日报未提交
- git恢复到上次提交
4个区 5种状态 未修改(Origin) 已修改(Modified) 已暂存(Staged) 已提交(Committed) 已推送(Pushed) 检查修改 已修改,未暂存(检查工作区与暂存区间的差异 ...
- git查看 对比未提交_30分钟让你掌握Git的黑魔法
担忧 很多人怕使用 git,我个人觉得主要可能是两部分的原因: 没接触过:平时接触的代码还托管在 SVN 或 CVS 等工具上. 不太熟悉:可能对 git 的使用还不太熟悉和全面,导致在使用 git ...
- Git使用本地仓库之基本操作--版本回退,后悔怎么办,撤销未提交的修改
1.Git是什么? 一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制系统 ①Git可以方便的在本地进行版本管理,如同你本地有一个版本管理服务器一样我们可以选择在合适的时间将本地版本 ...
- Git常用操作(清除工作区未跟踪文件、保存和恢复进度、打标签)
git clean 清除工作区未跟踪文件 git clean 命令去除冗余文件或者清理工作目录 git clean -f -d 移除工作目录中所有未追踪的文件以及空的子目录.(-f强制删除) git ...
- 使用git恢复未提交的误删数据
不小心将项目中一个文件夹删除还未提交,或者已经提交, 此时想要恢复数据该怎么办? 答案是git reflog,使用git reflog命令可以帮助恢复git误操作,进行数据恢复. 操作过程: 打开终端 ...
最新文章
- nginx+tomcat+memcache实现负载均衡、session共享
- 压力不是来自于任务本身,而是任务在大脑中的堵塞,带来的焦虑和心理的抵触(转)...
- flink的udtf中String[]转String数组
- MySQL中主键的选择与磁盘性能
- python迭代法求平方根_1021: 迭代法求平方根
- 帆软报表重要Activator之DesignerStartup
- TemplateSyntaxError: 'crispy_forms_tags' is not a registered tag library.报错的解决办法
- (2022最新)Java毕业设计参考题目-题目新颖(值得收藏)
- 电力猫服务器的网页,电力猫方案完美解决家庭网络布局
- steam搬砖项目超完整版实操免费分享
- 简化“复杂”的层级管理,实现团队作战式的目标协同
- java三角形边长_java三角形怎么求边?
- 极虎病毒结束度假,感染量再攀高峰
- xpwifi热点设置android,笔记本xp系统wifi热点设置教程(图文)
- 从补天白帽大会看网络世界那些“挖洞”的人
- 漫画 | 30年后,中国就会有自己的编程语言!
- Games101 笔记 Lecture 7-9 Shading (Illumination, Shading)
- 国家气象局提供的天气预报接口(完整Json接口)
- 【解决方案】如何搭建一套完整的工厂安防智能监控系统——EasyCVR实现设备接入与维护
- 高校学生使用计算机软件,高校计算机运用软件教学