是否可以在不忽略文件的情况下忽略git中目录的历史记录?

时间:2012-10-04 14:23:01

标签: git

我的应用程序中有一个目录,其中包含已编译的文件(特别是在rails app中的public / assets文件夹,其中包含从CoffeeScript / Sass文件编译的JS / CSS版本)。

我不想完全忽略该目录,因为我需要在respositry中存在最新的编译版本,而我更喜欢git没有跟踪目录中文件的所有更改,因为我不喜欢我希望我的git资源库能够随着我不关心的文件历史不断增长。

这有可能吗?我想要做到这一点我疯了吗?

1 个答案:

答案 0 :(得分:1)

是的,你对所有IMO的编译对象都很疯狂,但似乎Heroku也很疯狂。

在这种情况下,我将脚本中的部署过程包装到:

  1. 分支
  2. 编译
  3. 提交已编译的资产(ick)
  4. 强制推送
  5. 重置本地分支HEAD,以便将分支点保留为标记,但带有已编译资产的孤立提交可以进行垃圾回收
  6. 切换回原始分支
  7. 请注意,只要您提供某种方式来跟踪它,您仍然可以在GC清除之前随时检出分支并将其再次转发到已部署的提交(提交的注释) SHA会工作),如果你太晚了,你仍然可以从源代码重现构建。


    好的,如果你有多个回购,这显然会失败。我无法找到解决此问题的方法,但您可以拥有一个运行CI环境的主/部署代理。

    定期(非强制)仅将源推送到主部署仓库,并让它自动执行分支/编译/部署/丢弃步骤。如果您希望使用主存储库在工作环境之间同步更改而不总是进行部署,则可以让它仅在按下标记时运行部署顺序。