在远程服务器上我有一个rails 3应用程序。我知道我无法将更改推送到非裸存储库。所以,
推动似乎成功,因为我得到了这个消息:
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并执行了上述步骤
答案 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