生成AIのためのGit入門 第7章:失敗しても戻せるから、AIに大胆な作業を任せられる

Claude Codeを使う大きなメリットは、開発作業を速く進められることです。

でも、Claude Codeの本当の強さは「速く作れること」だけではありません。

Gitと組み合わせることで、「失敗しても戻せる状態で、大胆に試せること」が大きな強みになります。

Claude Codeは、コードベースを読み、ファイルを編集し、コマンドを実行し、開発ツールと連携できるエージェント型のコーディングツールです。つまり、かなり広い範囲の作業を任せられる道具です。

ただし、広い範囲を任せられるということは、失敗したときの影響も広くなるということです。

だからこそGitが必要になります。

Gitがあれば、Claude Codeにリファクタリング、ファイル整理、テスト追加、SQL修正のような大きめの作業を安心して試しやすくなります。

たとえるなら、Claude Codeは強力な電動工具です。

Gitは、作業前に取っておく設計図と予備の材料です。

電動工具があると作業は速くなります。

でも、切る場所を間違えたときに戻せる準備がなければ怖いですよね。

Gitがあるから、Claude Codeに大胆な作業を頼めるのです。

AIに大胆な作業を任せるとはどういうことか

Claude Codeに任せる作業には、小さなものと大きなものがあります。

小さな作業は、たとえばDTOを1つ作る、SQLを1行直す、メソッド名を変えるといった作業です。

一方で、大胆な作業は次のようなものです。

大胆な作業内容
リファクタリングコードの動きを変えずに内部構造を整理する
クラス分割大きなクラスを複数の役割に分ける
重複コードの削除同じような処理を共通化する
テストコード追加既存機能を確認するためのテストを増やす
SQL整理長くなったSQLを読みやすくする
ディレクトリ整理ファイルの配置やパッケージ構成を見直す

このような作業は、人間が手作業でやると時間がかかります。

Claude Codeに頼むと、かなり速く進む場合があります。

でも、変更範囲が広くなりやすいため、失敗したときの戻し方を知っておく必要があります。

Gitなしで大胆な作業を任せるのは、消しゴムなしで清書用の原稿に大きく書き込むようなものです。

怖いですよね。

Gitがあれば、下書きに戻せます。

戻せる安心感が生産性を上げる

生産性を上げるというと、「作業を速くすること」だけを考えがちです。

でも、実際には「安心して試せること」も生産性に大きく関わります。

たとえば、次の2つの状態を比べてみてください。

状態開発者の心理
戻し方がわからない怖くて小さな修正しか頼めない
戻し方がわかる大胆な整理や改善を試しやすい

戻せるとわかっているだけで、Claude Codeへの依頼内容が変わります。

「このDAOを読みやすく整理してみて」

「重複している処理を共通化してみて」

「テストを書きやすい構造に変えてみて」

このような依頼がしやすくなります。

つまり、Gitは単なる安全装置ではありません。

Claude Codeに大きな改善を頼むための加速装置でもあります。

自転車でたとえるなら、ブレーキがしっかりしているからスピードを出せるのと同じです。

戻すための代表的なGitコマンド

Claude Codeの変更を戻すときに、よく使うGitコマンドがあります。

まずは次の3つを知っておきましょう。

コマンド主な用途初心者向けのイメージ
git restore作業中のファイル変更を戻す下書きの変更を消しゴムで消す
git resetコミットやステージ状態を戻すセーブ地点を巻き戻す
git revert過去のコミットを打ち消す新しいコミットを作る取り消し用の修正を追加する

Git公式ドキュメントでは、git restoreは指定したツリーの内容で作業ツリーのファイルを復元するコマンドとして説明されています。

git resetは、インデックスや履歴の位置を変更するために使われるコマンドです。公式ドキュメントでは、作業ツリーを変えずに履歴を巻き戻す例や、reset後にコミットをやり直す例が紹介されています。

