シェルを使って、Gitワークスペース内でリモートリポジトリのURLのみを抽出する

2021-02-22Bash,Git,GitHub

はじめに

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 origingit config --get remote.origin.url で同じ結果が取得できますが、両者の違いがわからず。
それぞれにメリット、デメリットがあるのか?

2021-02-22Bash,Git,GitHub