Předpokládejme, že chcete přenést historii filename.conf
z jednoho zdrojového úložiště do jiného přijímajícího úložiště. Myslím, že strategie, kterou chcete dodržovat, je:
- Ve zdrojovém úložišti vytvořte větev potvrzení, která budou přepsána tak, aby obsahovala pouze
filename.conf
. - Sloučit nezávislou řadu potvrzení do normální větve v přijímajícím úložišti.
Než to uděláte, rozhodně si udělejte zálohy svých úložišť!
Ve zdrojovém úložišti použijte filter-branch k opětovnému vytvoření historie odstraněním všeho kromě filename.conf
.
git checkout -b filtered-commits
git filter-branch -f --prune-empty --tree-filter 'find . -not -name filename.conf -exec rm {} \;' filtered-commits
Poté v přijímajícím úložišti:
git pull path/to/source/repo
Pokud také potřebujete přesunout cestu, filename.conf
je v úložišti, budete pravděpodobně muset použít --subdirectory-filter
možnost na git filter-branch
.