git noob努力将开发机器更改推送到远程生产服务器第2部分

时间:2011-05-22 19:29:12

标签: git

在远程服务器上我有一个rails 3应用程序。我知道我无法将更改推送到非裸存储库。所以,

  1. 在生产机器上,在rails根目录中,我创建了一个名为'.git'的目录
  2. cd进入新的.git目录
  3. 跑git init --bare
  4. 然后从我的开发机器输入此命令:git push ssh://jay@domain.com:12345 / home / jay / public_html / domain / .git master:master
  5. 推动似乎成功,因为我得到了这个消息:

    Counting objects: 235, done. 
    Delta compression using up to 4 threads. 
    Compressing objects: 100% (214/214), done. 
    Writing objects: 100% (235/235), 399.79 KiB, done. 
    Total 235 (delta 44), reused 0 (delta 0) 
    To ssh://jay@domain.com:12345/home/jay/public_html/domain/.git 
    * [new branch]      master -> master
    

    在“.git”目录中进行了更改,但未对远程生产机器代码进行任何更改。推送更改后是否需要运行另一个命令?

    更新:我是唯一的开发者。只有两个存储库。 1.在我的开发机器上我安装了git然后运行init,添加和提交 2.在我的远程生产服务器上,我安装了git并执行了上述步骤

1 个答案:

答案 0 :(得分:3)

我认为你正在寻找像git-hook这样的东西 - 特别是post-receive hook - 在你的裸仓库中推送到其他仓库,这是“远程生产机器代码”

首先,不要创建.git目录。只需在您想要git repo的目录中执行git init --bare。这不必在public_html。现在在你的public_html\domain克隆另一个裸仓库。现在你有了生产代码。在裸仓库的hooks文件夹中设置一个post-receive挂钩,并将其推送到public_html中的另一个仓库。 (您可能需要将遥控器添加到其他仓库)。这样,当您从开发机器推送时,生产代码也会更新。

cd /home/repos/repo
git init --bare
cd /home/jay/public_html/domain
git clone ../../../repos/repo .
cd /home/repos/repo/hooks
vi post-receive
( add post-receive hook content, make it executable)

您可以使用git remote add prod /home/jay/public_html/domain将遥控器添加到代码仓库中。使用该设置,您可以使用post-receive hook git push prod master