使用Git <rev>^{/<text>}语法查找分支X不含WIP的最新提交
Git查找不含特定关键词的最新提交正确姿势
嘿,太懂你这种卡壳的感觉了!你一开始尝试用复杂的正则表达式X^{((?!WIP).)*}来匹配不含WIP的提交,结果怎么转义都不管用,对吧?其实是Git的<rev>^{/<text>}语法有自己的简化匹配规则,不用这么复杂的PCRE正则。
正确命令直接用
你要的效果,用这条命令就搞定了:
git switch --detach 'X^{/!-WIP}'
为啥原来的方法不行?
Git的^{/<pattern>}语法里的匹配逻辑不是完全标准的正则,它有自己的简化语法:
- 普通的
^{/WIP}是找提交信息里包含WIP的最新提交 - 前缀加
!-就表示排除包含该关键词的提交,也就是找提交信息里没有WIP的最新那个
而你一开始用的((?!WIP).)*这种负向预查正则,Git的这个匹配语法并不支持,所以不管怎么转义都匹配不到。
关键注意点:单引号不能少
一定要用单引号把X^{/!-WIP}整个包起来!因为!在bash里是特殊字符(关联历史命令),如果不用单引号,shell会先把它解析成别的东西,导致Git接收不到正确的匹配规则。
内容的提问来源于stack exchange,提问作者esskov
相关产品推荐
相关产品推荐

