分享一个 MacOS 小工具 gopen - 快速打开 Git 仓库远程 URL

66 天前
 DjvuLee

在命令行里面经常需要在浏览器里面打开 github 上的 repo ,这个对外来说非常高频,我希望像操作系统里面的 open 命令一样简单。

使用过各种小工具都不方便,比如官方的 gh, 都不方便。就自己开发了一个,分享给有需要的同学吧 https://github.com/libratiger/gopen

功能

安装

你可以通过 Homebrew 安装 gopen

brew tap libratiger/homebrew-tap
brew install gopen

使用方法

默认模式

在当前 Git 仓库目录中运行 gopen,它会自动打开第一个远程 URL 。

gopen

指定目录

在指定目录下查找并打开远程 URL 。

gopen /path/to/git-repo

交互模式

使用 -i 参数进入交互模式,用户可以选择要打开的远程 URL 。

gopen -i

或在指定目录下使用交互模式:

gopen /path/to/git-repo -i
1874 次点击
所在节点    程序员
20 条回复
GPT6
66 天前
powershell


# 打开当前仓库
Function gopen {
# 获取所有远程仓库的名称和地址
$remoteRepositories = git remote -v | ForEach-Object {
$remote = $_ -split '\s+'
[PSCustomObject]@{
Name = $remote[0]
Url = $remote[1]
}
}

# 去重远程仓库地址
$uniqueRemoteRepositories = $remoteRepositories | Select-Object -Property Url -Unique

# 输出所有远程仓库的名称和地址
$uniqueRemoteRepositories | ForEach-Object {
Write-Host "Remote repository URL: $($_.Url)"
Start-Process $_.Url
}
}
DjvuLee
66 天前
@GPT6 本身不复杂,就是几行脚本的事情,但是这个事情我感觉对应程序员还是很高频的。我刚更新了一个 rust 的版本
dHenryDong
66 天前
用 omz 配个插件就完事儿了 https://github.com/paulirish/git-open.git
noahlias
66 天前
gh repo view --web
直接用 github 官方 cli 就好了
xingheng
66 天前
DjvuLee
66 天前
@noahlias 之前就是用的这个,感觉太难用了。我其实就希望直接用苹果自带的 open 命令就好了.
DjvuLee
66 天前
@dHenryDong 和这个差不多,但是我希望提供一点交互式的界面
DjvuLee
66 天前
@xingheng 看过这个,这个工具想要做的东西太多了
noahlias
66 天前
@DjvuLee 这个还难用啊?
说实话这种其实有很多其他的方式代替 感觉都很方便
1:选择一个好的终端模拟器支持 URL 鼠标点击 比如 kitty 直接 git remote -v 点击打开就行
2: 用 tmux-fzf-url 直接当前 buffer 选择打开 或者编辑当前 buffer 用 vim/neovim gx 打开
3: 一个管道命令 `git remote -v | awk '{print $2}' | sort -u | fzf | xargs open` 用 git+fzf+open(其他系统换成不同的) 命令就解决了
DjvuLee
66 天前
我之前是选择的方法 1 ,我今天终于忍受不了
DjvuLee
66 天前
@noahlias gh 的命不容易记啊,也没有补齐,没有交互。
noahlias
66 天前
@DjvuLee gh 有 completion 啊 gh completion 不就是吗
有 zsh/bash/fish 看看官方文档或者 help
Donaldo
66 天前
👍确实是个高频需求,我有个小建议,名字改成 gg ,哈哈。
Wxh16144
66 天前
感觉还是 GitHub 官方的 CLI 香啊, 我设置了一个别名 gh ob(erver) 的意思。

GitHub CLI: https://cli.github.com/

![image.png]( https://s2.loli.net/2024/07/12/85g627NyUpk3Ixt.png)
DjvuLee
66 天前
@Wxh16144 gh 功能挺全的,隔三差五就提示升级🤣
DjvuLee
66 天前
@Donaldo 这个还是自己 alias 好
bxb100
66 天前
啊, 原来还有 gh 可以用=.=, 我也是受不了然后写了个 shell function `openg`

https://github.com/bxb100/dotfiles/blob/69c5190e741c8b97b666d3fd294972ec5e6bb9f8/.functions#L225-L257
DjvuLee
66 天前
@bxb100 自己写的用的更加顺手,gh 的目标太多了
wjx0912
66 天前
brew install libratiger/tap/gopen
省一条指令
jqtmviyu
66 天前
改成 zsh 函数

```sh
# 定义 gopen 函数
function gopen() {
# 获取所有远程仓库的名称和地址
remoteRepositories=$(git remote -v | awk '{print $2}' | sort | uniq)

# 输出所有远程仓库的名称和地址,并在浏览器中打开
for url in $remoteRepositories; do
echo "Remote repository URL: $url"
if command -v xdg-open &> /dev/null; then
xdg-open "$url"
elif command -v open &> /dev/null; then
open "$url"
else
echo "Cannot find a way to open the URL in the browser."
fi
done
}
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1056790

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX