使用 git 部署

ins*_*erg 4 git

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

我需要类似于 rsync 或 scp 的东西。我目前的快速和肮脏的解决方案是签出,克隆到 tmp 目录和 rsyncing 以部署服务器。

And*_*zek 5

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

首先在要推送的机器上设置遥控器。目标应该是一个裸存储库。

git remote add server1 ssh://username@server1.example.com/home/username/gitrepo
Run Code Online (Sandbox Code Playgroud)

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

git checkout featurebranch1
Run Code Online (Sandbox Code Playgroud)

最后,将数据推送到您的遥控器:

git push server1 localbranch:destinationbranch
Run Code Online (Sandbox Code Playgroud)

或者您可以将推送设置为上游并推送到上游分支。

git config push.default upstream
Run Code Online (Sandbox Code Playgroud)

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

也许使用裸存储库还不够好。在这种情况下,在接收方,您可能想要在接收数据时做一些事情,比如可能将文件检出到不同的目录(repo 必须保持裸露,记住)。您可以通过在 /path/to/bare/repository/hooks/post-recieve 中创建一个脚本文件来使用 post-receive hook 来做到这一点,如下所示:

#!/bin/sh
GIT_WORK_TREE=/var/www/html git checkout -f
Run Code Online (Sandbox Code Playgroud)

chmod它可执行。这会将master分支检出到指定目录中。