为什么git作弊干净的命令?

时间:2016-02-24 22:24:14

标签: git

我们在项目中使用git。 git版本2.5.0 导致进一步混淆行为的原因是什么?

git@ip5server:~$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    app/addons/arliteks/

nothing added to commit but untracked files present (use "git add" to track)
git@ip5server:~$ git clean -dn
Would remove app/addons/arliteks/
Would remove design/
Would remove js/
Would remove var/langs/en/

为什么我在第一个命令中看不到所有4个目录?

2 个答案:

答案 0 :(得分:2)

Git不跟踪目录,只跟踪文件。当您在git status输出中看到一个目录时,它实际上是指该目录中的文件。一个奇怪的副作用是空目录永远不会显示在git status中。当然,你不能git-add一个目录(好吧,你可以,但它会在目录中添加文件,而不是目录本身。)

但是当您执行git clean -dn时,-d选项意味着删除 untraked 目录。也就是说,里面没有跟踪文件的目录。

总而言之,您的第一个目录是非空的。其他三个都是空的。

答案 1 :(得分:0)

git clean

查看Capital X与较低x之间的差异:

git clean -Xfd // capital X 
git clean -xfd // small x will remove all the 

阅读有关此清洁命令的更多信息

  

-x (小写)

     

请勿使用标准的忽略规则从.gitignore读取 ...但仍然使用-e选项提供的忽略规则。

     

这允许删除所有未跟踪的文件,包括构建产品。

     

可以使用它(可能与git reset一起使用)来创建一个pristine工作目录来测试干净的构建。

     

-X (大写)

仅删除Git忽略的文件。
这可能有助于从头开始重建所有内容,但保留手动创建的文件。