Родительский / главный проект в git - PullRequest
1 голос
/ 27 марта 2010

У меня есть проект "A", который является хранилищем Git. Я хотел бы иметь возможность сделать несколько копий проекта A (B и C) и изменить их для клиентов.

«А» является мастером, поэтому иногда, когда я делаю новые функции, я хотел бы иметь возможность перенести их в B или C. Но некоторые коммиты должны просто оставаться в A и использоваться только при создании нового клона. *

Как мне это сделать с Git? То есть:

  • как скопировать А? (Клон?)
  • как получить конкретные коммиты в B и C?

Пожалуйста, имейте в виду, что все это происходит локально, а не на GitHub. Я использую OS X.

1 Ответ

1 голос
/ 28 марта 2010
  • как копировать А?

git clone - это способ, означающий, что вы устанавливаете публикацию связи между A и B, C, позволяющую совершать push / pull коммиты между ними.

  • как получить конкретные коммиты в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...