是否有git命令可以恢复工作树和索引中的所有未承诺的更改,还可以删除新创建的文件和文件夹?

有帮助吗?

解决方案

您可以运行这两个命令:

# 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- ...”丢弃工作目录的更改

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 这将删除最后一个命令中创建的最新藏匿处。
git clean -fd

没有帮助,新文件仍然存在。我所做的就是完全删除所有工作树,然后

git reset --hard

看 ”我如何在GIT中清除本地工作目录?“为了添加建议 -x 清洁选项:

git clean -fdx

笔记 -x 标志将删除GIT忽略的所有文件,因此请小心(请参阅我所指的答案中的讨论)。

我认为您可以使用以下命令: git reset --hard

请注意,可能仍然有似乎不会消失的文件 - 可能未经编辑,但由于CRLF / LF更改,GIT可能已将其标记为编辑。查看您是否进行了一些更改 .gitattributes 最近。

在我的情况下,我将CRLF设置添加到 .gitattributes 因此,文件和所有文件保留在“修改后的文件”列表中。更改.gitattributes设置使它们消失了。

如果您希望在最新提交中将其恢复为副本,请执行以下操作:

git checkout filename

您可以使用sustal git命令,该命令可以恢复存储库中的所有未承诺的更改:

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'.

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

引入了git 2.23 git restore 命令恢复工作树文件。

https://git-scm.com/docs/git-restore

还原当前目录中的所有文件

git还原。

如果要还原所有C源文件以匹配索引中的版本,则可以执行

git还原'*.c'

安全而漫长的路要走:

  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

我通常会以这种方式运作良好的方式:

mv fold/file /tmp
git checkout fold/file

利用:

git reset HEAD filepath

例如:

git reset HEAD om211/src/META-INF/persistence.xml
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top