我可以将“ git clean -fd”限制为一个目录吗?

时间:2019-07-30 17:52:41

标签: git

是否可以将git clean -fd的范围限制为单个目录?理想情况下,我会搜索类似
的东西 git clean -fd --include=./delete_only/files_and_dirs_below_me/*

背景:
我的Web项目有一个bash更新脚本。工作流程如下:

  1. 在prod env上:将当前配置导出到git跟踪目录config/sync
  2. 关于prod:git push&commit
  3. 在开发环境中:git pull
  4. 在开发人员上:从config/sync
  5. 导入配置
  6. 在开发人员:进行更新
  7. 关于开发人员:导出配置
  8. 关于开发人员:git push&commit
  9. 关于产品:git pull
  10. 在Prod上:导入配置

问题是“导出当前配置”会在git跟踪的.yml目录中创建和/或删除一堆config/sync文件。例如。如果在prod env上禁用模块foo,则config export将删除相应的config/sync/foo.yml文件。但是,如果在dev上也启用了该特定模块,则该文件在dev上已经存在,并且在第3步之后不会被删除,从而导致在第4步无效的配置导入,而模块foo仍处于启用状态。

我现在想添加步骤
 3.5 git clean -fd --include =。/ config / sync / *

 8.5 git clean -fd --include =。/ config / sync / *
对于无人看管的脚本来说足够安全。

几年前,我遇到了一个很糟糕的经历,即维护脚本失败,基本上执行了cd some_dir && rm -rf(猜测远程服务器无法访问时发生了什么……),而我这次要更加小心。

1 个答案:

答案 0 :(得分:0)

git clean接受零个或多个路径参数。根据{{​​3}}:

  

如果给出任何可选的<path>...参数,则仅影响那些路径。

因此,简单的git clean -fd config/sync应该可以解决问题。