![在 CLI 中获取签出文件的 GitHub 链接](https://linux22.com/image/1513443/%E5%9C%A8%20CLI%20%E4%B8%AD%E8%8E%B7%E5%8F%96%E7%AD%BE%E5%87%BA%E6%96%87%E4%BB%B6%E7%9A%84%20GitHub%20%E9%93%BE%E6%8E%A5.png)
我正在寻找一个 bash 脚本来根据我本地结帐中的文件名生成一个 GitHub 链接。
因此,如果此脚本存在并且被命名为github-link-for-file
,它可能会像这样工作:
$ git clone [email protected]:torvalds/linux.git
$ cd linux
$ github-link-for-file include/math-emu/quad.h
https://github.com/torvalds/linux/blob/master/include/math-emu/quad.h
我预计这样的脚本已经存在,但我找不到。还有人能找到吗?
(如果没有,也许我应该编写它并将其添加到类似的项目中https://hub.github.com/看起来他们的“git browse
“命令几乎就是我想要的。)
答案1
应该很简单。试试这个:
#!/bin/bash
URL=`git config --get remote.origin.url | sed 's/\.git//g'`
BRANCH=`git rev-parse --abbrev-ref HEAD`
FILE=$1
echo $URL/blob/$BRANCH/$FILE
exit 0
将其保存到 Bash 脚本文件并记得使用 将其设置为可执行文件chmod +x
。
然后,您可以将脚本文件链接到别名或将其符号链接到/usr/bin
目录中。该脚本相对工作,因此运行它时您需要位于 repo 目录中。
答案2
替代方案Gsinti 的回答支持通过 SSH 签出的远程
#!/bin/bash
GIT_URL=$(git config --local remote.origin.url | cut -d "@" -f 2 | cut -d "." -f "1-2" | sed "s/:/\//")
URL="https://${GIT_URL}"
BRANCH=`git rev-parse --abbrev-ref HEAD`
FILE=$1
echo $URL/blob/$BRANCH/$FILE
exit 0