使用git进行部署

有没有办法通过使用git通过SSH部署/交付一个git分支到不同的服务器? 不用设置git服务器,使用像github这样的服务,或者连接到远程服务器,并从主服务器上拉。

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

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

首先在推动的机器上设置遥控器。 目标应该是一个裸仓库。

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

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

 git checkout featurebranch1 

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

 git push server1 localbranch:destinationbranch 

或者你可以设置你的推动到上游,并推动任何上游分支。

 git config push.default upstream 

正如我前面提到的那样,远程git必须是一个裸机库来接受像这样的推送。

也许使用裸仓库是不够的。 在这种情况下,在接收端,当你收到数据时你可能会想要做些什么,比如将文件检出到不同的目录(回购必须保持空白,记住)。 你可以通过在/ path / to / bare / repository / hooks / post-recieve中创build一个脚本文件,使用post-receive钩子来做到这一点:

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

chmod它可执行。 这将检查master分支到指定的目录。

你可以通过SSH推送到一个远程回购 – 这是我用来更新我的github回购。 设置您的SSH密钥,然后添加一个远程的formsuser @ host:place / to / put / it.git

有一个完整的解决scheme,可以帮助您部署您的Web应用程序,它被命名为capistrano使用它。

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