我怎么能用Git做到这一点

时间:2010-08-10 20:54:52

标签: git

我们正在从HG迁移到Git。我们的设置是这样的:

开发本地,提交并将代码推送到我们的开发服务器并进行测试,然后我们将代码放在dev上并将其放在prod上。那么,:local - > dev server / staging - >生产服务器

我们如何使用HG执行此操作如下:

从本地到devserver

hg commit -m 'stuff'
hg push ssh://user@devserver//var/django/projects/project_name
ssh -l username devserver 'hg update -R /var/django/projects/project_name

从devserver到制作 登录服务器

mkdir /var/django/projects/project_name ; cd var/django/projects/project_name ; hg init
hg pull ssh://username@devserver//var/django/projects/project_name
/etc/init.d/apache reload

我试图用Git复制同样的东西,但没有运气让这些工作。到目前为止,我试图做的是:

本地

git init
git add .
git commit
git remote add origin ssh://user@devserver/var/django/projects/project_name
git push origin master

开发服务器

git init

(源代码在这里进行测试)

制作服务器

git init
git remote add origin ssh://user@devserver/var/django/projects/project_name
git pull origin master

问题是我正在做的git方式是不使用最新提交的更改来更新生产服务器

我有什么想法可以做这种类型的工作流程吗?

此致

杰夫

1 个答案:

答案 0 :(得分:0)

好像你的开发服务器是一个“非裸”的Git存储库(意味着它有一个工作副本)。有关相关方案,请参阅此问题:Git push only for bare repositories?

当您进入开发服务器时,您可能收到一条警告,指出进入非裸存储库是不安全的,可能不是您想要的。我要做的是为开发阶段设置一个新的裸存储库(使用git init --bare)。此存储库的位置无关紧要(只要可以从所有服务器访问它)。然后,在将代码推送到dev存储库后,登录到dev计算机本身并从裸开发存储库 pull 将本地文件更新为最新代码。

如果要将生产服务器更新为特定版本的代码,请登录到生产服务器并从存储库中提取以更新生产文件。您甚至可以查看特定版本(通过SHA1哈希或标记或其他内容),以确保在此期间您没有获得任何其他人已经推入存储库的其他提交。 (如果需要,这也允许您随时回滚到任何以前的版本。)

上述工作流程还可以轻松支持多个开发服务器。