如何删除工作目录中的所有更改,包括新的未跟踪文件。我知道git checkout -f
可以做到这一点,但是它不会删除自上次提交以来创建的新的未跟踪文件。
有人有任何想法如何做到这一点吗?
如何删除工作目录中的所有更改,包括新的未跟踪文件。我知道git checkout -f
可以做到这一点,但是它不会删除自上次提交以来创建的新的未跟踪文件。
有人有任何想法如何做到这一点吗?
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
-x
开关。它可能会删除您的本地配置文件,例如密码/数据库设置文件(例如 database.yml)。 - Borisgit clean -fxd
实际上可能会非常危险。你可能会永久删除一些非常重要但未被追踪的文件,如你的数据库等。使用时请小心。 - Mason Stewartgit clean -f -d
命令会删除被忽略文件夹中的文件。所以您本地的日志和其他东西都将被删除。通常这不是一个大问题,但最好知道这一点。 - cyriel最安全的方法,我经常使用:
git clean -fd
根据/docs/git-clean
页面的语法解释:
-f
(别名: --force
)。 如果Git配置变量clean.requireForce未设置为false,则git clean将拒绝删除文件或目录,除非给出-f、-n或-i。 Git将拒绝删除带有.git子目录或文件的目录,除非给出第二个-f。-d
。 除了未跟踪的文件之外还要删除未跟踪的目录。 如果一个未跟踪的目录由另一个Git存储库管理,则默认情况下不会删除它。 如果您确实想删除这样的目录,请两次使用-f选项。正如评论中所提到的,最好做一个git clean -nd
干扰运行,并在实际删除之前告诉您将删除什么。
git clean
文档页面链接:https://git-scm.com/docs/git-clean
git clean -fd .
删除文件前,我总是先执行 git clean -nd .
。 - tbeargit clean
命令之前,你可以先进行一个空的 add -A
+ commit -a
+ revert head
操作。对于大型场景来说,逐个检查每个删除操作并不太切实际。此外,干运行并不是解决问题的万能药:如果你在检查过程中漏看了某些内容或者出现了错误该怎么办呢? - Paceriergit checkout -- .
没有任何作用。 - Wassadamo你可以分两步实现:
git checkout -f
git clean -fd
查看 git clean
命令。
git-clean - 从工作树中删除未跟踪的文件
递归地从当前目录开始,通过删除不受版本控制的文件来清理工作目录。
通常只会删除 git 不知道的文件,但是如果指定了 -x 选项,则也会删除被忽略的文件。例如,这可以用于删除所有构建产物。
git clean -i
并从菜单中选择了“clean”选项 - 这最终删除了新文件。 - Sanygit add -A .
git stash
git stash drop stash@{0}
请注意,这将放弃您未提交和已提交的本地更改。因此,在运行这些命令之前,请先提交您想要保留的任何内容。git stash drop
? - maikelgit add -A .
)。我因为没有文件匹配而浪费了30分钟。谢谢! - user9869932我认为这个操作会 (警告:接下来的将会抹掉所有内容)
$ git reset --hard HEAD
$ git clean -fd
reset
用于撤销改动。使用clean
可删除任何未跟踪的f文件和d目录。
git pull
仍然会得到冲突警告:CONFLICT (content): Merge conflict in...
我只能通过执行 git pull --strategy=ours
来解决这个问题。 - rubo77git reset --hard origin/{branchName}
git clean -i
命令会先展示需要删除的文件,等待你确认后再进行删除。在处理不应被意外删除的重要文件时,我发现这个命令非常有用。
更多信息请参见 git help clean
,其中包含一些其他有用的选项。
如果您想放弃所有更改,您可以在.gitconfig
的别名中使用任何有效选项。例如:
[alias]
discard = "!f() { git add . && git stash && git stash drop stash@{0}; }; f"
git discard
git help reset
和git help clean
呢? - SHernandezgit stash
(将修改的文件保存在堆栈上)然后使用git stash drop
(删除它)。 - Tiago Martins Peres