如何在Github Release上保存dist / build文件,但不在主版本中保存

时间:2018-06-21 17:32:01

标签: git github

我正在构建一个库,该过程在/dist中生成文件,该目录在版本控制中已被我忽略。为了部署该库,我想在Github发行版中拥有/dist/*文件,但不提交给主服务器,因为我发现JQuery的开发人员正在这样做:

但是,我找不到办法。另外,我不确定这是否是个好习惯,但这看起来很干净。

感谢您的帮助。

最好, 阿尔瓦罗。

1 个答案:

答案 0 :(得分:2)

jquery所做的是创建您可以称为“匿名分支”的内容。也就是说,从拓扑的角度来看,每个发行版都从master分支出来,并在该分支上创建dist文件夹;但他们没有创建git称为分支的分支(或者至少不保留分支);相反,他们通过在标签的末尾放置一个标签来保持“匿名分支”的生命。

例如,如果您是主用户并且准备从当前版本创建发行版,则可以

git checkout --detach
# generate the dist/ folder
git commit -m 1.0.37
git tag v1.0.37
git checkout master
# continue development

您最终会得到类似

的信息
A -- B -- C -- D -- E -- F <--(master)
      \         \         \
       B+        D+        F+
        ^v1.0.17  ^v1.0.25  ^v1.0.37

带标记的版本具有dist文件夹,而主线则没有。

那是“如何”。您还询问这是否是一个好的解决方案。这不是我个人会使用的,但通常不会对技术造成损害。如果要在回购中使用部署软件包,这是一种方法。

(我更倾向于酌情使用npm,nuget或maven等将它们打包;并将它们相应地保存在工件仓库中。但是如果部署包不是很大,或者至少是各个版本的版本相似,因此增量压缩可能会使它们避免增加回购的大量存储量,然后我可以看到将它们集成到历史记录中/在一处就可以发现哪些优势。)

我想最重要的是,争论一个解决方案是否“干净”通常是徒劳的,因为它太主观了。如果您可以将其转换为客观可衡量的标准,则可以决定您的解决方案是否满足这些标准。我个人的标准是赞成使用部署工具进行部署,并且仅将git用于源代码控制。但是,如果部署需求很简单,那么很多人会从结合这些功能中获益良多。