I\'m trying to move some files between two git repositories repo1
and repo2
. I have a short list of files I\'d like to move (preserving history).>
With Git 2.24 (Q4 2019), git filter-branch is deprecated.
The equivalent would be, using newren/git-filter-repo, and its example section:
If you have a long list of files, directories, globs, or regular expressions to filter on, you can stick them in a file and use
--paths-from-file
; for example, with a file namedstuff-i-want.txt
with contents of
README.md
guides/
tools/releases
glob:*.py
regex:^.*/.*/[0-9]{4}-[0-9]{2}-[0-9]{2}.txt$
tools/==>scripts/
regex:(.*)/([^/]*)/([^/]*)\.text$==>\2/\1/\3.txt
then you could run
git filter-repo --paths-from-file stuff-i-want.txt
In your case, stuff-i-want.txt
would be:
libraryname/file1
libraryname/file2
tests/libraryname/file3
As kubanczyk points out in the comments:
Works well on Ubuntu 20.04, you can just
pip3 install git-filter-repo
since it's stdlib-only and doesn't install any dependencies.On Ubuntu 18 it's incompatible with distro's git version, but it's easy to enough to run it on a
docker run -ti ubuntu:20.04