Dance with Agents

Gitコマンド一覧・応用編

cherry-pick、rebase、reset、stash。重要だけれど難しいものを、危険度つきで。そして、こういうものこそエージェントに頼める、という話。

Git基礎コマンド一覧の先へ。ここから先は、覚えるものというより「こういうことができる」と知っておくものです。名前を伝えれば、あとはエージェントがやってくれます。

コマンド やること 例
git diff 変更の中身を見る git diff
git restore 変更を取り消して、元に戻す git restore file.txt
git switch ブランチを切り替える(checkoutの新しい書き方) git switch main
git stash 作業中の変更を、いったん棚に上げる git stash → git stash pop
git revert あるコミットを打ち消すコミットを新しく作る git revert <ハッシュ>
git reset コミットを取り消す(⚠️ 履歴が変わる) git reset --soft HEAD~1
git cherry-pick 別のブランチのコミットを、1つだけ持ってくる git cherry-pick <ハッシュ>
git rebase 履歴を作り直す・付け替える(⚠️ 履歴が変わる) git rebase main
git reflog 迷子になったときの救出用。 過去の移動履歴を見る git reflog
git tag 目印を付ける(「v1.0はここ」など) git tag v1.0
git blame その行を最後に変更したのが誰か・いつかを見る git blame file.txt

「ハッシュ」というのは、コミット1つ1つに付いているa1b2c3dのような記号です。git logで確認できます。

⚠️ 履歴を書き換えるものと、書き換えないもの

応用編でいちばん大事なのは、ここです。 コマンドの意味より先に、この線を知っておいてください。

どうなるか
書き換えない(revert・stash・cherry-pick) 新しいコミットが増えるだけ。やり直しても、なかったことにはならない
書き換える(reset --hard・rebase・commit --amend) 過去のコミットそのものが作り直される。同じ履歴が二度と再現できなくなる

そして鉄則がひとつあります。

一度pushしたものの履歴は、書き換えない。

自分のパソコンの中だけなら、失敗しても自分が困るだけです。でも送ったあとに書き換えると、それを前提に作業している人(あるいは別の場所で動いている自分)と食い違います。 直したいときは、resetではなくrevert——打ち消すコミットを新しく足すほうを選んでください。

削除してしまった、と思ったらreflog

「間違えて削除した」の大半は、まだ戻せます。

git reflog

これは「自分がどこにいたか」の移動記録です。resetで吹き飛ばしたつもりのコミットも、ここには残っています。表示されたハッシュを指定すれば、その時点に戻れます。

慌てて操作を重ねる前に、まずこれを打ってください。 そして、この状況こそエージェントに相談する場面です。「git reset --hardしてしまった、さっきの状態に戻したい」と言えば、reflogを読んで手順を示してくれます。

コマンド名ではなく、「こうしたい」を言えば足ります

ここが応用編の本題かもしれません。これらのコマンドは、名前と使い方を暗記するものではありません。

やりたいことを日本語で言えば、エージェントが選びます。

こう言えば だいたいこれになります
「この変更だけ、別のブランチにも入れたい」 cherry-pick
「作業中だけど、いったん別の用事をやりたい」 stash
「さっきのコミット、なかったことにしたい」 revert か reset
「コミットメッセージを書き間違えた」 commit --amend
「最新のmainに追いつかせたい」 rebase か merge
「この行、いつ誰が入れたの?」 blame

難しいのはコマンドを打つことではなく、どれを選ぶかの判断です。そこは経験がものを言う領域で、エージェントはその経験を持っています。

ただし、丸投げしきらないための一線があります。エージェントがrebaseやreset --hardを提案してきたら、「それ、もうpushしてある?」と自分で確認してください。 上の鉄則に関わる判断で、そこだけは状況を知っているあなたのほうが正確です。

GUIアプリで、目で見て確かめる

コマンドと同じくらい大事なのが、変更を目で見ることです。

git diffでも差分は読めますが、ファイルが増えてくると追いきれません。 Gitを画面で扱うアプリを1つ入れておくと、ここが一気に楽になります。変更前と変更後が左右に並び、どの行が増えてどの行が削除されたかが色で分かります。

エージェントと組むときに、これが助けになります。エージェントは一度にたくさんのファイルを書き換えるので、「何をされたのか」を文章の報告だけで把握するのは無理があります。 目で見れば数秒です。

そして——差分が見えるのはプログラムだけではありません。 文章もそうです。このサイトのような文章の集まりでも、「どこを直したのか」が行単位で並んで見えます。

ここが、脱初心者の分かれ目だと思います。最初は「エージェントに任せて、動けばよし」で構いません。でも続けていくと、中身を自分の目で確かめる場面が必ず来ます。 そのとき、差分を見ることに慣れているかどうかで、進み方がまるで変わります。

どのアプリを入れるかは、エージェントに「今どれがいい?」と聞くのがいちばん早いです。使っているOSや、無料かどうかも含めて答えてくれます。

関連

Gitの記事

Gitのページへ →