Git: скопировать все файлы в каталоге из другой ветки - PullRequest
170 голосов
/ 19 апреля 2010

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

git ls-tree master:dirname

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

git checkout master -- dirname/filename

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

git checkout master -- dirname/*.png

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

Ответы [ 2 ]

250 голосов
/ 19 апреля 2010

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

git checkout master -- dirname
14 голосов
/ 14 апреля 2014

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

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