Suponha que você queira transferir o histórico de filename.conf de um repositório de origem para outro repositório de recebimento. Eu acho que a estratégia que você quer seguir é:
- No repositório de origem, crie uma ramificação de confirmações que são reescritas para conter apenas
filename.conf. - Mesclar a linha independente de confirmações em uma ramificação normal no repositório de recebimento.
Definitivamente, faça backups de seus repositórios antes de fazer isso!
No repositório de origem, use o filtro-branch para reconstruir o histórico removendo tudo, exceto filename.conf .
git checkout -b filtered-commits
git filter-branch -f --prune-empty --tree-filter 'find . -not -name filename.conf -exec rm {} \;' filtered-commits
Em seguida, no repositório de recebimento:
git pull path/to/source/repo
Se você também precisar mover o caminho em que filename.conf está dentro do repositório, provavelmente precisará usar a opção --subdirectory-filter em git filter-branch .