はじめに
「Qiita全国学生対抗戦 Advent Calendar 2025」5日目の記事は、Gitの使い方についてのTipsです。
私は、普段Gitをコマンドラインで使用して開発を進めているのですが、時折「あっ...」というような作業ミスをしてしまうことがあります。
Gitではコミット履歴を綺麗に保つことが推奨されています。この記事では、そんな「困った!」という時に、コマンドで華麗に問題を解決できるコマンドを紹介します!
- Gitをコマンドラインで基本操作ができる方
- Git初心者から、さらにステップアップしたい方
- Gitをさらに使いこなしたい方
この記事が、少しでもGitのコマンドを検索する手間が減り、開発を効率化する助けになれば幸いです!
Gitで困った、あるあるケース5選
ここからは私の遭遇したGitで困った、以下のあるあるケース(?)から、便利コマンドを紹介します。
- 作業途中だけど別の
branchに切り替えたい -
branch名を間違えた・変更したい -
commitメッセージを間違えた - 前の
commitに入れるべき内容を含んでいなかった -
commitを取り消して無かったことにしたい
作業途中だけど別のbranchに切り替えたい
とあるブランチで作業をしていて、急に別のブランチの修正をしなければいけない、でも変更はコミットしたくない、という時に使えます。
# 現在の変更を一時的に退避
$ git stash
# ブランチを移動
$ git checkout <別ブランチ>
# ... 別ブランチでの作業 ...
# 元のブランチに戻る
$ git checkout <元のブランチ>
# 退避した変更を元に戻し、stashを削除する
$ git stash pop
git stash は、コミットしていない変更を、一時的に隠しておくためのコマンドです。
git stash pop をすることで、コミットしていない変更を元に戻せます。
また退避した変更は、git stash listで確認できます。
git stash pop は、コミットしていない変更を元に戻せますが、同時に退避した変更も削除されます。
もし退避した変更を保存したまま、変更も戻したいのであれば、git stash applyが使えます。
ちなみに退避した変更は、スタック構造に保存されているそうです。
branch名を間違えた・変更したい
ローカルで作成したブランチの名前をタイポしてしまった、もっと分かりやすい名前に変えたい、という時に使えます。
pushする前の場合
まだリモートにプッシュしていない場合は、以下のコマンドで簡単に変更できます。
# 現在のブランチ名を変更
$ git branch -m <新しいブランチ名>
# 別のブランチにいる場合
$ git branch -m <古いブランチ名> <新しいブランチ名>
pushした後の場合
すでにリモートにプッシュしてしまった場合は、少し手順が増えます。
- ローカルのブランチ名を変更
- リモートの古いブランチを削除
- 新しい名前でブランチをプッシュ
- 上流ブランチを設定(
git pushのみでプッシュ可能にする)
# 1. ローカルのブランチ名を変更
$ git branch -m <新しいブランチ名>
# 2. リモートの古いブランチを削除
$ git push origin --delete <古いブランチ名>
# 3. 新しい名前でブランチをpush
$ git push origin <新しいブランチ名>
# 4. 上流ブランチを設定
$ git push origin -u <新しいブランチ名>
これは、改名前のブランチ名を覚えておく、ということが必要そうですが...
commitメッセージを間違えた
直前のコミットメッセージにタイポがあったり、内容を修正したい場合に便利です。
$ git commit --amend -m "<新しいメッセージ内容>"
なんとこれだけで、最新のコミットメッセージを修正できます。
-mフラグを使えば、エディタを開かずに直接コマンドラインでメッセージを修正できます。
前のcommitに入れるべき内容を含んでいなかった
コミットはある種のまとまりごとに行った方がいいのですが、時折ファイルをコミットするのを忘れてしまうことがあります。
「あ、このファイルもさっきのコミットに含めるべきだった!」という時に便利です。
# ファイルをステージング
$ git add <ファイル名>
# --no-edit をつけるとメッセージを修正せずにコミットを修正できる
$ git commit --amend --no-edit
これで、直前のコミットにファイルを追加することができます。
ファイルをステージングすることを忘れないようにしましょう。
--amendは便利ですね!
commitを取り消して無かったことにしたい
これもプッシュ前とプッシュ後で、方法が少し異なります。
pushする前のコミットを取り消したい
ローカルでのみ作業している場合は、2つの方法があります。
# 直前のコミットを取り消して、変更は残す(ステージングも解除)
$ git reset --soft HEAD^
# 直前のコミットを取り消して、変更も完全に削除する
$ git reset --hard HEAD^
HEAD^ は1つ前のコミットです。
--softと--hardで、コミットのみを取り消すのか、コミット内容も一緒に取り消すのか、違いが分かれます。
pushした後のコミットを取り消したい
既にプッシュしてしまったコミットは、先ほどのgit resetを使う代わりに git revert を使います。
revert は、指定したコミットを打ち消す新しいコミットを作成します。
# 取り消したいコミットのハッシュを指定
$ git revert <コミットハッシュ>
# エディタが開くので :wq などで保存して抜ける
# 変更をリモートにプッシュ
$ git push origin <ブランチ名>
これにより、「〇〇のコミットを取り消した」という履歴が残り、安全に間違いを修正できます。
なお、コミットハッシュ値はgit logなどで確認できます。
おわりに
今回の執筆をきっかけに、Gitのよくある困ったケースに瞬時に対応できるようになりました!
Gitにはまだまだ便利な機能や、チーム開発に活きる機能がたくさんあります。
開発をより効率化させて質の良いコードを書くためにたくさん時間が当てられるように、開発者用ツールの使い方も慣れていかないといけないな、と感じさせられました。
それでは、明日の「Qiita全国学生対抗戦 Advent Calendar 2025」の記事もお楽しみに!