gpt4 book ai didi

git - 有没有办法在 git checkout 中使用通配符?

转载 作者:IT王子 更新时间:2023-10-29 00:43:37 25 4
gpt4 key购买 nike

我想做的是 check out 单个文件或一组具有这样的公共(public)名称部分的文件

git checkout myBranch */myFile.md

git checkout myBranch -- */*Test*(不确定 '--' 部分)

代替

git checkout myBranch src/main/java/a/deep/package/structure/myFile.md

git checkout myBranch src/test/java/a/deep/package/structure/TestOne.java
git checkout myBranch src/test/java/a/deep/package/structure/TestTwo.java
git checkout myBranch src/test/java/a/deep/package/structure/resources/TestData.sql

我知道某些 git 命令(如 diffadd)有一些有限的通配符功能,但没有找到 checkout。有办法吗?

编辑:我在 Linux 上使用 git 1.7.9.5。 git 和 shell 命令的有效组合也是可以接受的。

最佳答案

Git 确实处理通配符,使用 fnmatch(3) .请参阅 Git glossary 中的 pathspec 条目.

但是要确保 git 可以看到通配符,它​​们必须被转义,否则你的 shell 将首先展开它们。通常,我在单引号之间使用通配符:

git checkout myBranch -- '*/myFile.md'

通配符应用于整个名称,包括目录。

如您在文档中所见,路径规范还允许魔术签名,这会改变解释路径规范的方式。例如,您可以使用 icase 设置不区分大小写的路径(您可以键入 ':(icase)*readme*' 来查找所有自述文件)。

我在这里引用@bambams 的评论,以防您在 Windows 中遇到问题:

This is not working for me in Windows with 2.8.1.windows.1 and I'm utilizing Git from the cmd.exe shell so no globbing built in. There is however a solution if you're in such a sorry state. Combine git diff --name-only and xargs to achieve your goal:

git diff --name-only <COMMIT> -- <GLOB>... | xargs git checkout <COMMIT> 

关于git - 有没有办法在 git checkout 中使用通配符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15160978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com