🔎

意図せず消してしまったコードの復元術:実践的Gitコマンド活用法

2025/03/07に公開

はじめに

こんにちは或いはこんばんは。Ryuzakiです。

最近はClineやGitHub CopilotなどのAIエージェントを個人開発でよく利用しています。
(GitHub Copilot Agent Modeを用いた開発に興味がある方は前回の記事を見てみてください。)
https://zenn.dev/ryuzaki/articles/150bb189297faa

こういったAIエージェントを用いた開発であっても、品質管理の観点からはもちろん修正内容の詳細確認やテストコードの実装が必要なのですが、個人開発のアイデア検証フェーズでは「とにかく早く機能を追加して、上手くいかなかったら丸々捨てる」というようなスタンスでいきたいので、そこにあまり時間をかけたくないのが本音です。

ただし、このようなスタンスで開発を進めていると、知らない内に特定の機能や処理が消されているということがよくあります。そういった状況で、消された機能を検索するのに少し苦戦したため、半分備忘録として検索方法を記録しておきます。

コミット履歴をキーワード検索する方法

消えてしまった機能や処理を探すとき、まずはそれに関連するキーワードを用いて、どのコミットで削除されてしまったのかを確認したいものです。以下のコマンドを実行することで、すべてのコミット内のコードを対象にキーワード検索を行うことができます。

git grep '[検索したいキーワード]' $(git rev-list --all)

このコマンドを実行すると、指定したキーワードを含むコミットとその該当箇所(ファイルパス)が表示されます。

ここで利用している各コマンド(git grep, git rev-list)の詳細については以下のサイトの解説が非常に分かりやすいため、説明を委ねます。
https://envader.plus/article/386
https://envader.plus/article/417

特定のコミット時のファイルを参照する方法

キーワード検索によって該当するコミットが見つかったら、あとはそのコミット時点での対象ファイルの内容を確認するだけです。これは以下のコマンドで実現することができます。

git show [確認したいコミットのハッシュ]:[確認したいファイルのパス]

# 例:git show eb1babd:src/app/layout.tsx
# 他のコミットと重複していなければコミットハッシュは一部でもOK

このコマンドにより、指定したコミット時点でのファイルの内容が表示されます。特に「あれ?この機能消えてる?」と思った時に、過去のコミットでどのように実装されていたかを確認するのに非常に便利です。

git showコマンドの詳細に関しても、以下のサイトの解説が分かりやすいため、説明を委ねさせていただきます。
https://envader.plus/article/369

おわりに

今回は、誤って削除してしまった機能や処理を、Gitコマンドを用いて探す方法について共有させていただきました。AIエージェントを活用した個人開発では、速度を優先するあまり、意図せず機能が失われてしまうことがあります。そんな時に、今回紹介したコマンドを使えば、過去のコミットから消えた機能を探し出すことができます。

今回の記事が、同じような境遇に陥ってしまった人の助けになれば幸いです。また、もっと効率的な方法や便利なGitコマンドをご存知の方がいらっしゃいましたら、ぜひコメント欄でシェアしていただけると嬉しいです。

ここまでお読みいただき、ありがとうございました。

Discussion