2010-07-23 34 views
1

我在本地啓動了我的Django項目,並且一直使用git。將兩個git存儲庫與Django Web服務器合併在一起,一位開發人員

我領先於自己,並將代碼複製到服務器,該服務器立即與我的本地版本不同步。我沒有做任何分支或任何東西。

這兩個部分的問題是什麼是我在本地工作的最佳結構,推/拉測試服務器,然後在測試結束時更新實時服務器,以及如何從我所在的位置進行設置?

我一直在這些早期階段沒有分支的開發,但我想反而遵循分支和合並的標準做法。

我在本地使用NetBeans 6.8進行編碼,我也得到了GitX。所以任何集成技巧都會有所幫助,但我很樂意做任何必要的命令行。

謝謝!

詹姆斯

+0

http://stackoverflow.com/questions/875698/developing-django-projects-using-git可以用它的'更新後的鉤子'。 – VonC 2010-07-23 06:20:44

回答

0

首先,你應該能夠有某種形式的你本地機器,測試服務器和直播服務器上得到了Git代碼庫之間的通信。 Git是在這方面非常靈活,少數人的選擇是:

  1. 從你的本地倉庫的測試和現場服務器拉 。
  2. 從開發推送到適當時間的測試和實時服務器。
  3. 從開發推動到生產並讓測試服務器從生產中拉出。
  4. 有第四個位置,您將存儲您的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 

至於術語:

  • 推的是RELA十分簡單:它將您的本地提交推送到不同的存儲庫。參見例如Git User's Manual
  • 獲取相反,它會「將所有遠程跟蹤分支更新到存儲庫中找到的最新版本」。 (從Git User's Manual引用。)
  • 該拉命令不僅可以獲取更改,還可以將它們合併到當前分支中。 (請參閱官方Git教程中的the example。)
+0

所有四種音效都非常棒!我有效使用的最後一個回購是VSS,所以我有點絆倒在明顯的​​細節。 我有點不確定的一個關鍵細節是如何設置默認值。開發人員如何知道在哪裏推動?測試如何知道在哪裏獲取?雖然我知道這發生了,但我在語義上遇到了麻煩。 第二次,我可以大概掌握更多的閱讀是推/拉/取。 一旦我得到這些,我可能會達到我瞭解如何合併它們的點。 – iJames 2010-07-24 02:27:29

+0

我想在管理我的回購協議方面,我可以使用其他一些程序(BeyondCompare)合併更改並將其提交到回購協議之一,然後使用它作爲前進。 – iJames 2010-07-24 02:28:32

+0

我編輯了我的答案,在遠程存儲庫中包含了更多信息。希望這可以幫助。 – 2010-07-26 15:21:57