如何防止分支专属忽略文件进入Docker构建?多分支部署方案咨询
Django多分支部署的文件残留问题与方案选择
- 我的Django项目包含两个活跃分支:
main分支:用于生产环境部署feature-a分支:用于预发布环境部署
- 两个分支均部署至Fly.io,但对应不同的应用/机器。
当执行git switch main切换分支后,原本仅存在于feature-a分支的部分目录/文件会保留在磁盘上。这些文件在IDE中被高亮标记为已忽略,git status --short显示其为忽略/未追踪状态。我担心这些残留文件会被包含进Fly.io的应用部署包,影响部署效果。
操作示例
git switch staging # 该分支包含main分支没有的app/目录 git switch main # 来自staging分支的部分忽略/未追踪目录仍留存于磁盘 ls # 目录依然存在 git check-ignore -v some-ignored-file # 显示该文件已被忽略
我想到的几种可行方案
- 方案1:在同一工作目录切换分支,依赖
.dockerignore文件排除分支专属的忽略文件。 - 方案2:部署前执行
git clean -fdX或git clean -fd命令清理文件,但之前因此误删过需要保留的本地忽略文件,存在风险。 - 方案3:为
main和feature-a分支分别使用独立的git worktree,各自拥有专属的virtualenv和本地文件。 - 方案4:为两个分支创建独立的Git克隆仓库。
疑问
对于需要单独部署不同分支的项目,为每个部署分支使用独立git worktree是否为推荐方案?或是有更简便的方法确保Docker构建仅包含当前检出分支的文件?此前单工作目录的方式一直运转正常,但现在觉得需要优化部署流程。
补充说明
我打算采用独立克隆仓库的方案,并将其设为只读,不在其中保留任何未追踪文件。尝试执行git clean -ndX命令时,输出内容远超预期,看来我的工作目录已过于杂乱,难以安全追踪所有内容并进行部署;更糟的是,VS Code已停止在编辑器中高亮标记未追踪/忽略文件,我不得不手动执行git status --short --ignored来查看相关内容。
内容的提问来源于stack exchange,提问作者Vellutante
相关产品推荐
相关产品推荐

