使用 git 部署

使用 git 部署

有没有办法使用 git 通过 SSH 将 git 分支部署/交付到不同的服务器?无需设置 git 服务器,使用 github 之类的服务或连接到远程服务器并从主服务器提取。

我需要类似于 rsync 或 scp 的东西。我目前的快速而粗糙的解决方案是签出、克隆到 tmp 目录并 rsyncing 到部署服务器。

答案1

首先,正如我经常被告知的那样,git 不是一个部署框架。正如 Paul Gear 所说,最简单的方法是使用遥控器。

首先在将要推送的机器上设置远程。目标应该是裸存储库。

git remote add server1 ssh://[email protected]/home/username/gitrepo

然后在源机器上选择你的分支:

git checkout featurebranch1

最后,将数据推送到远程:

git push server1 localbranch:destinationbranch

或者您可以将推送设置为上游,然后推送至上游分支。

git config push.default upstream

正如我之前提到的,远程 git 必须是一个裸存储库才能接受这样的推送。

也许使用裸存储库还不够好。在这种情况下,在接收方,您可能希望在收到数据时执行某些操作,例如将文件签出到其他目录(请记住,存储库必须保持裸状态)。您可以使用 post-receive 钩子执行此操作,方法是在 /path/to/bare/repository/hooks/post-recieve 中创建一个脚本文件,如下所示:

#!/bin/sh
GIT_WORK_TREE=/var/www/html git checkout -f

chmod将其设为可执行文件。这会将master分支签出到指定的目录中。

答案2

您可以通过 ssh 推送到远程仓库 - 这是我用来更新 github 仓库的方法。设置您的 ssh 密钥,然后以 user@host:place/to/put/it.git 的形式添加远程仓库

答案3

有一个完整的解决方案可以帮助您部署您的 Web 应用程序,它被称为 capistrano。

这是一个简单的 ruby​​ 程序,在许多服务器上部署应用程序时有很大帮助。

相关内容