我所处的环境是开发人员直接使用实时部署 Web 服务器上的脚本和图像文件。这很可怕,并且已经导致了一些问题,但到目前为止问题出乎意料地少。这些更改根本不使用源代码控制,更改是在实时服务器上进行的,并且仅在实时服务器上进行。我不知道如何做到当我将更改部署到实时 Web 服务器时,其他开发人员在实时 Web 服务器上所做的更改会被保留/合并。这个问题似乎会使使用源代码控制的情况变得更糟,而不是更好。
我个人已经设置了 git 和 svn 服务器,并在过去几年中在许多桌面应用程序和移动应用程序项目中使用 git 和 svn 进行版本控制。但这让我很困惑。
答案1
最佳实践是将 git 作为部署的一部分。因此,你会发现关于 git 其他用途的答案相对较少。
话虽如此,git 的使用方式有很多。如果您的部署是在实时服务器上,而不是从 git 部署,那么将更改提交到 git 仍然很有价值,这样您至少可以看到何时更改了什么,并回滚内容。您将失去合理的注释和将更改分组到提交中,这样您就可以快速看到要回滚到的位置,并且可以看到不同文件中的哪些更改可能相互依赖。
完全可以让您的实时代码成为 git 工作目录,并且您可以从 cron 每隔一段时间自动更新存储库。
etckeeper(https://github.com/joeyh/etckeeper) 在某些方面是可比的。它旨在记录服务器 /etc 目录中的更改,而不是网站,但除此之外,它与您所想的非常相似。它可能在提交钩子等中隐藏了一些有用的想法,但它也非常复杂,因为它涵盖了几个不同的 VCS 系统,并与多个操作系统兼容。