簡體   English   中英

如何使用Git部署項目

[英]How to deploy a project using Git

我找到了一個解決方案,但我覺得必須有一個更簡單的部署方式,使用Git。 解決方案就是這樣

  1. 在本地使用Git開發應用程序
  2. 設置Git服務器
    • 將本地存儲庫本地克隆為裸存儲庫
    • 將裸存儲庫復制到遠程服務器
    • 將裸存儲庫設置為遠程存儲庫
  3. 將存儲庫從裸存儲庫克隆到服務器(以便具有工作目錄的存儲庫)
  4. 通過推送本地提交的更改來更新裸存儲庫。
  5. 通過從裸倉庫中提取更改來更新工作目錄

這不是一個簡單的解決方案,可能有更好的方法來使用Git進行部署。 我試圖在服務器上單獨使用裸存儲庫,並將git配置文件中的工作樹變量設置為其他目錄,但它不起作用:在第一次檢出后,當我更新裸倉庫並嘗試查看更改,似乎一切正常,但工作目錄中沒有任何反應。 然后我決定克隆裸存儲庫,因此克隆的repo有一個工作目錄,它可以通過git pull更新(這將來自裸存儲庫的更改作為其原始遠程存儲庫)。

此解決方案的最大優點是您可以修復服務器上的代碼,提交這些更改,更新裸存儲庫,然后您只需更新本地存儲庫。 另一個優點是您可以從裸倉庫中克隆項目,如果有權訪問服務器,則更多參與者可以參與開發。

你知道一種具有上述優點的簡單方法嗎?

我要向你描述我要做的是什么,所以它可能對你有用。 我還將提供一些細節,以便將來可以幫助新的企業。

我有一個服務器,我喜歡運行一些個人實驗,我用git以我發現的最簡單的方式進行部署。 它是使用git附帶的鈎子和很少的shell腳本完成的。

我們去:

首先:初始化服務器中的裸存儲庫。 與普通git存儲庫的不同之處在於缺少工作樹(項目文件和常見的東西)。 您只需擁有存儲庫樹。

git init --bare 

如果你看一下裸露的結構,你會看到這樣的東西:

› git init --bare
Initialized empty Git repository in /home/git/mysite/
› ls
branches  config  description  HEAD  hooks  info  objects  refs

如果仔細觀察hooks文件夾,你會發現一些有趣的東西:

daniel at heavens-empire into /home/git/mysite/hooks  
› ls
applypatch-msg.sample  post-update.sample     pre-commit.sample      
pre-push.sample        update.sample          commit-msg.sample      
pre-applypatch.sample  prepare-commit-msg.sample  pre-rebase.sample

每個文件都是可以在某些事件后觸發的腳本示例。 今天我們正在觀看收到后的活動(它沒有出現在這個版本中......我不知道為什么)。 它發生在我們推送到裸存儲庫時。 你可以創造它並在其中加入一些貝殼之美:

#shows file content
daniel at heavens-empire into /home/git/mysite/hooks$ cat post-receive  

#!/bin/sh

GIT_WORK_TREE=/home/www/site git checkout -f

GIT_WORK_TREE將確定我推送的工作樹的文件的位置。 這就像你在一個文件夾中有repo並說樹在另一個文件夾中。

我已經從我的玩具服務器復制了那些腳本,所以我可能會說他們應該和你合作,改變適當的工作樹變量。

在我的本地存儲庫中,我只是將該裸文件夾添加為遠程倉庫 我會用ssh來簡單化。 在這種情況下,請確保您用於訪問的用戶對工作樹文件夾具有適當的權限:

git remote add mygitserver daniel@heavensempire.com:/home/git/mysite

每次推送時,您的本地git都會發送提交。 當服務器git repo接收並接受它們時,它將觸發該接收后腳本。 設置工作樹並給出權限后,它將在應用程序運行的文件夾上進行簡單檢查。

我希望這對你有用,也可能對別人有用。 Personaly我避免在服務器上編輯東西。 如果您發現在服務器中反映完整的repo很有用,您還可以使用post-receive進行克隆/推送,並在另一個repo中為您結賬。 就像是:

cd /home/mysite
git pull repo/folder masterOrOther

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM