Git:从另一个分支复制目录中的所有文件

问题描述 投票:0回答:5

如何从另一个分支复制目录中的所有文件?我可以通过执行以下操作列出该目录中的所有文件

git ls-tree master:dirname

然后我可以通过以下操作单独复制所有文件

git checkout master -- dirname/filename

然而,到目前为止,使用通配符完全失败了。 这没有任何作用:

git checkout master -- dirname/*.png

虽然我想我可以使用 bash 脚本来做到这一点,但必须有一种更简单的方法,对吧?

git file copy branch
5个回答
442
投票

由于您不想在树中移动文件,因此您应该能够仅签出目录:

git checkout master -- dirname

23
投票

复制目录而不跟踪它:

git restore --source master dirname

20
投票

如果路径中没有空格,并且您像我一样只对特定扩展名的文件感兴趣,则可以使用

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

8
投票

在我的例子中,从原始分支目录获取文件的最简单的解决方案是:

  • origin - 远程存储库别名(默认为origin)sourceBranchName
  • 分支,目录中包含所需文件
  • sourceBranchDirPath - 所需目录的相对/绝对路径

文件

git checkout origin/sourceBranchName -- sourceBranchDirPath

示例:

git checkout origin/validation_fix -- src/test/java/validation/

结果是来自 origin/validation_fix 分支的所有文件 src/test/java/validation/ 草稿中的相对路径 模式(未提交)


1
投票
git checkout sourceBranchName :

可以检出从 sourceBranch 到本地当前分支的所有内容(根目录)。

我自己测试过。

© www.soinside.com 2019 - 2024. All rights reserved.