如何在Git别名中实现字符串替换 转换Bitbucket远程URL格式
Git别名实现Bitbucket SSH地址转HTTPS地址
直接在你现有别名的shell函数里用bash原生参数替换语法即可,不需要引入额外命令行工具,最终可直接使用的别名配置如下:
[alias] rr = "!f() { ref=$(git remote get-url origin); echo \"${ref/git@bitbucket.org:/https://bitbucket.org/}\"; }; f"
实现说明
- 替换逻辑用的是bash内置的字符串参数替换能力:
${变量/待匹配子串/替换内容},Git别名中以!开头的命令会在系统shell环境中执行,完全支持该原生语法,不需要依赖sed、awk等外部工具。 - 配置完成后执行
git rr,当远程origin地址为git@bitbucket.org:myorg/myrepo.git时,会直接输出转换后的结果https://bitbucket.org/myorg/myrepo.git。
如果需要支持查询任意远程仓库(不局限于origin),可以用增强版配置,默认查origin,传入远程名参数时查对应远程:
[alias] rr = "!f() { target_remote=${1:-origin}; ref=$(git remote get-url \"$target_remote\"); echo \"${ref/git@bitbucket.org:/https://bitbucket.org/}\"; }; f"
使用示例:
- 查origin的HTTPS地址:直接执行
git rr - 查upstream远程的HTTPS地址:执行
git rr upstream
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

