Git: copy all files in a directory from another branch
How do I copy all files in a directory from another branch? I can list all of the files in that directory by doing
git ls-tree master:dirname
I can then copy all of the files individually by doing
git checkout master -- dirname/filename
However, using wildcards has so far been a total fail. This does nothing:
git checkout master -- dirname/*.png
Though I guess I can use a bash script to do that, there has to be an easier way, right?
As you are not trying to move the files around in the tree, you should be able to just checkout the directory:
git checkout master -- dirname
If there are no spaces in paths, and you are interested, like I was, in files of specific extension only, you can use
git checkout otherBranch -- $(git ls-tree --name-only -r otherBranch | egrep '*.java')
To copy the directory without tracking it:
git restore --source master dirname