Git: копировать все файлы в каталог из другой ветки

Как скопировать все файлы в каталог из другого ветки? Я могу перечислить все файлы в этом каталоге, выполнив

git ls-tree master:dirname

Затем я могу скопировать все файлы по отдельности, выполнив

git checkout master -- dirname/filename

Однако использование подстановочных знаков до сих пор было полным провалом. Это ничего не делает:

git checkout master -- dirname/*.png

Хотя я предполагаю, что могу использовать bash script для этого, должен быть более простой способ, не так ли?

Ответ 1

Поскольку вы не пытаетесь перемещать файлы в дереве, вы должны иметь возможность просто проверить каталог:

git checkout master -- dirname

Ответ 2

Если в путях нет пробелов, и вы заинтересованы, как и я, в файлах только определенного расширения, вы можете использовать

git checkout otherBranch -- $(git ls-tree --name-only -r otherBranch | egrep '*.java')