División de un set de files dentro de un repository git en su propio repository, preservando el historial relevante

Posible duplicado:
¿Cómo dividir un repository de git y preservar los subdirectorys?

En un momento, agregué mi código a un repository git existente, y me he comprometido bastante desde entonces, mientras que el otro desarrollador se ha comprometido con los otros files existentes en el repository. Ahora quiero dividir mi código en su propio repository, pero conservar todo el historial de cambios para mis files particulares.

Al leer lo que otros han hecho para dividir el código, estaba buscando en filter-branch y haciendo --index-filter o --tree-filter con commands rm para los files que no me interesan. No quiero usar --subdirectory-filter ya que no es apropiado para el subdirector que sostiene que mi código es el dir superior (también compartimos un subdirectory). Para complicar las cosas, algunos de los files del repository original se han movido un poco con el time, y hay algunos files que se crearon y luego se eliminaron. Esto hace que el layout de una list rm sea un poco … desafiante.

Estoy buscando una forma de filtrar todo / except / una list de files / directorys. ¿Alguien sabe de una manera de hacer esto?

Solo para cerrar el ciclo de esto para que aparezca como respondido.

Usando index-filter o tree-filter y luego aplicando reverse logic como git ls-tree conectado a (multiple) grep -v 's conectado a xargs para git rm , puedes quitar todo lo que no concuerde con un set estrecho de files nombres / directorys. Aquí está el command que solía dividir mis files particulares:

 git filter-branch \ --prune-empty \ --index-filter ' git ls-tree -z -r --name-only --full-tree $GIT_COMMIT \ | grep -z -v "^src/pyfedpkg$" \ | grep -z -v "^src/fedpkg" \ | grep -z -v "^git-changelog" \ | xargs -0 -r git rm --cached -r ' \ -- \ --all