我在CakePHP
上托管了DreamHost
个应用程序 - 并在我的MacBook上本地克隆了它。
我正在尝试设置我的环境,以便我可以在MacBook上进行开发并根据需要推送到托管网站 - 但无法弄清楚如何设置git
从本地推送到远程当远程文件高于webroot
。
如何设置我的本地git以在托管应用上推送到webroot上方的文件?
谢谢!
答案 0 :(得分:2)
但是当远程文件位于webroot之上时,无法弄清楚如何设置git从本地推送到远程。
要设置回购,您需要一个中间回购作为参考点。现在,此回购可能位于github
或bitbucket
等托管网站上,也可能是您服务器本身的bare repo。 (注意 - bitbucket为少数用户提供免费私人回购)
bare repo的优点是,您可以规避与在服务器,在线服务和开发机器之间设置ssh
机制相关的任何问题。如果您的服务器出现故障,缺点是丢失服务器上的所有代码,尽管您的开发机器上仍然会有一份副本,因此不会全部丢失。
第1步
因此,让我们假设你继续推进一个简单的回购。如果您将使用bitbucket / github,请忽略此步骤。
为此,我们需要在您的服务器上创建一个裸仓库:
ssh user@myserver
cd /some/isolated/location
git init --bare intermediate_repo.git
这将创建一个路径为/some/isolated/location/intermediate_repo.git
的中间仓库。
接下来,cd在这个裸仓库中,并运行以下命令,以便您可以通过ssh访问repo git server
cd intermediate_repo.git
mv hooks/post-update.sample hooks/post-update
chmod a+x hooks/post-update
git update-server-info
所以现在你的bare
repo很适合作为中间回购,我们可以将其作为remote添加到其他存储库中。
第2步
现在在dev
机器中,添加一个遥控器(Step2)
git remote add intermediate ssh://user@myserver:/some/isolated/location/intermediate_repo.git
第3步
在server
s repo上添加远程
ssh user@myserver
cd /repo/location
git remote add intermediate /some/isolated/location/intermediate_repo.git
第4步
所以现在你很高兴去()。
您可以从开发机器中按照以下方式推送代码
git push intermediate branchname
将其拉入您配置的代码仓库
ssh -t user@myserver "cd /repo/location && git pull intermediate branchname"
的 PS 强> 的
如果您选择安装bitbucket,请跳过步骤1,然后在步骤2&在上面的3中,将url
/ path
替换为bitbucket ssh url。查看this bitbucket link以使用bitbucket设置ssh访问权限。此外,在生成ssh密钥时,生成它们没有密码,否则你可能需要调试ssh和passphrases周围的更多东西。
您可以在Views
位置使用/repo/location/Views
文件夹,您可以配置该文件夹以进行网络安全访问。
答案 1 :(得分:1)
这是一个很好的问题,我能为您提供的最好的解决方法,但它对我们的团队有用。您需要使用第三方服务(如GitHub或BitBucket)托管您的代码才能实现此目的。
我们在本地编写/测试代码,并推送到GitHub。当我们准备部署时,我们会按照以下几行运行脚本:
echo "Connecting to mysite.com";
# DocumentRoot is /var/www/site
ssh -t myUser@myIPAddress "cd /var/www; git pull;"
这通过ssh连接到服务器,并执行两个命令,一个cd
到git目录,另一个拉动更改。 git pull
完成后,连接退出。 (-t
标志强制伪tty分配,允许我们执行这两个命令。)
我们创造了一台机器' GitHub上的用户沿着here概述的线路,因此我们可以使用基于密钥的身份验证,而不用担心丢失密码。
这有帮助吗?我还可以添加/解释什么?
答案 2 :(得分:1)
如果您有ssh
访问权限,可以将您的仓库推送到服务器到您选择的目录,然后从Web根文件夹创建符号链接到该目录中的views文件夹或编写脚本和rsync他们。这个脚本可以在远程git repo上的post-hook中实现。
答案 3 :(得分:0)
您是否使用SSH调查git push
? SSH可以访问您的帐户可以访问的主机上的任何位置。我们一直用它来推动webroot。