git如何删除本地所有未提交的更改

2013-04-23 14:58:21 +08:00
 nullptr404
想问下大家git如何删除本地所有未提交的更改,包括修改的、新增的、删除的,还有一些编译生成的临时文件。就是回到上一版本的干净状态。我查了下有两个相关的命令:
1. git clean -df
2. git reset --hard
但问题是第一个命令只删除所有untracked的文件,如果文件已经被tracked, 修改过的文件不会被回退。而第二个命令只把tracked的文件revert到前一个版本,对于untracked的文件(比如编译的临时文件)都不会被删除。

要达到我所说的目的,是不是必须要同时运行这两条命令?能不能只用一条命令就搞定的?
108067 次点击
所在节点    程序员
15 条回复
myrual
2013-04-23 15:02:05 +08:00
试试
git checkout -f
ShadowStar
2013-04-23 15:02:06 +08:00
git checkout . && git clean -xdf
kejinlu
2013-04-23 15:06:09 +08:00
一般 git clean都是配合git reset 使用的

如果你有的修改以及加入暂存区的话
那么
git reset --hard
git clean -xdf

如果没有加入暂存区的话 ,见楼上答案
kejinlu
2013-04-23 15:06:42 +08:00
@kejinlu 不是“以及” 是“已经”
marvinlix
2013-04-23 15:11:28 +08:00
git checkout -- .
nullptr404
2013-04-23 15:23:45 +08:00
@myrual git checkout -f 这条命令不会删除新增的文件
nullptr404
2013-04-23 15:26:09 +08:00
@marvinlix git checkout -- . 这条命令不会删除新增的文件
nullptr404
2013-04-23 15:27:03 +08:00
貌似必须得要两条命令才可以
Jat001
2013-04-23 15:53:07 +08:00
推荐一个懒人办法,GitHub for Windows 和 GitHub for Mac 都有还原所有未 commit 的修改的功能。
wujiangcheng
2013-04-23 20:49:14 +08:00
git stash
新加的文件还在,但所有的修改都会抹去
bitsmix
2013-04-23 22:08:32 +08:00
@wujiangcheng 你这完全是误入歧途。
liubiantao
2015-10-09 11:02:14 +08:00
@wujiangcheng
@bitsmix

stash 挺好用的啊, git add . && git stash && git stash drop ,至少不会影响 .gitignore 里面的不跟踪的文件
netcatz
2016-04-01 16:45:00 +08:00
git fetch origin branch-name
git reset --hard origin/branch-name
netpi
2017-01-22 12:57:15 +08:00
之前总结了一份 [Git 常用的撤销操作]( http://www.netpi.me/uncategorized/gitrevoke/)
fffang
2020-09-18 10:27:32 +08:00
这就是我用 source tree 的原因,一个简单的撤销竟然这么麻烦。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/66718

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX