首页 > 解决方案 > 我可以将“git clean -fd”限制为单个目录吗?

问题描述

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

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

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

.yml问题是“导出当前配置”在 git 跟踪config/sync目录中创建和/或删除一堆文件。例如,如果我在 prod env 上禁用模块foo,配置导出将删除相应的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(猜猜远程服务器无法访问时发生了什么......),这次我试图更加小心。

标签: git

解决方案


git clean接受零个或多个路径参数。根据手册

如果给出任何可选<path>...参数,则只有那些路径受到影响。

所以一个简单的git clean -fd config/sync应该做的伎俩。


推荐阅读