git撤消所有未提交或未保存的更改

我试图撤消自上次提交以来的所有更改。在查看this post后,我尝试了git reset--hard和git reset--hard HEAD。我用 head 现在在 18c3773 响应...但是当我查看我的本地源代码时,所有文件仍然存在。我缺少什么?

我试图撤消自上次提交以来的所有更改。在查看this post后,我尝试了git reset --hardgit reset --hard HEAD。我用 head 现在在 18c3773 响应...但是当我查看我的本地源代码时,所有文件仍然存在。我缺少什么?

2238

这将取消您可能使用git add暂存的所有文件:

git reset

这将恢复所有本地未提交的更改(应在 repo root 中执行):

git checkout .

您还可以将未提交的更改仅还原到特定文件或目录:

git checkout [some_dir|file.txt]

还有另一种方法来恢复所有未提交的更改(更长的类型,但从任何子目录工作):

git reset --hard HEAD

这将删除所有本地未跟踪的文件,因此只有git 跟踪的文件仍然存在:

git clean -fdx

警告:-x还会删除所有被忽略的文件,包括.gitignore指定的文件!您可能需要使用-n预览要删除的文件。

总结一下:执行的命令基本上等同于来自原始源的新鲜git clone(但它不会重新下载任何东西,所以速度更快):

git reset
git checkout .
git clean -fdx

典型的用法是在构建脚本中,当你必须确保你的树是绝对干净的-没有任何修改或本地创建的对象文件或构建工件,你想让它工作得非常快,而不是重新克隆整个存储库每一次。

196

如果您希望“撤消”所有未提交的更改只需运行:

git stash
git stash drop

如果您有任何未跟踪的文件(通过运行git status进行检查),则可以通过运行以下命令删除这些文件:

git clean -fdx

git stash创建一个新的 stash,它将变为stash @ {0}。如果您想先检查,可以运行git stash list查看您的 stash 列表。它看起来像:

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

每个 stash 都以上一个 commit message 命名。

64

我所做的是

git add . (adding everything)
git stash 
git stash drop

一个衬垫:git add . && git stash && git stash drop

M. Justin指出的较短版本

git stash-u &&git stash drop
29

添加此答案是因为前面的答案永久删除您的更改

安全的方式

git stash-u

说明:Stash local changesincludinguntracked changes (-uflag)。该命令保存您的本地修改,并恢复工作目录以匹配 HEAD 提交。

想要稍后恢复更改吗?

git stash pop

说明:该命令会将更改重新应用到当前工作树状态的顶部。

要永久删除更改吗?

git stash drop

说明:该命令将永久删除隐藏的条目

Link to git stash documentation

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(220)
VisualStudio代码总是显示gitlens 什么设置会导致这种情况
上一篇
Excel Floor函数
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(45条)