如何在git checkout命令中使用regex来指定文件子集

时间:2014-07-22 04:39:48

标签: regex git

假设我正在尝试签出一组特定的git文件,例如app/*^(.tmpl).html

如何将此正则表达式引入git checkout branch -- (regex)

3 个答案:

答案 0 :(得分:16)

如" Is there a way to use wildcards with git checkout?"

中所述
  

Git不处理通配符,但你的shell会处理。

作为noted below,你需要转义通配符才能让git解释它:afile\*,或者使用简单的引号。

example section of git checkout显示通配符用法:

rm hello.c
git checkout -- '*.c'
  

请注意*.c 周围的引号   文件hello.c也将被检出,即使它不再在工作树中,因为文件通配符用于匹配索引中的条目(不在shell的工作树中)。

例如,另一种方法是使用find(如" git add *.js” did not add the files in sub-directories")

find . -name '*js' -exec git checkout {} \;

您可以使用find --regex

试用正则表达式

答案 1 :(得分:6)

刚刚更新了这个答案,但我能够git checkout使用通配符,所以我相信现在可以做到这一点。我正在运行git版本1.9.3。

答案 2 :(得分:0)

我正在使用这样的命令组合。

如果你需要远程分支:

git checkout $(git branch -a | grep "your-key-words-here" | grep remotes)

如果您只需要本地分支:

git checkout $(git branch | grep "your-key-words-here")

使用示例

主要是开发人员根据 JIRA 中的任务编号或其他名称命名分支,因此使用这些命令您可以更快地切换到您需要的分支。

(1) 所有可用的本地分支机构:

  • 功能/CAN2-1035_new_calculation_for_internal_transfer
  • 功能/CAN2-921_new_ui
  • 开发(当前)

要打开 feature/CAN2-1035_new_calculation_for_internal_transfer 分支,您应该输入命令:

git checkout $(git branch | grep CAN2-1035)

  • git branch - 将返回所有本地分支(1)
  • grep CAN2-1035 - 将过滤 (1) 的结果并仅返回包含 CAN2-1035 的结果

这些命令也可以提取到一些bash命令中以简化使用。