如何恢复未提交的更改,包括文件和文件夹?

是否有一个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 

一个不平凡的方法是运行这两个命令:

  1. git stash这将移动你的变化到藏匿处,使你回到头的状态
  2. 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设置使它们消失。

安全而漫长的道路:

  1. git branch todelete
  2. git checkout todelete
  3. git add .
  4. git commit -m "I did a bad thing, sorry"
  5. git checkout develop
  6. 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