我正在尝试实现一个基于 git 的部署过程,例如http://danbarber.me/using-git-for-deployment/来部署 Web 应用程序。基本上它由实时服务器上的两个存储库组成:
- 一个裸仓库,您在其中推送“集线器”
- Web 服务器公共目录中的普通存储库,您从“集线器”中提取。如果集线器具有适当的更新后挂钩,则会自动执行此操作。
问题是在我的项目中,我有很多目录,例如 /upload/,其中包含开发期间的示例数据和网络服务器上的真实实时数据。
理想情况下,我想将 upload/ 文件夹保留在本地存储库中,但不将其拉到实时存储库中。现在,“部分”拉动它似乎是不可能的,不是吗?
因此,即使不是最佳解决方案(我无法在本地存储库中克隆示例数据),我也会尝试忽略这些文件夹,但是:
- 我将 upload/ 文件夹添加到本地和实时存储库的 .gitignore 中。
- 我用 git rm --cached upload/ 删除了它
- 我将项目推到了裸露的“中心”仓库
- 在我从集线器拉出的实时存储库中
- 我收到错误:未跟踪的工作树文件将被合并覆盖...上传/xxx
在我看来,upload/ 文件夹仍然在某个地方......确实,在写这篇文章时,我看到从集线器克隆,文件夹 upload/ 也被克隆了!
唯一的解决方案是从所有项目历史记录中完全删除该文件夹,就像我在几个问题中看到的那样?
这是否会迫使在不同分支上工作的所有其他同事进行一些混乱的变基?
解释和掌握这一切可能很困难,但欢迎提出任何想法。