Git и клонирование - PullRequest
       12

Git и клонирование

2 голосов
/ 04 мая 2010

Я сделал приложение для клиента под названием «А» (не совсем).

Я обнаружил, что это очень круто, и я хочу продать его и другим клиентам. Каталог 'A' является Git-репозиторием. Я думаю, у меня есть проблемы с клонированием. Насколько я вижу, мне нужно сделать копию каталога «А» и назвать его «Generic_A». Затем удалите директорию 'A' и сделайте "git clone Generic_A A". Тогда я мог бы начать заменять репозиторий "Generic_A" с универсального дизайна и удалить все ссылки на клиентов. Но это как раз наоборот. Я должен был начать делать общий дизайн, а затем клонировать репо, чтобы перейти к дизайну конкретного клиента.

Могу ли я:

  1. сделать новую ветку
  2. сделать все изменения, чтобы сделать дизайн общим
  3. создать патч, отражающий изменения между двумя
  4. удалить клиентскую ветку
  5. переименуйте каталог в 'Generic_A'
  6. клонировать репо в новый каталог 'A'
  7. применить патч, чтобы вернуть клиенту специфические вещи

И если да - как мне сделать патч и применить его?

С уважением,

Jacob

Ответы [ 2 ]

1 голос
/ 04 мая 2010

Здесь возможен рабочий процесс:

  • На реж.
    • Создать новую ветку 'generic' из ветви 'client-A'.
    • Используйте 'git rebase -i' в ветке 'Generic', чтобы удалить все материалы клиента A.
    • Используйте 'git rebase client-A generic', чтобы перебазировать вашу ветку client-A на generic.
  • Переименуйте свой A dir в общий dir
  • клонировать ваш общий каталог в новый каталог -A
  • удалить ветку client-A из общего каталога.

Таким образом, вы сохраните историю ветки client-A.

0 голосов
/ 04 мая 2010

Это может сработать, хотя между 6. и 7. Я бы сделал ветку 'client_A' перед применением вашего патча.
Недостатком является то, что вы теряете особенности истории коммитов для клиента A, поскольку вы применяете этот патч в одном большом коммите.

В вашем случае патч можно сделать с помощью git diff, см. исправление с помощью git diff

git diff --no-prefix > patchfile

затем примените патч:

patch -p0 < patchfile

Если у вас есть файл исправления "git diff", созданный без параметра "--no-prefix", вы можете применить это исправление с помощью:

patch -p1 < patchfile

при этом будут игнорироваться стандартные префиксы a / b / source.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...