🤖

VSCodeで閲覧しているファイルから、GitHubのコミット内のパーマリンクを取得する

2023/12/25に公開

TL;DR

以下が最速

  1. VSCode の GitLens 拡張で「Open File on Remote」で GitHub 内でのファイルを開く
  2. GitHub 内のファイルページで、「Y」キーを押してコミットハッシュ付きのパーマリンクを取得する

概要

チーム開発をしていると、Issue や Pull Request のやり取りの中でリポジトリ内のコードを共有したいことがあります。GitHub でのファイルブラウズではブランチ、タグ、コミットなどいくつかの方法でファイルを開くことができますが、以下のように使い分けたいです。

  • ブランチ: ファイルの最新の状態を確認したいとき
  • タグ: リリースされたバージョンのファイルを確認したいとき
  • コミット: 特定の時点でのファイルを確認したいとき

コミットハッシュのファイル URL の内容は、そのコミットが削除されない限りは内容が変わることがありません。後からやり取りの内容を見返した時に参照されているファイル URL の内容が変わってしまったらコンテキストがわからなくなってしまうため、そういった用途ではコミットハッシュ付きのファイル URL を使いたいです。以下のような URL です。

https://github.com/github/codeql/blob/b212af08a6cffbb434f3c8a2795a579e092792fd/README.md?plain=1#L5-L10

ただ、VSCode で開いているファイルから、GitHub のコミットハッシュ付きのファイル URL を最速で取得する方法がなかなか見つからなかったので、自分用のメモとして残しておきます。

方法

1. VSCode の GitLens 拡張で「Open File on Remote」で GitHub 内でのファイルを開く

コマンドパレットから「GitLens: Open File on Remote」を実行すると、GitHub で開いているファイルを VSCode で開くことができます。

ただ、この URL は現在のブランチのファイル URL となっています。この URL を使いたいシチュエーションもあるので良いですが、コミットハッシュ付きのファイル URL を取得したい場合は次に進みます。

2. GitHub 内のファイルページで、「Y」キーを押してコミットハッシュ付きのパーマリンクを取得する

GitHub で開いているファイルページで「Y」キーを押すと、コミットハッシュ付きのパーマリンクを取得することができます。

詳しくは以下に記載されていました。

https://docs.github.com/ja/repositories/working-with-files/using-files/getting-permanent-links-to-files

今回利用しなかった選択肢

VSCode の「File: Copy Relative Path of Active File」で早退パスを取得した後、 GitHub CLI で gh browse -c <path> で開く

gh browse-c オプションを指定すると、指定したパスのファイルを現在のコミットハッシュで開くことができます。
こちらでも良いのですが、モノレポなどでルートディレクトリにいない状況で実行すると開かれるパスがずれてしまうためちょっとだけ面倒でした。

終わりに

VSCode 上から一発で開ける方法があれば教えてください。RubyMine だと行にカーソルがある状態で cmd+Shift+C で手に入るんですが...

GitHubで編集を提案

Discussion