How to revert uncommitted changes including files and folders?
是否有一个git命令来恢复工作树和索引中所有未提交的更改,以及删除新创建的文件和文件夹?
您可以运行以下两个命令:
1 2 3 4 5 | # Revert changes to modified files. git reset --hard # Remove all untracked files and directories. (`-f` is `force`, `-d` is `remove directories`) git clean -fd |
如果只想还原当前工作目录中的更改,请使用
1 | git checkout -- . |
在此之前,您可以列出将被还原的文件,而不必实际执行任何操作,只需检查将发生什么,使用:
1 | git checkout -- |
使用"git checkout--…"放弃工作目录中的更改
1 | git checkout -- app/views/posts/index.html.erb |
或
1 | git checkout -- * |
删除对处于git状态的未分页文件所做的所有更改,例如
1 2 | modified: app/controllers/posts.rb modified: app/views/posts/index.html.erb |
一个非常重要的方法是运行这两个命令:
1 | git clean -fd |
没用,新文件还在。我所做的是完全删除所有工作树,然后
1 | git reset --hard |
请参见"如何在Git中清除本地工作目录?"关于增加
1 | git clean -fdx |
注:
我想您可以使用以下命令:
请注意,可能仍然有一些文件似乎不会消失-它们可能未被编辑,但由于CRLF/LF更改,Git可能已将它们标记为正在编辑。看看你最近是否对
在我的例子中,我已经将CRLF设置添加到
如果您有一个未提交的更改(仅在工作副本中)希望在最近的提交中恢复到该副本,请执行以下操作:
1 | git checkout filename |
您只需使用以下git命令,它可以恢复在存储库中所做的所有未提交的更改:
1 | git checkout . |
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master) $ git status On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use"git add <file>..." to update what will be committed) (use"git checkout -- <file>..." to discard changes in working directory) modified: application/controllers/Drivers.php modified: application/views/drivers/add.php modified: application/views/drivers/load_driver_info.php modified: uploads/drivers/drivers.xlsx no changes added to commit (use"git add" and/or"git commit -a") ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master) $ git checkout . ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master) $ git status On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working tree clean |
我通常用这种方式工作得很好:
1 2 | mv fold/file /tmp git checkout fold/file |
一条安全而漫长的路:
用途:
1 | git reset HEAD filepath |
例如:
1 | git reset HEAD om211/src/META-INF/persistence.xml |