git命令用于清除未跟踪的文件并还原整个工作树中的已修改文件

时间:2015-04-13 07:11:26

标签: git tree

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

例如: - dir/sub_dir/end是一张工作树。 cwd是end 当我在工作树中git status -su returns 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 个答案:

答案 0 :(得分:1)

  1. 从树顶部递归清理文件:

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

    重要提示:我强烈建议您在运行上述命令之前使用-n标志进行干运行

  2. 根据git clean documentation

      

    [git clean]通过递归删除不是的文件来清理工作树   在版本控制下,从当前目录开始。

    与1基本相同的答案。

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

  4. 作为补充提示,我强烈建议您阅读以下精彩文章,这些文章将为您提供有关这些命令以及如何使用它们的一些解释:

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