困りごと:過去の変更を思い出せない
🤔 こんな経験ありませんか?
- 「いつこの機能を追加したんだっけ?」
- 「さっき何を変更したか忘れた...」
- 「今の作業状況がよく分からない」
Gitには、過去の履歴と現在の状態を確認する便利なコマンドがあります!
git status - 現在の状態を確認
git status
は、現在の作業状況を一目で把握できる最も重要なコマンドです。
実践:様々な状態を確認
# プロジェクトを作成
mkdir status-demo
cd status-demo
git init
# 初期状態を確認
git status
状態1:新しいファイルがある場合
# ファイルを作成
echo "Hello Git" > hello.txt
echo "README" > README.md
# 状態を確認
git status
「Untracked files」として表示されます。
状態2:ステージングエリアに追加後
git add hello.txt
git status
「Changes to be committed」に移動しました!
状態3:コミット後の変更
# コミット
git add README.md
git commit -m "初回コミット"
# ファイルを変更
echo "World" >> hello.txt
# 状態を確認
git status
「modified」として表示されます。
git statusの便利なオプション
簡潔な表示(-s / --short)
# 様々な状態のファイルを作成
echo "new file" > new.txt
echo "staged" > staged.txt
git add staged.txt
echo "modified" >> hello.txt
# 通常の表示
git status
# 簡潔な表示
git status -s
記号の意味:
??
= 未追跡(Untracked)A
= 追加予定(Added)M
= 変更あり(Modified)M
= 変更をステージング
git log - 履歴をたどる
git log
は、過去のコミット履歴を確認するコマンドです。
基本的な使い方
# いくつかコミットを作成
echo "function add(a, b) { return a + b; }" > math.js
git add math.js
git commit -m "feat: 足し算関数を追加"
echo "function subtract(a, b) { return a - b; }" >> math.js
git add math.js
git commit -m "feat: 引き算関数を追加"
echo "function multiply(a, b) { return a * b; }" >> math.js
git add math.js
git commit -m "feat: 掛け算関数を追加"
# 履歴を確認
git log
git logの便利なオプション
1. 一行表示(--oneline)
git log --oneline
コミット一覧がコンパクトに!
2. グラフ表示(--graph)
git log --oneline --graph
ブランチの分岐やマージが視覚的に分かる!
3. 最近のn件だけ表示(-n)
# 最近の3件だけ表示
git log -3
# または
git log --oneline -5
4. 特定の作者のコミットを検索
# 作者名でフィルタリング
git log --author="あなたの名前"
5. 日付でフィルタリング
# 今日のコミット
git log --since="today"
# 今週のコミット
git log --since="1 week ago"
# 特定の日付範囲
git log --since="2024-01-01" --until="2024-01-31"
6. 変更内容も表示(-p)
# 各コミットの差分も表示
git log -p -2
7. ファイル名で検索
# 特定のファイルの履歴だけ表示
git log -- math.js
# ファイル名の一覧も表示
git log --name-only
git show - 特定のコミットを詳細表示
# 最新のコミットを詳細表示
git show
# 特定のコミットを表示(コミットIDの最初の数文字でOK)
git log --oneline -3
# 上で表示されたコミットIDを使って
# git show abc1234
実践的な使い方
シナリオ1:作業前の確認
# 現在の状態を確認
git status
# 最近の履歴を確認
git log --oneline -5
# 作業開始!
シナリオ2:コミット前の最終確認
# 何を変更したか確認
git status
# 差分を確認
git diff
# ステージングエリアの差分を確認
git diff --staged
シナリオ3:特定の変更を探す
# コミットメッセージで検索
git log --grep="バグ修正"
# コードの変更内容で検索
git log -S "function add"
エイリアスで効率化
よく使うコマンドにエイリアスを設定:
# エイリアスを設定
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.lg "log --oneline --graph"
# 使ってみる
git st
git lg
トラブルシューティング
Q: git logが長すぎて読めない
A: スペースキーでページ送り、q
で終了
Q: コミットIDが長すぎる
A: 最初の4〜7文字だけでOK
git show abc1234 # フルIDじゃなくてOK
Q: 日本語が文字化けする
A: 以下の設定で解決
git config --global core.quotepath false
まとめ
履歴と状態の確認方法を学びました!
- ✅
git status
で現在の作業状況を把握 - ✅
git log
で過去の変更履歴を確認 - ✅ 様々なオプションで必要な情報を絞り込み
- ✅ エイリアスで作業を効率化
重要:
- 作業前に
git status
- コミット前に
git status
- 迷ったら
git status
次のレッスンでは、間違えた変更を取り消す方法を学びます!
【実践演習】履歴と状態の確認
実際にプロジェクトを作成して、様々な状態と履歴の確認方法を練習しましょう。
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
練習課題
git status -s
で簡潔な状態表示を確認git log --oneline
でコミット履歴を簡潔表示git log --grep="feat"
で機能追加のコミットを検索git show
で最新のコミットの詳細を確認
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log