2009-10-22 39 views
21

我一直在爲我們的項目使用git和github和我的小團隊開發人員。我忍不住想我們做得不對。我很想聽聽其他人如何在他們的項目中使用這個工作流程。git和github的工作流最佳實踐?

我們如何使用它: 我們每次更改之前分支合併回主,本地提交,推動我們的github回購。然後,我們進入我們的測試環境,並拉動github回購的主分支。我們還沒有完全掌握rebase,fetchtagging

我想怎麼使用它: 我希望能夠ssh到不同的服務器和拉特定標記的版本,如「階段1」到服務器中。這是可能的,還是我需要兩個不同的github回購?

你是否應該git pull一個特定的分支到Web服務器或創建一個新的別名到git push

你可以在一個git倉庫中控制候選版本或環境(測試,開發,生產)嗎?或者你需要多個?

如果拉是解決方案,您可以拉特定的tag

回答

8

基本上,您可以很好地與一個「中央」GitHub存儲庫功能。

  • 標籤是不可變的指針,它們可以隨時使用(並推送),以便檢出到任何測試或生產環境。這允許進行一些驗證,但通常不會用於開發。
  • 拉一個分支意味着你可以在該分支內部進行一些改進(由於一些錯誤修正和一旦代碼在生產環境中進行調整)並將其推回給所有其他開發人員的存儲庫供他們撤回並採取考慮到。

因此,這取決於您在這些服務器上所做的事情:只驗證(接受或拒絕狀態)或進一步開發。
在每種情況下,具有適當命名約定的標籤都很適合跟蹤歷史記錄中的特定提交,但每次需要隔離開發工作時都需要分支。

4

在GitHub上,我爲我的公司使用了一個帳戶,這是「有福」的代碼所在的地方;然後,我保持一個私人分支,在那裏我處理尚不穩定的事情。在我的本地機器上,我可以在一個倉庫中處理這兩種情況,這樣主人就是幸運的代碼(並推送到公司賬戶),而所有其他分支都用於我的分支。這裏是我的.git/config中的一部分:

[remote "origin"] 
     fetch = +refs/heads/*:refs/remotes/origin/* 
     url = [email protected]:xiongchiamiov/fourU.git 
[branch "hacking"] 
     remote = origin 
     merge = refs/heads/hacking 
[branch "editor"] 
     remote = origin 
     merge = refs/heads/editor 
[branch "problem-utils"] 
     remote = origin 
     merge = refs/heads/problem-utils 
[branch "tests"] 
     remote = origin 
     merge = refs/heads/tests 

[remote "trunk"] 
     fetch = +refs/heads/*:refs/remotes/trunk/* 
     url = [email protected]:xyztextbooks/fourU.git 
[branch "master"] 
     remote = trunk 
     merge = refs/heads/master 

因爲我犯的權限爲公司回購,我就可以合併(或摘櫻桃)從一個分支到另一個承諾,並且將其推到合適的位置。現在,單獨的回購當然不是必需的,但由於這是一個開源項目,我喜歡保持「官方」回購免於由我的切線創建的隨機分支。一旦它達到了版本控制的地步,就會有一個0.x分支,每個版本都有標籤(0.1,0.1.1,0.2等),這是非常有利的,因爲github會自動創建文件的tarball在每個標籤處,非常適合將特定版本下拉到不需要完整歷史記錄的機器。

你應該閱讀github博客;他們有一些很好的帖子來描述他們的部署工作流程,這當然涉及git。

16

閱讀Pro Git book。你可以閱讀一年的git手冊頁,但仍然沒有得到它:試圖通過閱讀手冊頁來學習git就像試圖通過閱讀字典來學習一種新的語言,它可以完成。本書將教你一些你可以使用git的工作流程,以及使用哪些git命令以及在哪些上下文中使用它們。

+1

我一直試圖在最近幾周「搞到」git。這正是我一直在尋找的。 –