如何恢复未提交的更改,包括文件和文件夹?
是否有一个git命令来恢复工作树和索引中的所有未提交的更改,还删除新创build的文件和文件夹?
你可以运行这两个命令:
# Revert changes to modified files. git reset --hard # Remove all untracked files and directories. (`-f` is `force`, `-d` is `remove directories`) git clean -fd
如果只想在当前工作目录中恢复更改,请使用
git checkout -- .
希望有所帮助。
使用“git checkout – …”放弃工作目录中的更改
git checkout -- app/views/posts/index.html.erb
要么
git checkout -- *
删除在git状态下对非挂起文件所做的所有更改
modified: app/controllers/posts.rb modified: app/views/posts/index.html.erb
一个不平凡的方法是运行这两个命令:
-
git stash
这将移动你的变化到藏匿处,使你回到头的状态 -
git stash drop
这将删除最后一个命令中创build的最新存储。
git clean -fd
没有帮助,新的文件仍然存在。 我所做的是完全删除所有的工作树,然后
git reset --hard
请参阅“ 如何在git中清除我的本地工作目录? ”以获取build议以添加-x
选项来清除:
git clean -fdx
注意 -x
标志将删除Git忽略的所有文件,所以要小心(请参阅我参考的答案中的讨论)。
我想你可以使用下面的命令: git reset --hard
请注意,可能还有文件似乎不会消失 – 它们可能未经编辑,但git可能已经标记为由于CRLF / LF更改而被编辑。 看看你最近是否对.gitattributes
进行了一些修改。
在我的情况下,我已经将CRLF设置添加到.gitattributes
文件中,因此,所有文件都保留在“修改的文件”列表中。 更改.gitattributes设置使它们消失。
安全而漫长的道路:
-
git branch todelete
-
git checkout todelete
-
git add .
-
git commit -m "I did a bad thing, sorry"
-
git checkout develop
-
git branch -D todelete
使用:
git reset HEAD filepath
例如:
git reset HEAD om211/src/META-INF/persistence.xml
我通常用这种方式运作良好:
mv fold/file /tmp git checkout fold/file