惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
M
MIT News - Artificial intelligence
Recent Announcements
Recent Announcements
V
Visual Studio Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
MyScale Blog
MyScale Blog
Hugging Face - Blog
Hugging Face - Blog
宝玉的分享
宝玉的分享
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 叶小钗
博客园 - 聂微东
U
Unit 42
F
Fortinet All Blogs
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
IT之家
IT之家
The GitHub Blog
The GitHub Blog
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
Y
Y Combinator Blog
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派
效率派 | 如何在终端打开 GitHub 项目主页 - 少数派
2023-01-18 · via 少数派

需求背景:需要在终端打开目前项目的 GitHub 主页

实现效果

获取 GitHub 链接

使用 git config 获取当前目录的 git 配置信息,再使用 get 取出 远程地址的 URL 即可。

git config --get remote.origin.url
https://github.com/JamesHopbourn/Apple-Automation

但是除了使用 https 协议之外,还有的是使用 ssh 协议来拉取项目。使用 ssh 协议的项目的远程地址如下所示。

git config --get remote.origin.url
git@github.com:JamesHopbourn/Apple-Automation.git

如果在 ssh 的 config 文件中配置了 Host,它还有可能是这样的 ssh 地址格式。

hopbourn:JamesHopbourn/CompanyPorject.git

处理链接

对于以上三种情况,需要将它们的协议转为 https 才可以正常打开对应的网页。此处可以使用 sed 命令配合 b 指令处理。下面这条命令可以拆为两个部分来看,/https/b 表示不去匹配 https 开头的行,如果是其他情况才会进入后面的语句。后面的语句中 ^.*: 是代表匹配从开头到最后一个 : 的字符串,然后将它替换为 https://github.com/ 字符串。

sed '/https/b ; s|^.*:|https://github.com/|

验证一下命令的正确性,可以看出三种类型的链接都可以被正确处理,符合预期效果。最后有无 .git 对链接没有影响,在打开 GitHub 链接后会自动去掉。

echo 'https://github.com/JamesHopbourn/Apple-Automation'|sed '/https/b ; s|^.*:|https://github.com/|'
https://github.com/JamesHopbourn/Apple-Automation

echo 'git@github.com:JamesHopbourn/Apple-Automation.git'|sed '/https/b ; s|^.*:|https://github.com/|'
https://github.com/JamesHopbourn/Apple-Automation.git

echo 'hopbourn:JamesHopbourn/CompanyPorject.git'|sed '/https/b ; s|^.*:|https://github.com/|'
https://github.com/JamesHopbourn/CompanyPorject.git

打开链接

使用 macOS 的 open 命令可以打开一个网页链接,在 Linux 系统下这个命令是 xdg-open。但是由于 open 不支持 stdin,需要使用 xargs 来辅助传递 URL 地址。举个例子,使用下面这条命令就可以打开少数派的网站。

echo https://sspai.com|xargs open

但是下面这条命令由于没有 xargs 传递 URL 参数,open 不知道要打开什么链接,就会出错。通过这个简单的例子就能理解到 xargs 的基本使用方法。

echo https://sspai.com|open

那么同样的道理,将上面两个步骤和 xargs open 命令拼接起来,就实现了直接打开当前项目的 GitHub 主页,整合后的命令如下所示:

git config --get remote.origin.url|sed '/https/b;s|^.*:|https://github.com/|'|xargs open

alias 命令

像上面这样一长串的命令使用起来并不是非常方便,所以可以考虑给他起个别名,也就是所谓的 alias。最简单的方法是可以写在 ~/.zshrc 文件里。但是我喜欢把命令归类放在一起,由于配置了 oh-my-zsh 的 git 插件,所以可以考虑直接把这条 alias 写在 git.plugin.zsh 里。打开 git.plugin.zsh 搜索 git config,可以看到插件自带了 gcf alias。所以可以考虑直接在这条命令下面加上自定义的 alias。

使用下面这条 gsed 命令实现直接插入 alias ,该命令会先匹配出现 gcf= 字符的行,在这行的下面插入自定义的 gop alias,使用 -i 参数代表直接原地修改文件保存。如果还未安装 gsed 命令,可以通过 brew install gnu-sed 安装

gsed -i "/ gcf=/a alias gop=\"git config --get remote.origin.url|sed '/https/b;s|^.*:|https://github.com/|'|xargs open\"" ~/.oh-my-zsh/plugins/git/git.plugin.zsh

可能有读者疑问,这样复制粘贴就完成的事情,有必要专门再写一条命令来处理吗?在多数情况是下这样,但是作者自己有整理了一份重装系统后运行的命令,所有的命令复制粘贴就全自动完成了,所以在这种情况下,这样的命令就是有意义的。

至此,再重新开启终端后,在 git 工作目录里使用 gop 就可以直接打开项目的 GitHub 主页了,power~

参考文章