182
80

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

そのGitHubのリンク、消えるよ

とある天才も開発現場でこう言ってるかもしれないです。

あなたがドキュメントや、Pull Requestのコメント、Slackに貼り付けたGitHubのコードへのリンク。
数ヶ月後、あるいは数年後にそのリンクを開いたとき、「404 Not Found」になっていたり、全く違う内容を指し示していたりした経験はありませんか?

それは、あなたが「消える」リンクを使っているからです。

なぜリンクは「消える」のか

普段、GitHubのファイルへのリンクをコピーすると、URLにはブランチ名(例: main)が含まれています。

https://github.com/your-org/your-repo/blob/main/src/important-file.ts#L10-L20

この形式のリンクは、以下の理由で「消える」可能性があります。

ファイルがリネーム・移動された

important-file.tsがリファクタリングによって別のディレクトリに移動したり、名前が変わったりするとリンクは切れます。

ファイルが削除された

言うまでもありません。

ブランチが削除された

mainブランチは通常消えませんが、featureブランチなどへのリンクは、マージ後にブランチが削除されるとリンク切れになります。

コードが変更された

これが最も厄介かもしれません。
ファイル自体は存在していても、リンク先の10行から20行目のコードが全く別の内容に書き換えられている可能性があります。
これではリンク先の文脈が失われてしまいます。

「消えない」リンクを作るには

パーマリンク(Permalink)を使いましょう。

パーマリンクは、ブランチ名ではなく、特定のコミットIDを指し示すURLです。コードは特定のコミット時点の状態に固定されるため、その内容が変化することはありません。

GitHubでパーマリンクを取得する方法

方法はとても簡単で、

  1. GitHubでリンクしたいファイルを開き、該当する行番号(または複数行)をクリックしてハイライトする
  2. その状態で、キーボードの y キーを押す

これだけです。

yキーを押すと、URLが自動的にブランチ名から現在の最新コミットのハッシュ(一意のID)に書き換わります。

変更前(消えるリンク):

https://github.com/your-org/your-repo/blob/main/src/important-file.ts#L10-L20

変更後(消えないリンク):

https://github.com/your-org/your-repo/blob/a1b2c3d4e5f6.../src/important-file.ts#L10-L20

a1b2c3d4e5f6... の部分がコミットIDになります。

このURLを共有すれば、たとえmainブランチにどれだけ修正が加えられようとも、あなたのリンクは永遠に「その時点のコード」を指し示し続けます。

まとめ

  • ブランチ名を指すリンクは「消える」
  • パーマリンク(コミットIDを指すリンク)は「消えない」
  • GitHubでファイルやコード行を選択した状態で y キーを押せば、一瞬でパーマリンクが手に入る

これで、あなたの残すドキュメントやコメントも、未来の(天才)同僚から「リンクが消えてるよ…」と悲しまれることはなくなるはずです。

君のリンク、もう消えないよ

182
80
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
182
80

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?