git clone
を実行する前に、リモート先(リポジトリ URL 先)のHEAD
(現在の最新コミット・ハッシュ値)を取得したい。
「git clone リモート先の HEAD 取得 確認」でググってもドンピシャのタイトルの記事がなかったので、自分の備忘録のググラビリテとして。
TL; DR
git
のls-remote
コマンドで、リモート先の諸情報を得られます。例えば、ヘッダー情報は--heads
オプション。
git ls-remote --heads [ リポジトリのURL ]
git ls-remote -h [ リポジトリのURL ]
# URLが指定されていない場合はヘルプ表示になるので注意
$ git ls-remote --heads https://github.com/KEINOS/TPL-PHP-HelloWorld.git
b05c14a0ee5651990eec41e6bd397a19726d9440 refs/heads/master
TS; DR
Travis CI/Circle CI/GitHub Actions といった CI の実行処理で、いくつかのリポジトリを git clone
する必要がありました。
ローカルではなく、CI の処理上で各々のリポジトリを clone
し、必要なデータをコピー&マージしてからデプロイ(リリース)する必要があったからです。特に cron
などでスケジュール実行される自動化されたデプロイです。
しかし、各々のリポジトリのサイズが大きいため、対象のリポジトリに変更があった場合のみ clone
するように限定したいのです。そのため、最終コミットのハッシュ値(HEAD
)を比較するのが合理的です。
git pull
など clone
済みの場合のヘッダを確認する記事は多いのですが、git clone
前にヘッダを取得する記事がなかなか見つからず。git
の公式ドキュメントを読み漁ってたらドンピシャの情報がありました。
NAME
git-ls-remote - List references in a remote repository
(git-ls-remote - リモートリポジトリの参照情報を表示する)SIMPSONS
構文git ls-remote [--heads] [--tags] [--refs] [--upload-pack=<exec>] [-q | --quiet] [--exit-code] [--get-url] [--sort=<key> ] [--symref] [<repository>[<refs>…] ]
DESCRIPTION
Displays references available in a remote repository along with the associated commit IDs.
(関連するコミットIDとともに、リモートリポジトリで利用可能な参照情報を表示します)
- git-ls-remote | Document @ Git