我如何在Git中设置远程目录,在那里我可以将本地的stage分支推送到远程,并在staging服务器上查看实时更改,比如stage.example.com?
我的想法(部分原因是我正在远离SVN)是我可以维护(本地)3个不同的“主要”分支,如下所示:
- master - 用于本地开发,工作目录 - stage - 应该与演示服务器目录(远程)同步 - live - 这应该是公开的可访问网站(远程)
我有的想法(以及其他人声称的可能性)是,我可以从我的本地计算机维护这些远程“站点”,而无需不断登录到我的远程服务器shell并运行svn update(在我的当前svn工作流中,我需要一直这样做...),或者当然,在我的Git工作流程中在远程上运行git pull。
我该如何设置远程目录,以便我可以将我的stage分支推送到staging远程服务器,并立即在(例如)stage.example.com上查看更改?
然后,一旦stage全部正确并经过测试,我就只需本地能够将更改推送到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
我的想法(部分原因是我正在远离SVN)是我可以维护(本地)3个不同的“主要”分支,如下所示:
- master - 用于本地开发,工作目录 - stage - 应该与演示服务器目录(远程)同步 - live - 这应该是公开的可访问网站(远程)
我有的想法(以及其他人声称的可能性)是,我可以从我的本地计算机维护这些远程“站点”,而无需不断登录到我的远程服务器shell并运行svn update(在我的当前svn工作流中,我需要一直这样做...),或者当然,在我的Git工作流程中在远程上运行git pull。
我该如何设置远程目录,以便我可以将我的stage分支推送到staging远程服务器,并立即在(例如)stage.example.com上查看更改?
然后,一旦stage全部正确并经过测试,我就只需本地能够将更改推送到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 存储库(这样我就可以从任何地方访问它) - 将此远程存储库克隆到本地目录,并使用 Git Tower 应用程序进行管理
- 在本地的
master (HEAD)
中进行工作 scp -r
将--bare
git 存储库从远程服务器复制到我的远程实时域名stage.example.com
- 向本地工作副本添加远程分支,然后尝试推送到
origin/stage
显然,这种方法不起作用,但我不知道原因或如何更好地进行操作。
由于我来自 SVN 背景,所以对 Git 比较陌生,尽管看了很多教程(Peepcode 和 ThinkVitamin),但仍无法理解如何设置好这个工作流程。
git --git-tree=/path/to/your/live/files/ checkout live
或git --git-tree=/path/to/your/staging/files/ checkout staging
,具体取决于post-update钩子的参数。我链接的答案(http://stackoverflow.com/questions/5365476/git-hook-to-update-various-web-folders-based-on-branch-pushed-to-remote-server/5370467#5370467)明确提到,在推送期间更新的分支(或分支)名称是“post-update”钩子的参数。 - VonC--work-tree
是我想要用作选项以在“正常”(--git-dir
)目录之外检出工作树(即包含.git
的目录)。 - VonCexec(\
...`)上没有正确设置
$HOME:尝试echo它并查看它是否指向任何内容。同时也echo用户名。也许你需要在ruby脚本中引用
ENV['HOME']`,如 http://ruby.about.com/od/rubyfeatures/a/envvar.htm 所述。 - VonC