我了解工作流程的基本原理和工作原理,以及不了解的内容。但是,假设我的linux工作站上有一个本地存储库。现在,我还有一个生产箱,位于远程数据中心的VPS上。如果我想把新代码推到生产环境中,最好的方法是什么?我不想在盒子上有一个Git代码库,它应该只有我的web代码(php/mysql)。
如何在不发送所有文件的情况下将新的更改推送到生产设备?
发布于 2009-09-01 20:05:48
管理web内容的一种方法是在生产设备上创建一个“裸”存储库。这是一个没有工作副本的存储库。当您想要部署新代码时,您将推送到此存储库以更新它。然后,登录到生产环境,并从裸存储库中拉入您的实际部署目录(也是Git存储库)。
请注意,生产环境中的这两个存储库都不需要被视为“主”存储库;您可以将源代码保存在其他地方,并在需要时直接推送到生产环境。
您需要两个存储库的原因是,Git不支持直接推送到具有工作副本的存储库。Git过去一直允许您这样做(通常会带来意想不到的后果),但较新的版本强烈建议您避免以这种方式推送。
我使用上面的技术来管理一些网站,它工作得很好。一个好处是,如果我真的需要的话,我可以在生产机器上打补丁,在那里提交它,然后将更改拉到我的开发存储库中。以这种方式进行的更改不太可能意外丢失。
发布于 2009-09-01 20:06:35
所以我认为你可能对仓库的工作方式有误解,你的仓库可以放在你想要的任何地方……这真的无关紧要,它甚至可以在github或VPS上。基本原理是,当你工作时,你提交,(使用git,这些提交到本地存储库),当你准备好应用这些更改时,你“推送它们”,这将发送增量(仅对你的代码所做的更改)。
当您准备好在您的生产机器上进行更改时,您将登录到您的服务器,并从您的存储库中提取更改并进行部署(这可能包括重新启动或迁移数据库...这通常被引用为一个食谱)
https://stackoverflow.com/questions/1364352
复制相似问题