2010-03-27 101 views
1

我有一個項目「A」,它是一個Git存儲庫。我希望能夠製作項目A(B和C)的多個副本,併爲客戶修改它們。git中的父/主項目

「A」是主人,所以有時當我做新功能時,我希望能夠將他們拉入B或C中。但有些提交應該保留在A中,並且只能在製作新克隆時使用。

我該怎麼用Git做?那就是:

  • 如何複製A? (克隆?)
  • 如何獲得特定的提交到B和C?

請記住,這一切都發生在本地 - 而不是在GitHub上。我使用OS X.

回答

1
  • 如何複製A?

git clone是這樣的,這意味着你建立A和B,C之間的發佈鏈接,允許推/它們之間拉的提交。

  • 如何獲得特定的提交到B和C?

通過其在回購答:

  • ,你開發儘可能多的功能,私有分支您想要的(但這個分支從未被推其他地方)
  • 公共支路將被推以B和C
  • 合併或透過公共部門高層你的私有分支rebase --onto你的提交,然後推入公衆分支B或C.

一個工作流程是,例如:

cd ~/projectA 
git checkout master 
git branch private 
# do some commits, some private, some useful to a 
git checkout master 
git branch feature_for_a 
git cherry-pick sha1_from_private 

cd ~/project_B 
git fetch project_A 
git checkout --track feature_for_a # check modifs for a 
git checkout master 
git merge feature_for_a 
# do some client specific modifications 
+0

非常感謝您的回覆。你能寫出典型工作流程的命令嗎?例如。 1. git clone〜/ project_a〜/ project_b 2. [修改project_a] 3. [現在怎麼樣? :)] – jriff 2010-03-28 19:09:54

+0

@jriff:答案更新*可能的工作流程的一個例子* – VonC 2010-03-28 19:30:46

+0

順便說一句。一些提交應該只能到一些克隆。一個提交可能是一個功能或一個錯誤修正,不需要去所有的克隆。此外,我認爲最好拉我想要的提交,而不是從project_a推送它們。 – jriff 2010-03-28 19:37:05