有没有办法使用 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 程序,在许多服务器上部署应用程序时有很大帮助。