首先,你應該能夠有某種形式的你本地機器,測試服務器和直播服務器上得到了Git代碼庫之間的通信。 Git是在這方面非常靈活,少數人的選擇是:
- 從你的本地倉庫的測試和現場服務器拉 。
- 從開發推送到適當時間的測試和實時服務器。
- 從開發推動到生產並讓測試服務器從生產中拉出。
- 有第四個位置,您將存儲您的git repo並從開發推送到該存儲庫,並從那裏進行測試和實時拉取。
無論哪種方式,一旦你到達你想要在測試服務器上嘗試一些東西的階段,就創建一個標籤。在測試服務器上籤出該標籤(git checkout <tagname>
)並進行測試。 (一旦你滿意它可以按照你想要的方式工作,你也可以在生產中使用該標籤,但我想這很明顯:))
中間步驟,在創建標籤和檢出它之間,完全取決於你的設置。使用我剛纔提到的第四個選項,您需要先將標籤推送到測試機器上。所以整個過程看起來與此類似。
<development>$ git tag v1.0
<development>$ git push
<development>$ git push --tags
<testing>$ git fetch --tags
<testing>$ git checkout v1.0
<live>$ git fetch --tags
<live>$ git checkout v1.0
您也可以選擇(AB)使用git decribe
,查看自己當前在檢查得到了哪個標記出來。
關於分支和合並:我喜歡做的是爲我正在處理的每個功能創建一個分支。一旦我完成該功能,我將它合併回主。所以,如果我需要在功能完成之前發佈,我可以將該功能(以及所有相關的功能)從版本中刪除。
但這只是其中一種方式。您可以設置工作流程以適應您的情況。特別是關於分支的使用。 Vincent Driessen在他的文章A successful Git branching model中描述了一個更復雜的設置。
免責聲明:我使用git幾乎完全與服務器上的一個權威回購(第四個選項)。我沒有親自嘗試過其他的設置,我建議......
更新由iJames迴應註釋:
要在默認情況下,從使開發推動和測試拉從一個新的/不同的版本庫現在,看到this question接受的答案:
$ git branch --set-upstream master origin/master
至於術語:
http://stackoverflow.com/questions/875698/developing-django-projects-using-git可以用它的'更新後的鉤子'。 – VonC 2010-07-23 06:20:44