如何从工作目录删除所有更改,包括新的未跟踪文件。我知道git checkout -f这样做,但它不会删除自上次提交以来创建的新的未跟踪文件。

有人知道怎么做吗?


当前回答

git reset --hard origin/{branchName}

它将删除所有未跟踪的文件。

其他回答

以下工作:

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

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

一个典型的用例:您移动了许多文件或目录,然后希望恢复到原始状态。

学分:https://stackoverflow.com/a/52719/246724

git reset --hard origin/{branchName}

它将删除所有未跟踪的文件。

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

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清洁文档页面: https://git-scm.com/docs/git-clean

如果希望放弃所有更改,可以在.gitconfig中的别名中使用任何有效选项。例如:

[alias]
    discard = "!f() { git add . && git stash && git stash drop stash@{0}; }; f"

用法:git discard

这可能是一个新手的答案,但是: 我在窗口中使用TortoiseGit,它有一个很好的功能叫做REVERT。 所以你要做的是恢复你的本地非分期非推送的更改:

调出所需文件夹的上下文菜单并选择恢复, 它显示了一个恢复弹出窗口,您可以选择已更改的文件恢复/恢复。 如果你还想删除添加的文件(还没有在git中),点击commit(从相同的上下文中) 菜单),它会弹出Commit弹出窗口,然后显示添加的文件 右键单击它们并选择删除。但不要按“提交” BTN在这个弹出窗口,因为你不想提交,但只看到添加 文件,然后从这里删除。