Terminalからコマンド1つでGitHubのリポジトリを開く方法です。
GitHubのページと書いていますが、リモートリポジトリのWebページにアクセスする方法です。
なお、macOSに対応した情報ですが、他OSでも似たようなコマンドでできるかと思います。
TL;DR
以下のようなaliasを.zshrc
などに定義する。
alias github="git remote -v | head -1 | awk '{ print \$2 }' | xargs open"
remoteがたくさん登録してある場合は、次のコードを.zshrc
に設定して、引数でアクセスするremoteを指定できるようにする。
function _browse_remote () { local remote=$1 git remote -v | grep "$remote" | head -1 | awk '{ print $2 }' | xargs open } alias browse=_browse_remote
TerminalからGitHubのページをブラウザで開く
プログラミングをしていると、そのリポジトリのGitHubページにアクセスしたくなることがあります。
そのとき、ブラウザでGitHubにアクセスして、そのリポジトリまでnavigateして。。。とやっていたら効率が悪いですよね。
プログラミングをしているなら近くにTerminalが開かれているはずで、これでサッとコマンドを打ってGitHubにアクセスできたら素敵です。
そこで、今回はそのようなコマンドを自分で作ってみます。(と言ってもaliasを設定するだけですが。)
originのみの簡単version
さて、Gitのリポジトリにはremoteが設定されていると思います。
そして、originの1つだけが登録されている、という場合が多いでしょう。
そんな時は、以下の記述を.zshrc
などに設定しましょう。
alias github="git remote -v | head -1 | awk '{ print \$2 }' | xargs open"
※自分はリポジトリのホスティングサービスにはGitHubしか利用していません。そのため分かりやすいのでgithub
のエイリアスを付けていますが、場合によってはより抽象的なbrowse
などが良いでしょう。
このaliasを設定すると、リポジトリがあるディレクトリで
github
というコマンドを実行すればGitHubの該当ページにアクセスできます。
少し解説すると、このaliasは4つのコマンドがパイプで連結されています。
git remote -v
はそのリポジトリに登録されたremoteの一覧をURLを合わせて表示するコマンドhead -1
は、出力の先頭行のみを抽出するコマンドawk '{ print $2 }'
出力から2列目(ここではremote url)を抽出するコマンドxargs open
は先ほどのawk
の結果をopen
に引き渡すコマンドです。open
は指定されたリソースを適切なアプリで起動するコマンドです。
他のOSを使っているひとは、open
にあたるコマンドに差し替えてください。
アクセスするremoteを引数で指定するversion
さて、先ほどはremoteが1つしかない場合を想定していました。
ただし、1つのリポジトリに複数のremoteが登録されている場合もあります。
そのような場合に対応する方法です。
以下のコードを.zshrc
などに書きます。
function _browse_remote () { local remote=$1 git remote -v | grep "$remote" | head -1 | awk '{ print $2 }' | xargs open } alias browse=_browse_remote
これは、引数で受け取ったremoteのURLにアクセスする関数_browse_remote
を追加しています。
可読性重視でremote
と言う変数に$1
、つまり引数で受け取ったremote名を指定しています。
それをそのままbrowse
というaliasに登録している、というコードです。
このaliasを設定すると、以下のコマンドでremoteにアクセスできます。
# 先頭のURL(remoteが1つしかない場合は引数は不要) browse # remote [mirror] にアクセスする場合 browse mirror
なお、remoteが複数あった場合でも引数を省略したらorign
にアクセスしたい人は、先ほどの_browse_remote
関数を以下のように変更します。
function _browse_remote () { local remote="origin" if [ ! -z "$1" ]; then remote=$1 fi git remote -v | grep "$remote" | head -1 | awk '{ print $2 }' | xargs open }
まとめ
今回はターミナルからGitHub(というより、リモートリポジトリをホスティングしているサイトのページ)にアクセスする方法を紹介しました。
実際、この手のコマンドはすでに誰かが作っていて、brew
などでインストールできるかもしれません。
しかし、本当に小さい機能であればコマンドを複数パイプで繋げるだけで実現できます。すこし複雑な場合もシェルスクリプトで対応できるかもしれません。
このようなちょっとしたルーチンを効率化するためのツールは自分でササっと実装して使えるようになりたいものですね。。。!