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

发布于 2024-08-29 13:55:16 字数 345 浏览 5 评论 0原文

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

git ls-tree master:dirname

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

git checkout master -- dirname/filename

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

git checkout master -- dirname/*.png

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

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

凌乱心跳 2024-09-05 13:55:16

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

git checkout master -- dirname

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
忱杏 2024-09-05 13:55:16

要复制目录而不跟踪它

git restore --source master dirname

To copy the directory without tracking it:

git restore --source master dirname
夏末的微笑 2024-09-05 13:55:16

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

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

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')
独守阴晴ぅ圆缺 2024-09-05 13:55:16

就我而言,从原始分支目录获取文件的最简单的解决方案是:

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

sourceBranchDirPath - 包含文件

git checkout origin/sourceBranchName -- sourceBranchDirPath

示例:

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

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

In my case this simplest solution to get files from the origin branch directory was:

  • origin - remote repository alias(origin by default) sourceBranchName
  • branch with required files in directory
  • sourceBranchDirPath - relative/absolute path to the required directory with

files

git checkout origin/sourceBranchName -- sourceBranchDirPath

Example:

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

Result was all files from origin/validation_fix branch by
src/test/java/validation/ relative path in the draft
mode(uncommited)

反差帅 2024-09-05 13:55:16
git checkout sourceBranchName :

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

我自己测试了一下。谢谢!

——时政

git checkout sourceBranchName :

can checkout everything (root directory) from sourceBranch to your local current branch.

I tested by myself. Thx!

-- Shizheng

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文