この章では、Git の基本操作をマスターした皆さんに、さらに一歩進んだ応用的な使い方を紹介します。これらの機能を使いこなせば、Git での作業がより効率的になり、開発の幅も広がるでしょう。
特定のコミットだけを適用する(git cherry-pick)
git cherry-pick は、他のブランチにある特定のコミットだけを、現在のブランチに適用したいときに使うコマンドです。
どんなときに使うの?
例えば、以下のような場合に git cherry-pick が役立ちます。
new-featureブランチで追加した新機能の一部だけを、先にmainブランチに適用したい。fix-bugブランチで行ったバグ修正を、mainブランチにも適用したい。- 間違って別のブランチにコミットしてしまった変更を、正しいブランチに適用し直したい。
具体的な使用例と手順
ここでは、fix-bug ブランチで行ったバグ修正のコミットを、main ブランチに適用する例を見てみましょう。
コミットハッシュの確認: まずは、
fix-bugブランチで修正したいコミットのコミットハッシュを確認します。git logコマンドで確認できます。bashgit checkout fix-bug git log --onelineコミットハッシュは
git logで表示される英数字の羅列です。以下のような表示から、適用したいコミットのコミットハッシュをコピーしておきます。bashe5f7a3b (HEAD -> fix-bug) Fix the bug d4c8b2a Add new feature ...ここでは、
e5f7a3bのコミットを適用したいとします。ブランチを切り替え: 次に、コミットを適用したいブランチ(ここでは
main)に切り替えます。bashgit checkout maincherry-pickの実行:git cherry-pickコマンドに続けて、適用したいコミットのコミットハッシュを指定して実行します。bashgit cherry-pick e5f7a3bこれで、
fix-bugブランチのe5f7a3bのコミットが、mainブランチに適用されました。
間違ったコミットを直前のコミットとまとめたい!(git commit --amend)
「コミットメッセージを間違えてしまった!」「コミットに含めるべきファイルを忘れてしまった!」そんなときは、git commit --amend の出番です。
どんなときに使うの?
git commit --amend は、主に以下のような場合に使います。
- 直前のコミットメッセージを修正したい。
- 直前のコミットに、ファイルの変更を追加したい。
- 間違ってコミットした内容を、直前のコミットに含めてしまいたい。
具体的な使用例と手順
ここでは、直前のコミットメッセージを修正する例を見てみましょう。
commit --amendの実行: ターミナルで以下のコマンドを実行します。bashgit commit --amendこのコマンドを実行すると、コミットメッセージを編集するエディタが開きます。
コミットメッセージの修正: エディタでコミットメッセージを修正し、保存してエディタを終了します。
これで、直前のコミットメッセージが修正されました。
ファイルの変更を直前のコミットに追加したい場合は、まず git add で変更をステージしてから、git commit --amend を実行します。
bash
git add index.html
git commit --amendgit commit --amend は、直前のコミットを書き換える コマンドです。そのため、すでにリモートリポジトリにプッシュしたコミットに対しては、使用しないように注意してください。
一時的に変更を退避させる(git stash)
「作業中のファイルをコミットせずに、一時的に別のブランチに切り替えたい」「今の変更を一旦脇に置いておきたい」そんなときに便利なのが git stash です。
どんなときに使うの?
git stash は、主に以下のような場合に使います。
- 現在のブランチでの変更を一時的に保存して、別のブランチに切り替えたい。
- 作業中の変更が中途半端な状態だけど、他の緊急のタスクに対応する必要がある。
- 現在の変更をコミットする前に、
git pullで最新の状態を取得したい。
具体的な使用例と手順
ここでは、作業中の変更を一時的に保存して、別のブランチに切り替える例を見てみましょう。
変更の保存:
index.htmlを変更した状態で、以下のコマンドを実行します。bashgit stashこれで、
index.htmlの変更が一時的に保存され、作業ディレクトリは最後のコミットの状態に戻ります。ブランチの切り替え: 別のブランチ(例えば
main)に切り替えます。bashgit checkout main変更の復元:
mainブランチでの作業が完了したら、new-featureブランチに戻って、先ほど保存した変更を復元しましょう。bashgit checkout new-feature git stash popgit stash popコマンドで、最後に保存した変更が復元されます。
git stash には、他にも便利なオプションがあります。詳しくは、git stash --help で確認してみてください。
タグでリリースを管理しよう(git tag)
git tag コマンドを使うと、特定のコミットに「タグ」を付けることができます。タグは、主にソフトウェアのリリースバージョンを管理するために使われます。
例えば、バージョン 1.0.0 をリリースする際に、その時点のコミットに v1.0.0 というタグを付けることで、後からそのバージョンのコードを簡単に参照できるようになります。
タグの作成:
bash
git tag v1.0.0タグの一覧表示:
bash
git tagタグ付きでコミットをチェックアウト:
bash
git checkout v1.0.0git reflog で救出!
「間違って git reset してしまった!」「消してしまったブランチを復活させたい!」そんな絶望的な状況でも、諦めるのはまだ早いです。git reflog が救世主になるかもしれません。
git reflog は、Git の操作履歴を記録した「参照ログ」を表示するコマンドです。git reflog を使えば、コミット履歴から消えてしまったコミットでも、参照ログに残っていれば復元できる可能性があります。
参照ログの表示:
bash
git reflogこのコマンドを実行すると、以下のように操作履歴が表示されます。
e5f7a3b (HEAD -> main, tag: v1.0.0) HEAD@{0}: commit: Fix the bug
d4c8b2a HEAD@{1}: checkout: moving from main to new-feature
c7b4e5f HEAD@{2}: commit: Add new feature
...HEAD@{数字} は、特定の時点の HEAD の位置を表しています。例えば、HEAD@{1} は、1つ前の HEAD の位置です。
コミットの復元:
例えば、e5f7a3b のコミットを復元したい場合は、以下のコマンドを実行します。
bash
git checkout e5f7a3bこれで、e5f7a3b のコミットの状態を復元できました。この状態を新しいブランチとして保存しておくとよいでしょう。
bash
git switch -c restore-e5f7a3bgit reflog は、Git の最後の砦です。いざというときのために、覚えておくと安心です。
便利なエイリアス設定
よく使う Git コマンドを、短いエイリアス(別名)で実行できるように設定しておくと、日々の作業が効率化されます。
例えば、git status を git st で実行できるようにするには、以下のコマンドを実行します。
bash
git config --global alias.st status他にも、以下のようなエイリアスを設定しておくと便利です。
bash
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.l "log --oneline --graph --decorate"これらのエイリアスは一例です。自分好みにカスタマイズして、Git をより快適に使いこなしましょう!