运行git clean对将来的签出是否有某种类型的永久性影响?

运行git clean对将来的签出是否有某种类型的永久性影响?,git,Git,我有一个非常简单的git存储库,我一直在使用它来学习git。除了master,我还有两个分支机构javafx,netty。我在每个分支中创建了一个新的项目模块。对于netty分支,项目布局如下所示: sandbox netty sandbox javafx 对于javafx分支,项目布局如下所示: sandbox netty sandbox javafx 每当我在分支之间切换时,我的工作目录中仍然有来自另一个分支的目录。我切换了很多分支,额外的目录从未被删除。我决定我应该

我有一个非常简单的git存储库,我一直在使用它来学习git。除了
master
,我还有两个分支机构
javafx
netty
。我在每个分支中创建了一个新的项目模块。对于
netty
分支,项目布局如下所示:

sandbox
  netty
sandbox
  javafx
对于
javafx
分支,项目布局如下所示:

sandbox
  netty
sandbox
  javafx
每当我在分支之间切换时,我的工作目录中仍然有来自另一个分支的目录。我切换了很多分支,额外的目录从未被删除。我决定我应该学会正确清理我的工作目录,在
netty
分支上,我运行:

git clean -fd
它完全符合我的预期,但现在Git的签出行为似乎有所不同。当我从
netty
分支切换到
javafx
分支时,它就像过去一样;额外的
netty
目录保留在我的工作目录中。但是,现在当我从
javafx
分支切换到
netty
分支时,
javafx
目录会自动删除/清理

然而,如果我在另一台机器上克隆repo,它仍然可以像以前那样工作;所有未跟踪的文件都保留在我的工作目录中。git clean-fd是否具有某种类型的永久性效果

编辑:再玩一段时间后,我意识到这与我的IDE(IntelliJ IDEA)有关。当我签出另一个不包含这些项目模块的分支时,Git似乎无法删除活动项目模块的目录

例如,如果我在
netty
分支上签出
javafx
分支,Git似乎无法删除
netty
目录。但是,如果我在没有重新生成IDEA项目的情况下重新签出
netty
分支,Git在删除
javafx
目录时没有问题

在我的IDE阻止这些目录被删除一次之后,它们在我的本地repo中作为未跟踪的文件永远挂起,直到我运行
git clean-fd
。即使关闭IDE并在分支之间切换,也不会改变任何事情

如果我在没有启动IDE的情况下克隆存储库并签出分支,那么一切都会像我预期的那样工作。当我签出一个新分支时,不相关的目录将被删除


如果另一个进程阻止它在签出新分支时删除不需要的文件,Git会如何反应?

来自Git帮助的手册页

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

通常,只删除git未知的文件,但如果指定了-x选项,则也会删除被忽略的文件。例如,这对于删除所有生成产品非常有用

如果有选择的话。。。如果给定参数,则只影响那些路径

本质上,git clean-fd删除本地副本中所有未跟踪的文件和目录,但.gitignore中忽略的文件除外


我怀疑你已经开始在其中一个分支中错误地跟踪生成的文件

当我运行
git status
时,显示为未跟踪。我有更多的时间来使用它,这与我的IDE有关。我将编辑问题以提供更多信息。我决定接受此答案,因为它从技术上回答了问题;文档清楚地表明git clean没有永久性的效果。顺便说一句,自从我开始确保.gitignore文件设置正确以来,我就没有遇到过这个问题。+1因为我不知道
git clean
;我一次又一次地输入
gitls files-I-o-x\*| xargsrm