1
我有一個項目「A」,它是一個Git存儲庫。我希望能夠製作項目A(B和C)的多個副本,併爲客戶修改它們。git中的父/主項目
「A」是主人,所以有時當我做新功能時,我希望能夠將他們拉入B或C中。但有些提交應該保留在A中,並且只能在製作新克隆時使用。
我該怎麼用Git做?那就是:
- 如何複製A? (克隆?)
- 如何獲得特定的提交到B和C?
請記住,這一切都發生在本地 - 而不是在GitHub上。我使用OS X.
我有一個項目「A」,它是一個Git存儲庫。我希望能夠製作項目A(B和C)的多個副本,併爲客戶修改它們。git中的父/主項目
「A」是主人,所以有時當我做新功能時,我希望能夠將他們拉入B或C中。但有些提交應該保留在A中,並且只能在製作新克隆時使用。
我該怎麼用Git做?那就是:
請記住,這一切都發生在本地 - 而不是在GitHub上。我使用OS X.
- 如何複製A?
git clone
是這樣的,這意味着你建立A和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
非常感謝您的回覆。你能寫出典型工作流程的命令嗎?例如。 1. git clone〜/ project_a〜/ project_b 2. [修改project_a] 3. [現在怎麼樣? :)] – jriff 2010-03-28 19:09:54
@jriff:答案更新*可能的工作流程的一個例子* – VonC 2010-03-28 19:30:46
順便說一句。一些提交應該只能到一些克隆。一個提交可能是一個功能或一個錯誤修正,不需要去所有的克隆。此外,我認爲最好拉我想要的提交,而不是從project_a推送它們。 – jriff 2010-03-28 19:37:05