シェルを使って、Gitワークスペース内でリモートリポジトリのURLのみを抽出する
はじめに
github.com上のソースコードに対して何らかの作業を実施する際には、まず git clone
を行います。git clone
したGitワークスペース上でソースを閲覧したりコードを改変します。
この時点で、 origin
リモートリポジトリにプッシュ先のURL情報などが格納されます。
今回、このGitワークスペースと紐付けられている origin
リモートリポジトリのURL部分を抽出したいと思いました。
抽出する方法について紹介します。
検証環境
$ uname -moi
x86_64 MacBookPro11,4 Darwin
$ bash -version | head -n 1
GNU bash, バージョン 5.0.17(1)-release (x86_64-apple-darwin18.7.0)
リモートリポジトリの情報をURL部分も含め出力
リモートリポジトリの情報を一式表示するには以下のコマンドを利用します。
$ git remote -v
origin git@github.com:genzouw/ec-cube.git (fetch)
origin git@github.com:genzouw/ec-cube.git (push)
upstream git@github.com:EC-CUBE/ec-cube.git (fetch)
upstream git@github.com:EC-CUBE/ec-cube.git (push)
ここでは、 origin
リモートリポジトリに加えて、 upstream
リモートリポジトリも紐付けられていることがわかります。
また、URL部分以外も出力されているため、 **URLだけが欲しい場合は余分を除去する必要があります。
また、便利なコマンドではありますがリモートリポジトリへの通信が発生します。
リモートリポジトリのURL部分のみを出力
URL部分だけが欲しい場合には以下のコマンドが利用できます。
# originリモートリポジトリのURLを出力
$ git remote get-url origin
git@github.com:genzouw/ec-cube.git
以下のコマンドでも同様の結果が取得できます。
# originリモートリポジトリのURLを出力
$ git config --get remote.origin.url
git@github.com:genzouw/ec-cube.git
これを変数に格納し、後の処理で利用したい場合は以下のようにします。
$ REMOTE_URL="$(git remote get-url origin)"
$ echo "${REMOTE_URL}"
ひとこと
git remote get-url origin
と git config --get remote.origin.url
で同じ結果が取得できますが、両者の違いがわからず。
それぞれにメリット、デメリットがあるのか?