如何删除从Git源代码派生的二进制文件,但仍然部署到远程存储库?

如何删除从Git源代码派生的二进制文件,但仍然部署到远程存储库?,git,version-control,Git,Version Control,目前,在我工作的地方,我们使用Git进行版本控制(这是我们相对较新的设置),有以下设置(用于ASP.NET web开发): “开发”服务器,是运行IIS的远程服务器,可在我们的内部网络上访问。这是我们部署稳定开发网站构建的地方,因此它们可以在整个公司中查看。在这个服务器上,我们为每个项目(通常是一个网站)创建一个Git存储库 然后,开发人员将这个存储库拉到他们的本地机器上,并在本地对其进行操作,在本地提交任何更改,然后最终将这些更改推送到远程存储库(开发服务器),在那里它们被合并到主分支中 我们

目前,在我工作的地方,我们使用Git进行版本控制(这是我们相对较新的设置),有以下设置(用于ASP.NET web开发):

“开发”服务器,是运行IIS的远程服务器,可在我们的内部网络上访问。这是我们部署稳定开发网站构建的地方,因此它们可以在整个公司中查看。在这个服务器上,我们为每个项目(通常是一个网站)创建一个Git存储库

然后,开发人员将这个存储库拉到他们的本地机器上,并在本地对其进行操作,在本地提交任何更改,然后最终将这些更改推送到远程存储库(开发服务器),在那里它们被合并到主分支中

我们所面临的问题是,当源代码内置到程序集(DLL)中时,这些程序集就会被添加到本地Git存储库中,并将其与不应该存在的二进制文件(因为它们可以从源代码派生)混在一起。但是,如果我们不包括DLL(即将它们放入.gitignore),那么当我们将更改推送到远程存储库时,/bin文件夹中的DLL将丢失,站点将无法工作。唯一的解决方法是在推送更改后在开发服务器上重建站点


这有什么办法吗?理想情况下,我们需要一种方法来忽略本地存储库中的DLL,但仍然将它们“推送”到远程服务器?或者在推送更改时以某种方式触发远程服务器上的构建

听起来你需要研究“持续集成”。您可以将生成服务器设置为在每次有人提交时运行干净的生成,也可以在一天中的特定时间进行配置。如果构建成功(例如部署到测试服务器),还可以触发脚本运行。此外,您还可以让它运行单元测试,并向团队发送包含任何错误的电子邮件等

我不知道如何在.net中构建,但我最喜欢的CI服务器是jenkins。

还有其他功能,例如巡航控制


两者都是免费的。

听起来你需要研究“持续集成”。您可以将生成服务器设置为在每次有人提交时运行干净的生成,也可以在一天中的特定时间进行配置。如果构建成功(例如部署到测试服务器),还可以触发脚本运行。此外,您还可以让它运行单元测试,并向团队发送包含任何错误的电子邮件等

我不知道如何在.net中构建,但我最喜欢的CI服务器是jenkins。

还有其他功能,例如巡航控制


这两个分支都是免费的。

您可以选择拥有两个并行分支:一个分支只有“干净”提交,每次您提交一个要推送到生产机器上的提交时,您都会切换到“二进制”分支,(重新)将“干净”分支合并到其中,生成、添加生成的二进制文件、提交和推送


另一种考虑的方法可能是停止使用Git进行部署,并使用一个专门的工具,如“代码> RSYNC < /Cord>”来推动二进制文件的生成。

你可以选择有两个并行分支:一个只会有“干净”的提交,并且每次提交一个提交到生产机器上的提交时,切换到“二进制”分支,(重新)将“干净”分支合并到其中,构建、添加生成的二进制文件、提交和推送


另一种考虑的方法可能是停止使用Git进行部署,并使用一个专门的工具,如“代码> RSYNC < /Cord>”来推动二进制文件的生成。

在远程的远程接收邮件挂钩上接收POST钩子。