git 命令清除未跟踪的文件并恢复整个工作树中修改的文件

git command to clean untracked files and revert modified files in the entire working tree

我正在尝试清除整个树中存在的所有未跟踪文件和修改过的文件。

例如:- dir/sub_dir/end 是一个工作树。 cwd 是 end 当我在工作树中执行 git status -sureturns all the modified and untracked files

git status -su
 M ../rahul.txt
?? nuke1.txt

现在,当我位于树的顶部时 i.e. dir directory 我想删除未跟踪的文件。 我做了 git clean -f 但文件 nuke1.txt 没有被清理。

所以,

  1. 如何从树的顶部递归清理文件?
  2. 如何从最内层目录或树中的任何目录递归清除所有未跟踪的文件?
  3. 如何将所有修改后的文件检出到原始状态?
  1. 从树的顶部递归清理文件:

    排除被忽略的文件:git clean -df 包括被忽略的文件:git clean -dfx

    重要说明:我强烈建议您在 运行 执行命令之前使用 -n 标记干 运行以上

  2. 根据git clean documentation:

    [git clean] Cleans the working tree by recursively removing files that are not under version control, starting from the current directory.

    所以基本上与 1 相同的答案。

  3. 要将 所有 文件检出到原始状态,您可以 运行 git reset --hard。但是,您应该非常谨慎地使用此命令,因为它是不可逆的,即您将丢失所有更改。

作为额外的提示,我强烈建议您阅读以下精彩文章,这些文章将为您提供有关这些命令及其使用方法的一些解释:

  1. Undoing Changes(来自 atlassian)
  2. Reset, Checkout, and Revert(同样来自 atlassian)
  3. Reset Demystified(来自git-scm)