我现在已经配置了我的git来部署我的网站。我有一个主分支,这是网站的实时状态。如果我把这个推送到我的空白回收站,网站就会被上传。然后我有一个开发分支,在那里我可以测试所有东西。如果我将它与活动分支合并,然后推送它,它将变得活动起来。
但是我仍然有一个问题。我发现了2个解决方案的网站部署与git。这两种解决方案之间的区别只是所使用的钩子。对于第一个解决方案,它使用git pull来创建我的www根目录。这意味着我需要一个repo作为www root。第二个解决方案使用git checkout -f,它不一定是repo。我不知道哪一个更适合我的需要。
我的问题是,其他用户可能会使用ftp客户端在我的ftp服务器上添加/更改/删除文件。问题是使用git没有提交任何东西。现在,我需要在我的纯repo上获取我的主分支中的更改。但是我该怎么做呢?我认为,如果www root是一个存储库,我必须首先执行提交或其他操作,然后将其拉到我的纯存储库中。如果www root不是repo,这样做是可能的吗?如果我拉出主分支,我如何自动获取主分支中的www根目录的内容?
发布于 2011-11-24 00:56:11
我认为更标准的方法是git checkout -f
方法(或类似的方法,如git archive
),在这种方法中,你的www不是一个git repo,而是在你推送到它时使用钩子从一个空的repo中检出。
当你使用这样的东西进行部署时,你必须确保每个人都提交给git (理想情况下,你应该有CI,测试等),并将其推向生产。你不能让人通过FTP等上传到生产,同时也有这种机制在身边。这是在自找麻烦。
如果您不能阻止人们进行这样的更改,那么将www root作为repo更有意义,因为您可以跟踪更改并将它们推送到纯repo。即使它不是repo,您仍然可以在服务器上设置另一个repo,您可以从www root复制文件并提交它们。
发布于 2011-11-24 17:50:10
如果我正确理解了您的场景,那么最好不要从web根目录推送到您的纯repo,然后从该纯repo拉到您的本地计算机。将web根目录中的文件同步到本地存储库不是更好吗(例如,使用rsync),在本地计算机上处理所有git内容(diff,add,commit &c)。并将其推送到空的repo,这反过来可能会再次在您的web根目录中触发签出?
https://stackoverflow.com/questions/8240886
复制相似问题