【问题标题】:How to add ignored files from develpoment branch to a deploy branch in git如何将忽略的文件从开发分支添加到 git 中的部署分支
【发布时间】:2015-03-23 19:40:33
【问题描述】:

我有一个特定的问题,到目前为止我发现的场景,hereherehere(以及其他)并未完全涵盖。

我有一个 node.js 项目,并决定不在我的 git repo 中包含 node_modules 目录(Here 是一些赞成和反对的论点)。但是,我正在为测试服务器设置常规部署,为此我想部署完整的应用程序,并加载依赖项(也许将来我也会包括节点服务器,但现在只是依赖项)。

所以我创建了一个 test-deploy 分支,在该分支上我忽略了 vagrant 文件夹、一些静态页面等。我通过从 .gitignore 文件中删除它来包含 node_modules,然后将分支推送到我拥有的远程存储库设置挂钩通知我的测试服务器有一个新的部署,它应该从远程拉。

我现在如何再次检查我的开发分支?我试图将 node_modules 添加回 .gitignore 文件,但是当我签出我的开发分支时,git(正确)删除了我的所有节点模块,因为它们不被视为项目的一部分。

【问题讨论】:

    标签: node.js git gitignore


    【解决方案1】:

    在写这个问题时,我尝试了一些想法,并遇到了this 关于如何忽略以前提交的文件的答案。在此之后,在替换 .gitignore 文件中的 node_module 目录后,我运行了命令

    git rm -r --cached node_modules/*

    添加-r 标志来处理递归目录遍历。现在,当我切换回开发分支时,我的模块文件仍然存在(尽管我丢失了我的 Vagrant 盒子!)

    总而言之,为了在部署分支中包含被忽略的文件并且在您再次签出开发分支时不会丢失它们,您应该:

    • 检查您的部署分支。
    • 从 .gitignore 文件中删除 node_modules/*
    • 将您的模块文件添加到暂存和提交、推送或任何您需要做的事情
    • 再次将 node_mudules/* 添加到您的 .gitignore 文件中
    • 运行git rm -r --cached node_modules/* 再次从存储库中删除文件。
    • 现在您可以签出开发分支,而不会丢失该分支中的节点模块。

    【讨论】:

    • 随着工作流程的发展,这非常难看。您是否考虑过将模块放入另一个 repo(甚至只是开发 repo 中的不同分支)并独立检查它们(git submodule 留下可能影响您的生产部署的配置文件)?
    • 我在这个项目中查看了子模块和子树,但发现两者都有问题。你的想法不会打破在一个“包”中拥有一个完整项目的愿望吗?虽然我目前正在从我的远程仓库进行部署,但这可能很快就会改变。
    • 什么是“包”?我将其作为一个单独的 REPO 进行,有几个分支。在您的示例中,可能有一个带有主 DEV 分支、一个 PROD 分支和一个仅包含模块的分支的 repo。没有法律规定子模块必须是不同的 repo。只需在子仓库中签出不同的分支。
    猜你喜欢
    • 2014-12-22
    • 1970-01-01
    • 2016-06-21
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 2015-11-18
    • 2019-06-06
    相关资源
    最近更新 更多