Копирование различного содержимого репозитория git и сохранение содержимого и истории определенных каталогов - PullRequest
2 голосов
/ 09 августа 2010

У меня есть git-репозитории rA и rB, я хотел бы копировать только определенные каталоги в rA и сохранять их историю, например,

rA
 - d1
 - d2
 - d3
 - d4
rB (with d1 and d2 preserved)
 - d1
 - d2

То, что я сделал до сих пор:

git remote add -f rA /path/to/rA
git merge -s ours --no-commit rA/master

Это дает мне все файлы в rA, и мне интересно, могу ли я использовать такие команды, как git-filter-branch, чтобы исключить d3 и d4? Или у меня совершенно неверное представление о том, как обрабатываются и управляются репозитории?

Спасибо.

Изменено:

Я сделал это возможным:

  1. Дублируйте (cp -R) мой существующий репозиторий в каталог.
  2. Выполните эту команду для этого нового каталога:

    git filter-branch --index-filter 'git rm --cached -rgit ls-tree - только для имени --full-tree -r $ GIT_COMMIT | grep -Ev "^ dirs | to | be | включены" | xargs -r git rm --cached -r; fi '- --all

  3. Продолжено на этапах, которые я упоминал ранее.

1 Ответ

2 голосов
/ 09 августа 2010

Вы можете сначала разделить rA на две части (чтобы получить только нужные каталоги), прежде чем добавить его в rB.

Однако при простом слиянии может возникнуть много конфликтов, так как разделение переписало бы все SHA1 в rA.
Это означает, что любая общая история, которой могут поделиться rA и rB, потеряна.

Ваше слияние (-s ours) позволяет новым файлам из rA появляться в rB.

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