Отсоедините некоторые файлы в отдельном хранилище Git - PullRequest
1 голос
/ 01 декабря 2011

Я знаю, что есть большая нить Отсоединить подкаталог в отдельный репозиторий Git , но всегда есть некоторые варианты.Моя задача отличается от вышеуказанного вопроса в том, что вместо подкаталога есть несколько файлов.

Пример.

XYZ/
    .git/
    XY1/
    ABC/foo.py
    ABC/bar.py
    ABC/asdf.py
    ABC/...

И я хотел бы извлечь foo.py и bar.py в отдельный репозиторий Git.

Моим первым испытанием является создание подкаталога для этих двух файлов и использование метода, указанного в 1 :

$ mkdir foobar
$ git mv ABC/foo.py ABC/bar.py foobar
$ git commit -m '...'
$ git filter-branch --subdirectory-filter foobar HEAD

Пока все хорошо, за исключением истории коммитов.Есть идеи для этого?

Ответы [ 2 ]

0 голосов
/ 16 июля 2014

Что я сделал для этого:

  1. git clone ABC/ DEF/; cd DEF
  2. git remote rm origin
  3. git filter-branch --prune-empty --tree-filter 'rm -fr <list of files/folders to remove>' -- --all
  4. git filter-branch -f --prune-empty --subdirectory-filter DEF -- --all

И это было все. Добавлен новый удаленный проект, и продолжена работа в отдельном репозитории.

0 голосов
/ 27 апреля 2012

Вы должны использовать стратегию слияния поддерево , чтобы объединить «удаленную» папку «ABC» с вашей локальной папкой «ABC» и вести историю. Затем вы будете использовать filter-branch для удаления ненужных файлов.

...