我在 DreamHost
上托管了一个 CakePHP
应用程序 - 并在我的 MacBook 上本地克隆了它。
我正在尝试设置我的环境,以便我可以在 MacBook 上进行开发并根据需要推送到托管站点 - 但不知道如何设置 git
来推送当远程文件位于 webroot
之上时,本地到远程。
如何设置本地 git 以推送到托管应用程序上 webroot 之上的文件?
谢谢!
最佳答案
but can't figure out how to set up git to push from local to remote when the remote files are above the webroot.
要设置存储库,您需要一个中间存储库作为引用点。现在,此存储库可能位于 github
或 bitbucket
等托管站点上,也可能是 bare repo在您的服务器本身上。 (注意 - bitbucket 为少数用户提供免费的私有(private)存储库)
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
的中间存储库。
接下来,进入这个裸存储库,并运行以下命令,以便您可以通过 ssh 作为 git server 访问该存储库。
cd intermediate_repo.git
mv hooks/post-update.sample hooks/post-update
chmod a+x hooks/post-update
git update-server-info
现在您的裸
存储库可以作为中间存储库,我们可以将其添加为 remote在其他存储库中。
第 2 步
现在在您的dev
机器中,添加一个远程(第2步)
git remote add intermediate ssh://user@myserver:/some/isolated/location/intermediate_repo.git
第 3 步
并在您的服务器
的存储库上添加一个远程
ssh user@myserver
cd /repo/location
git remote add intermediate /some/isolated/location/intermediate_repo.git
第 4 步
现在您可以开始了 ()。
您可以从您的开发机器推送代码,如下所示
git push intermediate branchname
并将其 pull 入您配置的代码存储库中
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 key 时,请在不使用密码短语的情况下生成它们,否则您可能需要调试有关 ssh 和密码短语的更多内容。
您的 Views
文件夹应该位于 /repo/location/Views
位置可供您使用,您可以配置该文件夹以进行 Webroot 访问。
关于git - 推送到 webroot 之上的托管项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22651040/