我有一个项目“A”,它是一个Git存储库。我希望能够制作项目A(B和C)的多个副本,并为客户修改它们。
“A”是主人,因此有时当我执行新功能时,我希望能够将它们拉入B或C.但是一些提交应该留在A中,只有在制作新的克隆时才会使用。
我如何使用Git做到这一点?那就是:
请记住,这一切都在本地发生 - 而不是在GitHub上。我使用的是OS X.
答案 0 :(得分:1)
- 如何复制A?
git clone
就是这种方式,这意味着你在A和B之间建立一个发布链接,允许在它们之间推/拉提交。
- 如何将特定提交到B和C?
进入回购A:
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