git revertは、過去の変更を打ち消すためのコミットを作るコマンドです。公式ドキュメントでも、revert時にコミットメッセージを編集できることや、マージコミットを戻すときの注意点が説明されています。

3つとも「戻す」系のコマンドですが、使う場面が違います。

ここを混同しないことが大切です。

git restoreは作業中の変更を戻す

Claude Codeに作業を依頼したあと、まだコミットしていない状態だとします。

git statusを見ると、次のように表示されるかもしれません。

modified: src/main/java/com/example/demo/model/dao/UserDao.java





このUserDao.javaの変更が不要なら、git restoreで戻せます。

git restore src/main/java/com/example/demo/model/dao/UserDao.java





このコマンドを実行すると、UserDao.javaの未コミット変更が元に戻ります。

ただし、注意してください。

git restoreで戻した変更は、基本的に作業ツリーから消えます。

つまり、まだコミットしていない変更を捨てる操作です。

ノートに鉛筆で書いた下書きを消しゴムで消すイメージです。

消す前に、本当に不要な変更かgit diffで確認しましょう。

git diff src/main/java/com/example/demo/model/dao/UserDao.java




確認して不要なら、restoreします。

git restore src/main/java/com/example/demo/model/dao/UserDao.java




Claude Codeに試しに変更してもらい、「この方向は違うな」と思ったらgit restoreが役立ちます。

全部の未コミット変更を戻す場合

Claude Codeが複数ファイルを変更し、その変更をすべて捨てたい場合もあります。

その場合は、次のように実行します。

git restore .




カレントディレクトリ以下の未コミット変更を戻します。

ただし、かなり強い操作です。

必要な変更まで消す可能性があります。

実行前に必ず確認してください。

git status
git diff




「本当に全部戻してよい」と判断できたときだけ使いましょう。

部屋の片づけでたとえるなら、机の上のものを全部元の場所に戻すようなものです。

便利ですが、大事なメモまで片づけてしまうかもしれません。

git resetはコミットをやり直したいときに使う

次にgit resetです。

git resetは少し強力なので、新人エンジニアは慎重に使ってください。

たとえば、Claude Codeの作業をコミットしたあとで、次のように気づいたとします。

「コミットメッセージが雑だった」

「DTOとDAOを同じコミットに入れてしまった」

「まだ直すべき箇所があった」

このようなとき、直前のコミットをやり直したくなります。

作業内容を残したまま、コミットだけ取り消したい場合は、次のようにします。

git reset --soft HEAD~1




HEAD~1は、1つ前のコミットを表します。

--softは、ファイルの変更内容を残したまま、コミットだけを取り消す指定です。

たとえるなら、提出箱に入れた作文をいったん取り戻して、机の上に戻すようなものです。

作文の中身は残っています。

ただし、提出状態を取り消します。

コミットを分け直したいときに便利です。

git reset --hardは特に注意する

git resetには、--hardという指定もあります。

git reset --hard HEAD~1

これは、コミットも作業内容もまとめて戻す強い操作です。

間違って使うと、作業内容が消えます。

新人エンジニアは、--hardを気軽に使わないでください。

コマンド作業内容は残るか注意点
git reset --soft HEAD~1残るコミットだけやり直したいときに使う
git reset --mixed HEAD~1残るステージ状態も戻る
git reset --hard HEAD~1残らない変更が消えるので注意

--hardは、机の上の下書きも提出物もまとめて捨てるようなものです。

使う場面はあります。

でも、使う前に本当に戻してよいか確認してください。

不安なら、先輩に聞きましょう。

Gitで怖い操作をするときに質問するのは、恥ずかしいことではありません!

git revertは共有済みのコミットを安全に取り消す

git revertは、過去のコミットを打ち消すための新しいコミットを作ります。

ここがgit resetとの大きな違いです。

git resetは履歴そのものを巻き戻すイメージです。

git revertは、履歴は残したまま「取り消し用の変更」を追加するイメージです。

