手を動かしながら覚えるGitコマンド

この記事は、実際にコマンドを打って結果を見ながら 学ぶことを目的にしています。
作業環境は WSL2 / Ubuntu を想定していますが、macOS や Windows でも基本は同じです。
作業フォルダを準備
$ mkdir ~/git-lesson && cd ~/git-lesson
ここに学習用リポジトリを作っていきます。
Gitの初期設定
Gitのインストール確認
$ git --version
git version 2.39.2
(もしインストールされていなければ sudo apt install git
)
ユーザー名とメール設定
$ git config --global user.name "Taro Yamada"
$ git config --global user.email "taro@example.com"
$ git config --global init.defaultBranch main
確認:
$ git config --list
user.name=Taro Yamada
user.email=taro@example.com
リポジトリの作成と基本操作
リポジトリを初期化
$ mkdir basics && cd basics
$ git init
Initialized empty Git repository in ~/git-lesson/basics/.git/
ASCII図(まだ何もない)
(空っぽのリポジトリ)
HEAD → main
ファイルを作ってステージング
$ echo "Hello Git" > hello.txt
$ git status
# Untracked files:
# hello.txt
ステージング → コミット
$ git add hello.txt
$ git commit -m "feat: add hello.txt"
[main (root-commit) 1234567] feat: add hello.txt
1 file changed, 1 insertion(+)
ASCII図(コミット1つできた)
(o) A
^
main
HEAD
ファイルを編集して差分確認
$ echo "Second line" >> hello.txt
$ git diff
+Second line
ステージしてコミット
$ git add hello.txt
$ git commit -m "chore: add second line"
ログを確認
$ git log --oneline --graph
* abcdef2 chore: add second line
* 1234567 feat: add hello.txt
ASCII図
A -- B
^
main, HEAD
ブランチ操作
新しいブランチを作って切り替え
$ git switch -c feature/readme
README.md を作成
$ echo "# Git Lesson" > README.md
$ git add README.md
$ git commit -m "feat: add README"
ASCII図
A -- B (main)
\
C (feature/readme, HEAD)
ブランチ一覧
$ git branch
* feature/readme
main
main に戻る
$ git switch main
マージとリベース
マージの基本(git merge
)
$ git merge feature/readme
Updating B..C
Fast-forward
ASCII図(直線的につながった)
A -- B -- C
^
main, HEAD
コンフリクト解消例
<<<<<<< HEAD
Hello from MAIN
=======
Hello from FEATURE
>>>>>>> feature/conflict
解決後 → git add
→ git commit
。
リベースの基本
リベースとは、自分のブランチの基点を付け替えて、履歴をまっすぐに並べ直す操作。
「他のブランチの最新状態に、自分の作業を後から積み直す」イメージです。
👉 履歴をキレイにしたいときに便利。
インタラクティブリベース
インタラクティブリベースは、過去の複数のコミットを整理・編集するモードです。
主な用途:
- コミットメッセージ修正(reword)
- コミットのまとめ(squash)
- 並べ替えや削除
例:
$ git rebase -i HEAD~3
pick a1b2c3 feat: add header
squash d4e5f6 fix: typo in header
pick g7h8i9 feat: add footer
複数のコミットを1つにまとめる(squash)
A---B---C---D---E (HEAD)
| | |
修正 修正 修正 ← 細かいコミットが多い
コミットメッセージを修正
git rebase -i HEAD~3
# エディタで:
pick abc123 コミット1
reword def456 コミット2 # ← これを修正 削除 順番を変更
pick ghi789 コミット3
👉 共有ブランチでは使わず、個人作業で履歴を整理するときに活用。
変更の取り消し
取り消す段階でコマンドが変わります。
作業ディレクトリ → git restore
ステージング → git restore --staged
コミット履歴 → git revert / git reset
作業変更を破棄
$ git restore hello.txt
ステージ解除
$ git restore --staged hello.txt
コミットを打ち消す
$ git revert HEAD
👉 履歴を壊さずに取り消し。
コミット自体を取り消す(reset)
$ git reset --mixed HEAD~1
👉 履歴を書き換えるので個人作業向け。
リモートリポジトリ
$ git remote add origin ~/git-lesson/demo-remote.git
$ git push -u origin main
$ git clone ~/git-lesson/demo-remote.git basics-clone
履歴の書き換え
$ git commit --amend -m "fix: better message"
$ git rebase -i HEAD~3
タグ(理由とメリット)
タグの用途
- バージョン管理:リリースバージョンをマーク(v1.0.0、v2.3.1など)
- 重要なポイント:特定のコミットに目印を付ける
- リリース管理:本番環境にデプロイしたバージョンを記録
メリット
本番環境にデプロイしたバージョンを記録 することで、「今本番で動いているのはv1.2.0」と明確にわかる。
バグが出たときに「どのバージョンで発生したか」を特定しやすい。
タグは リリースの目印。
$ git tag v1.0.0
$ git tag -a v1.1.0 -m "Release 1.1"
$ git tag
メリット:リリース管理・過去再現・バージョン管理がシンプル。
スタッシュ(理由とメリット)
スタッシュは 作業を一時保存。
$ git stash push -m "WIP"
$ git stash list
$ git stash pop
メリット:中断しやすい、安全に作業を退避、ブランチ切り替えが楽。
まとめ
Git は「ファイルの状態を記録して履歴を管理する」ツールです。
学ぶ際には、まず リポジトリの初期化・変更の記録・履歴の確認 といった基本操作に慣れることが重要です。
- 基本操作(init / add / commit / status / log)
→ Git の最小単位であり、履歴管理の仕組みを理解する第一歩です。 - ブランチ操作(branch / switch / merge / rebase)
→ 複数人での並行作業や、機能開発を効率的に進めるための基本です。
マージは履歴を残し、リベースは履歴を整理するという違いを理解して使い分けます。 - 変更の取り消し(restore / revert / reset)
→ 作業中・ステージング中・コミット後のどの段階を取り消したいのかによって使うコマンドが変わります。
特にrevert
は履歴を壊さない安全な方法、reset
は履歴を書き換える強力な方法として覚えておくと良いです。 - タグ(tag)
→ リリースや節目に「目印」をつけることで、過去バージョンを簡単に再現でき、チーム開発や配布管理にも役立ちます。 - スタッシュ(stash)
→ 作業を一時的に退避できるため、未完成の変更を安全に保存し、別のブランチへ切り替えて作業する場面で便利です。
これらを組み合わせることで、Git は「単なる保存ツール」ではなく、チーム開発や長期的なプロジェクト運営を支える強力な履歴管理システムになります。
よく使うGitコマンド早見表
操作内容 | コマンド例 | 説明 |
---|---|---|
リポジトリ初期化 | git init | 新規リポジトリを作成 |
ユーザー設定 | git config --global user.name "Taro" | 名前・メールを設定 |
ステータス確認 | git status | 状態を表示 |
変更をステージ | git add file.txt | 次のコミットに追加 |
コミット | git commit -m "message" | ステージを記録 |
履歴確認 | git log --oneline --graph | 履歴を簡潔に確認 |
差分確認 | git diff | 未ステージの差分 |
ブランチ作成+切替 | git switch -c feature | 新しいブランチへ |
ブランチ一覧 | git branch | 一覧表示 |
マージ | git merge feature | ブランチを統合 |
リベース | git rebase main | 履歴を直線化 |
インタラクティブリベース | git rebase -i HEAD~3 | 履歴を整理 |
作業の変更を破棄 | git restore file.txt | 編集を取り消す |
ステージ解除 | git restore --staged file.txt | ステージから外す |
コミット取り消し(安全) | git revert HEAD | 打ち消しコミットを作成 |
コミット巻き戻し(危険) | git reset --hard HEAD~1 | 履歴ごと消す |
タグ作成 | git tag v1.0.0 | バージョンに印を付ける |
スタッシュ | git stash push -m "WIP" | 作業を一時保存 |
スタッシュ復元 | git stash pop | 作業を復元して削除 |