Bash 如何git签出另一个分支中与特定模式匹配的所有文件?

Bash 如何git签出另一个分支中与特定模式匹配的所有文件?,bash,git,Bash,Git,我想从另一个符合特定模式的git分支复制所有文件。假设您需要所有目录中的所有js文件。可以这样做: git checkout the-other-branch -- '*/*.js' 这将把所有这些文件放在工作树上,也放在准备提交的索引上,与您从中签出的分支无关。。。您的分支指针不移动。假设您需要所有目录中的所有js文件。可以这样做: git checkout the-other-branch -- '*/*.js' 这将把所有这些文件放在工作树上,也放在准备提交的索引上,与您从中签出的分支

我想从另一个符合特定模式的git分支复制所有文件。

假设您需要所有目录中的所有js文件。可以这样做:

git checkout the-other-branch -- '*/*.js'

这将把所有这些文件放在工作树上,也放在准备提交的索引上,与您从中签出的分支无关。。。您的分支指针不移动。

假设您需要所有目录中的所有js文件。可以这样做:

git checkout the-other-branch -- '*/*.js'

这将把所有这些文件放在工作树上,也放在准备提交的索引上,与您从中签出的分支无关。。。您的分支指针不移动。

我可以使用我创建的bash命令解决此问题。首先
git checkout
要复制到的分支,然后运行以下命令:

git ls-tree -r --name-only <branch> | grep <pattern> | while read line; do git checkout <branch> -- $line; done
git-ls-tree-r--name-only | grep |同时读取行;执行git签出--$line;完成

首先,使用
gitls-tree
列出源分支目录中的所有文件,然后使用
grep
仅筛选与模式匹配的文件。然后使用while循环读取每一行,并使用
git checkout
复制文件

我能够使用我创建的bash命令解决这个问题。首先
git checkout
要复制到的分支,然后运行以下命令:

git ls-tree -r --name-only <branch> | grep <pattern> | while read line; do git checkout <branch> -- $line; done
git-ls-tree-r--name-only | grep |同时读取行;执行git签出--$line;完成

首先,使用
gitls-tree
列出源分支目录中的所有文件,然后使用
grep
仅筛选与模式匹配的文件。然后使用while循环读取每一行,并使用
git checkout
复制文件

你是说,符合给定模式的文件?比如“*.js”?你的意思是,匹配给定模式的文件?像“*.js”?您的解决方案将适用于更复杂的模式。我可能会跳过的是边读边读。。。。我认为使用xargs要好得多:
git ls tree-r--仅限姓名| grep | xargs-git签出--
您的解决方案将适用于更复杂的模式。我可能会跳过的是边读边读。。。。我认为使用xargs要好得多:
git ls tree-r--name only | grep | xargs git checkout--
我认为
在读行时;执行git签出--$line;完成
可以替换为
xargs git checkout--
;这也快了一点。我觉得
在读行的时候;执行git签出--$line;完成
可以替换为
xargs git checkout--
;这也快了一点。