たとえば、次のような履歴があるとします。

A -- B -- C

Cの変更を取り消したい場合、revertを使うと次のようになります。

A -- B -- C -- D

Dが「Cを打ち消すコミット」です。

Cは履歴に残ります。

でも、Cの変更内容はDで取り消されます。

議事録でたとえるなら、「前回の決定を取り消します」という新しい記録を残すようなものです。

前回の記録を消すのではなく、取り消した事実を新しく書き足します。

チーム開発では、すでにpushしたコミットを取り消すとき、git revertのほうが安全な場面が多いです。

git revert コミットID




コミットIDは、git logで確認できます。

git log --oneline




たとえば、次のように表示されたとします。

a1b2c3d ユーザー検索に名前条件を追加
e4f5g6h マッチング結果用DTOを追加




a1b2c3dの変更を打ち消したい場合は、次のようにします。

git revert a1b2c3d




revertは履歴を壊さないため、チーム開発で使いやすい戻し方です。

restore、reset、revertの使い分け

3つの戻し方を、初心者向けに整理しましょう。

状況使うコマンド理由
まだコミットしていない変更を捨てたいgit restore作業中のファイルだけ戻せる
直前のコミットをやり直したいgit reset --soft HEAD~1変更内容を残したままコミットを取り消せる
すでに共有したコミットを打ち消したいgit revert履歴を残したまま取り消しコミットを作れる

さらに短く言うと、次のように覚えてください。

コマンド覚え方
git restore作業中の変更を戻す
git resetコミットの位置を戻す
git revert取り消し用コミットを追加する

迷ったら、いきなりコマンドを実行しないでください。

まずgit statusとgit diffを見ましょう。

git status
git diff

今どんな変更があるのかを確認してから、戻し方を選びます。

Claude Codeの失敗パターンと戻し方

Claude Codeを使っていると、いくつかの失敗パターンがあります。

それぞれの戻し方を見てみましょう。

失敗パターン状況戻し方
1ファイルだけ不要な変更が入ったまだコミットしていないgit restore ファイル名
複数ファイルの変更が全部不要だったまだコミットしていないgit restore .
コミットしたが分け直したいまだpushしていないgit reset --soft HEAD~1
コミットした変更を完全にやめたいまだpushしていない状況に応じてgit reset
push済みの変更を取り消したいチームに共有済みgit revert コミットID

ポイントは、「pushしたかどうか」です。

pushとは、自分のローカルリポジトリのコミットを、GitHubなどのリモートリポジトリへ送ることです。

push済みの履歴は、ほかの人が使っている可能性があります。

そのため、push済みのコミットを取り消す場合は、履歴を壊しにくいgit revertを検討します。

大胆な作業を頼む前に必ずコミットしておく

Claude Codeに大胆な作業を頼む前には、必ず現在の状態をコミットしておきましょう。

git status
git diff
git add .
git commit -m "リファクタリング前の状態を保存"




このコミットがあると、戻る場所ができます。

戻る場所があるから、Claude Codeに次のような依頼をしやすくなります。

UserMatchingDaoの処理を読みやすくリファクタリングしてください。
ただし、外部から見た動作は変えないでください。
変更後に、どのメソッドを分割したか説明してください。





作業後に確認します。

git status
git diff




問題がなければコミットします。

git add .
git commit -m "UserMatchingDaoの処理をメソッド分割して整理"




問題があれば戻します。

git restore .




この流れなら、Claude Codeに大胆な作業を頼んでも安心です。

戻せる状態を作ると、リファクタリングがしやすくなる

リファクタリングは、Claude Codeと相性が良い作業の1つです。

なぜなら、AIはコードの重複や長すぎるメソッドを見つけ、整理案を出すのが得意だからです。

しかし、リファクタリングは変更範囲が広くなりやすいです。

そのため、Gitなしで行うと怖い作業になります。

