2013-05-11 45 views
3

我想爲項目保留兩個單獨的git遠程存儲庫(同時擁有一個本地副本)。一個應該是開發庫,一個應該是代表性的公共存儲庫。我希望公共存儲庫僅包含選定的狀態,即我只想提交穩定版本而沒有小提交的中間歷史記錄。就我所瞭解的Git而言,如果我時不時地提交到公共存儲庫,它會自動更新提交的整個歷史記錄。有沒有解決的辦法?如何爲所選提交(狀態)保留第二個git遠程存儲庫

回答

3

我的問題的答案是基於@Andomar的回答和@Michael Durrant推薦的博客文章。

不同的分支可以被用於釋放(master),顯影(development),修補程序(hotfix)等每個分支可以被推到不同的遠程倉庫 - 公共酮(origin)或一個用於發展( dev)。

的策略應該是致力於發展變化的development分支,並將其推到dev遠程倉庫:

$git checkout dev 
...do some changes... 
$git commit -m "some development change" 
$git push -u dev development 

達到後一個新的釋放點的developmentmaster分支機構應使用--squash合併,它在一次提交中將所有對開發分支的提交打包,這阻止了開發歷史出現在主分支上。

$git checkout master 
$git merge --squash development 
$git commit -m "<new release message>" 
$git push -u origin master 

這將導致一個提交上origin將包含所有自上次發佈以來的發展變化,從而隱藏包含在dev的發展歷史。

0

認爲「選定的歷史」而不是「選定的提交」。 git push默認選擇加入分支機構,因此您可以選擇僅將stable分支(例如)推送到特定的遠程設備。然而,如果不推送一個分支,就不能推送一個分支 - 分支的頭部提交由其父,子內容(又名「樹」)和一些元數據(作者,提交者,消息等)定義, 。

1

典型的解決方案是爲此創建兩個分支,例如developmentmaster。你可以把唯一掌握公衆資源庫和git push

git push (remote) master 

爲了(remote)只跟蹤默認master,使用git remote

git remote set-branches (remote) master 
+0

感謝您的回答。這讓我走上了正軌。 – 2013-05-11 15:52:11

1

我建議使用的

http://nvie.com/posts/a-successful-git-branching-model/

戰略

基本上你有一個開發分支的工作進行中和一個馬代表生產的代表分支。

此外,您可以針對個人功能,錯誤修復或雜事開發分支機構。

然後,將這些分支合併到開發分支中,您可以在其中進行集成測試,然後將其發佈到可以執行質量檢查的發佈分支。

準備發佈時,將發佈合併到主服務器並推送到生產服務器。

當您需要進行熱修復時,請將其發佈到發佈分支。

+0

感謝您發佈此鏈接。它給了我很好的關於如何組織我的工作流程的想法。 – 2013-05-11 15:53:10

相關問題