Git

使用 git 部署

  • December 28, 2015

有沒有辦法使用 git 通過 SSH 將 git 分支部署/傳遞到不同的伺服器?無需設置 git 伺服器,使用 github 等服務或連接到遠端伺服器並從主伺服器拉取。

我需要類似於 rsync 或 scp 的東西。我目前快速而骯髒的解決方案是簽出、複製到 tmp 目錄並 rsyncing 以部署伺服器。

首先,正如我經常被告知的那樣,git 不是一個部署框架。也就是說,正如 Paul Gear 所說,最簡單的方法是使用遙控器。

首先在要推送的機器上設置遙控器。目標應該是一個裸儲存庫。

git remote add server1 ssh://username@server1.example.com/home/username/gitrepo

然後在源機器上選擇你的分支:

git checkout featurebranch1

最後,將數據推送到您的遙控器:

git push server1 localbranch:destinationbranch

或者您可以將推送設置為上游並推送到上游分支。

git config push.default upstream

正如我之前提到的,遠端 git 必須是一個裸儲存庫才能接受這樣的推送。

也許使用裸儲存庫還不夠好。在這種情況下,在接收方,您可能希望在收到數據時做一些事情,例如將文件檢出到不同的目錄(請記住,repo 必須保持裸露)。您可以通過在 /path/to/bare/repository/hooks/post-recieve 中創建一個腳本文件來使用 post-receive 掛鉤,如下所示:

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

chmod它可執行。這會將master分支檢出到指定的目錄中。

引用自:https://serverfault.com/questions/536414