在 CLI 中获取签出文件的 GitHub 链接

在 CLI 中获取签出文件的 GitHub 链接

我正在寻找一个 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

相关内容