Partager un ensemble de fichiers dans un git repo dans leur propre dépôt, en préservant l'historique pertinent [dupliquer]

possibilité de duplication:

comment diviser un dépôt git tout en conservant des sous-répertoires?

À un moment, j'ai ajouté mon code à un repo git, et se sont engagés à beaucoup depuis, tandis que l'autre développeur s'est engagé pour les autres fichiers existants dans le repo. maintenant je veux diviser mon code en son propre repo, mais préserver tout l'historique des modifications pour mes fichiers.

en lisant ce que les autres ont fait pour séparer le code, je regardais filter-branch et en faisant --index-filter ou --tree-filter avec des commandes rm pour les fichiers dont je ne me soucie pas. Je ne veux pas utiliser --subdirectory-filter car il n'est pas approprié que le sous-DIR contenant mon code soit le topdir (nous avons aussi partagé un sous-DIR). Pour compliquer les choses, certains des fichiers du dépôt original ont déplacé un peu au fil du temps, et il ya des fichiers qui ont été créés puis supprimés. Cela rend la conception d'une liste rm un peu... difficile.

je cherche un moyen de tout filtrer /sauf/ une liste de fichiers/répertoires. Quelqu'un sait d'une façon de le faire?

28
demandé sur Community 2011-05-14 04:13:07

1 réponses

juste pour fermer la boucle sur ce ainsi il apparaît comme répondu.

en utilisant index-filter ou tree-filter et en appliquant la logique inverse comme git ls-tree piped into (multiple) grep -v 's piped into xargs for git rm vous pouvez en effet supprimer tout ce qui ne correspond pas à un ensemble étroit de noms de fichiers/répertoires. Voici la commande que j'ai utilisée pour séparer mes fichiers particuliers:

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
42
répondu jkeating 2014-09-05 14:17:35