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