GitHubで特定ファイルの特定文字列を変更したコミットとPRを特定する方法

スポンサーリンク

GitHub上で、特定のファイルに加えた「特定の文字列」の変更を追跡したい場合があります。例えば、config.yaml 内の API_KEY の変更や、README.md 内のある文言の修正などです。

ここでは、その手順を解説します。

1. 特定文字列を含む変更を探す

方法1:Git CLI を使う

Git では -S オプションで、指定した文字列を追加・削除したコミットを探せます。

git log -S "検索したい文字列" --

"検索したい文字列": ファイル内で探したい内容

: 対象ファイル

例:

git log -S "API_KEY" -- config.yaml

これで、config.yaml 内で "API_KEY" を追加・削除したコミットが一覧で出ます。

方法2:GitHub Web UI を使う

リポジトリページで Code タブを開く

ファイル内で文字列を検索(t キーでファイル検索、または / キーで全文検索

目的の文字列が含まれるコミットを探す場合、History を確認して関連コミットを特定

CLI の方が確実で速いです。

2. 文字列を変更したコミットのPRを確認

文字列を含むコミットが特定できたら、前回の記事と同様にPRを確認できます。

方法1:Web UI

コミットページの右サイドバーで This commit is part of pull request #xxx を確認

方法2:GitHub CLI

gh pr view <commit-sha>

方法3:GraphQL API

{
  repository(owner: "org", name: "repo") {
    object(expression: "commit-sha") {
      ... on Commit {
        associatedPullRequests(first: 10) {
          nodes {
            number
            title
            url
          }
        }
      }
    }
  }
}

3. 実務での流れ(文字列単位)

文字列を含むコミットを特定 → git log -S "文字列" -- ファイルパス

コミットページでPRを確認 → Web UI or CLI or GraphQL

必要に応じて差分を確認 → git show <commit-sha> で、変更箇所を詳しく確認

4. 注意点

-S は文字列の 追加・削除 を検知するので、単純に文字列があるだけではヒットしません

squash merge で取り込まれた場合、個別コミットではなくまとめられたコミットでしか追えない

文字列が複数ファイルにまたがる場合はファイルごとに確認が必要

こうしておくと、「誰がいつ、どのPRで特定文字列を変更したのか」を簡単に追跡可能です。