Jan*_*nis 10 git git-push git-add git-remote
如何在Git中设置远程目录,我可以在本地将阶段分支推送到远程并查看登台服务器上的实时更改,例如stage.example.com?
我有这个概念(我离开SVN的部分原因)是我可以维护(本地)3个不同的"主"分支,如下所示:
我拥有的想法(以及其他人声称的可能)是我可以从我的本地计算机维护这些远程"站点",而无需经常登录我的远程服务器shell并运行svn update(在我当前的svn工作流程中,我需要这样做所有时间......)或当然在我的Git工作流程上运行git pull在遥控器上.
如何设置远程目录,以便我可以在本地将我的stage分支推送到staging remote server并立即查看(例如) 更改stage.example.com?
那么一旦stage是所有好的和测试我也只是在本地能够push对live远程做出这些改变,我在测试的stage实际网站.
甚至可以这样做,还是我在这里得到疯狂的想法,这些想法根本不是用Git完成的?
如果这很重要,这里有一些关于我的本地和远程服务器的统计信息:
remote server: Dreamhost (shared account) remote GIT version: 1.7.1.1 remote GIT client: shell local computer: Mac Pro (Snow Leopard 10.6.6) local GIT version: 1.7.2.3 local GIT client: Tower.app // git-tower.com
此外,到目前为止,我没有成功尝试以下工作流程:
--bare在遥控器上创建一个Git仓库(所以我可以从任何地方访问它)master (HEAD)scp -r将--baregit repo从远程服务器复制到我的远程实时域stage.example.comorigin/stage 显然,这不起作用,但我不知道为什么或如何做得更好.
来自SVN背景我是Git的新手,但已经看过很多教程(Peepcode和ThinkVitamin),但仍然无法弄清楚如何设置它.
使用 DVCS(“分布式”VCS,如 Git 或 Mercurial)实现的一个概念是,它将发布(推/拉)概念添加到分支概念中。
CVCS(“集中式”VCS,如 SVN)只有分支(以及一个要推送到服务器上的中央存储库)。
在您的情况下,暂存或实时是发布步骤,即不同的 Git 存储库准备好接收您想要在暂存或实时环境中看到的修改。
这意味着:
staging”分支)或实时(“ live”分支)的内容staging或live分支post-receivea和hook之间的区别post-update在于,hook post-update对每个修改的分支执行一次:
请参阅“ Git hook to update keywords based onbranch Push to Remote server ”SO 问题。
在初始推送时,执行“ git push --all origin”,所有分支将在远程裸存储库上创建。
这个想法是服务器端不应该涉及拉动:只有 agit --work-tree=/path/to/your/live/files/ checkout live或git --work-tree=/path/to/your/staging/files/ checkout staging,具体取决于更新后挂钩的参数:您只需将裸存储库的文件检出到服务器上的这些“文件夹”中。
如果您为您的钩子编写 ruby 脚本,请确保:
#!/usr/bin/env ruby,`git ...`,就像在这个脚本中一样,ENV['HOME']在所述脚本中指定当前用户的主目录,`cd ~/stagedomain.com``--work-tree=~/stagedomain.com``~`git pull,请GIT_DIR在与其他命令相同的行上取消设置,如您的其他问题:`cd ~/stage.mydomain.com && unset GIT_DIR && git pull core stage`。| 归档时间: |
|
| 查看次数: |
4066 次 |
| 最近记录: |