Gitで戻せる状態を作っておけば、次のようなリファクタリングを試せます。

依頼例期待できる効果
長いメソッドを分割してください処理の見通しがよくなる
重複しているSQL組み立て処理を共通化してください修正漏れを減らせる
DTOへの詰め替え処理を別メソッドにしてくださいDAOの読みやすさが上がる
変数名をわかりやすくしてくださいコードの意図が伝わりやすくなる

リファクタリングは、部屋の片づけに似ています。

物の数は変えません。

でも、置き場所を整理して使いやすくします。

うまくいけば快適になります。

ただし、片づけすぎて必要なものが見つからなくなることもあります。

だからこそ、片づけ前の写真、つまりGitのコミットが必要です。

戻せるから実験できる

AI時代の開発では、実験の回数が増えます。

「この書き方のほうが読みやすいかも」

「この設計にしたらテストしやすいかも」

「SQLを分けたら保守しやすいかも」

このような試行錯誤を、Claude Codeは速く手伝ってくれます。

ただし、実験には失敗がつきものです。

失敗できない環境では、実験は減ります。

実験が減ると、改善も減ります。

Gitで戻せる状態を作ると、失敗を恐れずに試せます。

理科の実験でたとえるなら、安全メガネと実験台があるから、薬品を混ぜる実験ができます。

Gitは、AI開発における安全メガネと実験台です。

戻す前にClaude Codeに原因を説明させる

失敗した変更をすぐ戻す前に、Claude Codeに原因を説明させるのもおすすめです。

今回の変更でテストが失敗しました。
git diffを前提に、原因になりそうな変更点を説明してください。
戻すべきファイルと残してよいファイルを分けて提案してください。





このように聞くと、学習にもなります。

ただし、最終判断は人間が行います。

AIの説明を聞き、git diffを確認し、必要なら戻します。

この流れが大切です。

Claude Codeは作業者でもあり、相談相手でもあります。

でも、責任者はあなたです。

戻せる状態を作るためのチェックリスト

Claude Codeに大胆な作業を依頼する前に、次のチェックリストを確認してください。

チェック確認内容
1git statusで未コミット変更を確認したか
2git diffで作業前の変更内容を確認したか
3必要な変更をコミットしたか
4作業ブランチで作業しているか
5Claude Codeへの依頼範囲を明確にしたか
6失敗時にrestore、reset、revertのどれを使うかイメージできているか

この準備ができていれば、Claude Codeに大きめの作業を頼みやすくなります。

逆に、この準備なしで大胆な作業を頼むと危険です。

AIが悪いのではありません。

戻せる準備をしていない状態が危険なのです。

第7章のまとめ

Gitがあると、Claude Codeに大胆な作業を任せやすくなります。

Claude Codeはコードベースを読み、ファイル編集やコマンド実行まで行える強力なツールです。だからこそ、Gitで戻せる状態を作ってから使うことが大切です。

ポイント内容
戻せる安心感大胆な作業を試しやすくなる
git restore未コミットの変更を戻す
git resetコミットをやり直すときに使う
git revert共有済みコミットを打ち消すときに使う
作業前コミットClaude Codeに任せる前のセーブポイントになる

一言でまとめるなら、こうです。

Gitで戻せるから、Claude Codeに大胆な改善を任せられる。

戻せない状態では、AIに大きな作業を頼むのが怖くなります。

戻せる状態なら、リファクタリングも、ファイル整理も、テスト追加も、安心して試せます。

Claude Codeは開発のアクセルです。

Gitのrestore、reset、revertは、道を間違えたときに戻るための地図です。

新人エンジニアのうちは、まずgit restoreで未コミット変更を戻す練習をしてください。

次にgit reset --softで直前のコミットをやり直す練習をしましょう。

そして、チーム開発ではgit revertの考え方も学んでください。

次章では、Claude Codeに任せる作業と、人間が見るべき作業の境界線について解説します。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。