git:撤消全部工做目录更改,包括新文件

如何删除工做目录中的全部更改,包括新的未跟踪文件。 我知道git checkout -f ,但它不会删除自上次提交以来建立的新的未跟踪文件。 html

有人知道怎么作吗? git


#1楼

我常常使用的最安全的方法: 安全

git clean -fd

根据/docs/git-clean页面的语法解释: 测试

  • -f (别名: --force )。 若是Git配置变量clean.requireForce未设置为false,则git clean将拒绝删除文件或目录,除非给定-f,-n或-i。 除非给出第二个-f,不然Git将拒绝使用.git子目录或文件删除目录。
  • -d 。 除了未跟踪的文件以外,删除未跟踪的目录。 若是未跟踪的目录由不一样的Git存储库管理,则默认状况下不会删除它。 若是您确实要删除此类目录,请使用-f选项两次。

正如评论中所提到的,最好作一个git clean -nd ,它会执行干运行并告诉你在实际删除它以前会删除什么。 ui

连接到git clean doc页面: https//git-scm.com/docs/git-clean spa


#2楼

git reset --hard # removes staged and working directory changes

## !! be very careful with these !!
## you may end up deleting what you don't want to
## read comments and manual.
git clean -f -d # remove untracked
git clean -f -x -d # CAUTION: as above but removes ignored files like config.
git clean -fxd :/ # CAUTION: as above, but cleans untracked and ignored files through the entire repo (without :/, the operation affects only the current directory)

要查看以前将删除的内容,而不实际删除它,请使用-n标志(这基本上是一个测试运行)。 当您准备好实际删除时,请删除-n标志: 版本控制

git clean -nfd code


#3楼

看看git clean命令。 htm

git-clean - 从工做树中删除未跟踪的文件 递归

经过从当前目录开始递归删除不受版本控制的文件来清除工做树。

一般,只删除git未知的文件,但若是指定了-x选项,则也会删除忽略的文件。 例如,这能够用于删除全部构建产品。


#4楼

对于全部未暂存的文件,请使用:

git checkout -- .

. 最后很重要。

你能够替换. 使用子目录名称仅清除项目的特定子目录。 这里特别提到了这个问题。


#5楼

如下做品:

git add -A .
git stash
git stash drop stash@{0}

请注意,这将丢弃您的未分阶段和分阶段的本地更改。 所以,在运行这些命令以前,您应该提交任何想要保留的内容。

一个典型的用例:您移动了不少文件或目录,而后想要恢复到原始状态。

致谢: https//stackoverflow.com/a/52719/246724

相关文章
相关标签/搜索