我试图围绕Git并使用(或不使用)部署网站.我一直在谷歌上搜索和阅读,但无法找到我的具体案例或疑虑的答案.我仍然处于这样做的计划阶段,但是我想从一开始就把它弄好,并找到适合我的工作流程.我将尽可能清楚地解释这种情况:
我有一个远程VPS,在www.example.com上运行我的实时网站,在dev.example.com上运行开发版本(它们位于/ var/www/example/htdocs /和/ var/www/example/subdomains/dev /).
开发是从/opt/git/example.git/中的裸存储库运行的.在裸仓中有一个主人和开发分支.我和其他开发人员都在本地计算机上拥有此存储库的副本.我们从开发部门撤出并从那里开始工作.我们的想法是dev.example.com拥有来自开发分支的最新代码,一旦经过适当的测试,我们就会合并到master中,添加一个标签并更新example.com(基本上就是这个git流).
我在Git IRC频道上找到的第一种方法是使用钩子来更新存储库,但这种感觉非常有限,有时也是不需要的,我想在推送后自己在服务器上运行命令,这会更新开发环境.另一个命令(或shell脚本)将在合并开发后从主分支更新实时站点.我也找到了卡皮斯特拉诺,但此刻似乎有点过头了.
在阅读时,我发现很多人建议在遥控器上再创建两个克隆:一个用于实时网站,一个用于开发网站,必要时可以分支.然而,这也使得版本控制文件可以通过网络访问,这是我不想要的.理想情况下,我想要一个没有任何git文件或文件夹的"干净"副本.
我还发现了一种使用git archive的方法,但是从我的裸存储库运行git archive只允许我存档master分支.我使用git archive --format=tar HEAD | (cd /var/www/example/htdocs/ && tar xf -)/opt/git/example.git/中的命令执行此操作.
我觉得这种git archive方法让我最接近答案,但我受限于缺乏Git知识.我可以改变命令使用分支而不是HEAD(当我尝试使用origin/master而不是HEAD时,我收到错误)?有谁能指出我正确的方向?
您可以使用任何树状结构(任何分支、标签、sha1 哈希等)作为 git archive 的参数。您不能使用 origin/master,因为您位于裸仓库中并且它没有来源。您需要使用本地分支名称,例如
git archive --format=tar develop
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
881 次 |
| 最近记录: |