GitHubalt01

コマンドは優雅な呪文|特別編 Git基本操作入門

著者: 管理者 / 2025-08-25 (更新: 2025-08-25)

— 手に馴染むターミナルと、小さな勇気 —

user01 Happy
先生、いよいよ実践ですのね! わたくし、基本コマンドをまとめて覚えたいですわ。操作の流れも、迷わないように丁寧に知りたいですの✨
user02 Calm
承知しました。今日は「最初の設定 → はじめ方 → 記録(add/commit) → 戻す → ブランチ運用 → 共同作業 → 失敗しない日常フロー」の順で、実務の流れそのままに解説します。

📝 解説:最初の一歩(1回だけの初期設定)

まずは“誰が書いたか”を残す準備です。PCに一度だけ設定します。

# ユーザー情報(必須)
git config --global user.name "Your Name"
git config --global user.email "you@example.com"

# よく使う推奨設定
git config --global init.defaultBranch main      # 新規リポの既定ブランチ名
git config --global pull.rebase false            # pull の既定挙動(後述)
git config --global core.autocrlf input          # 改行の扱い(mac/linux: input / win: true 推奨)
git config --global color.ui auto                # 端末で色表示

# 設定確認
git config --list --global
user01 Calm
最初の名札貼り、でございますわね。これで履歴に「作者」が残る、と…😊

📝 解説:プロジェクトのはじめ方(init と clone)

  • 新規で始める(空のフォルダから)
mkdir my-app && cd my-app
git init
echo "# My App" > [README](/blog/README)
echo "node_modules/" > .gitignore
git add .
git commit -m "chore: bootstrap project"
  • 既存リポジトリを取ってくる(GitHubなど)
git clone https://github.com/owner/repo.git
cd repo
git status

迷ったら git status。今の作業状況の“健康診断”だと思ってください。

user02 Happy
`.gitignore` は“入れない荷物リスト”。大きな生成物(`node_modules/` や `dist/`)は入れないのが礼儀です。

📝 解説:変更を“写真に撮る”—— add / commit / log / diff

変更は ステージング → コミット の二段構えで記録します。

git status                       # 変更の有無を確認
git add <file>                   # 個別に乗せる
git add .                        # 変更をまとめて乗せる
git commit -m "feat: add login"  # スナップショットを保存
git log --oneline --graph --decorate --all  # 履歴の鳥瞰図
git diff                         # まだステージしていない差分
git diff --staged                # これからコミットされる差分

コミットメッセージのコツ

  • 1行目は“結果を要約”:「fix: handle empty input」
  • 必要なら空行の後に理由や背景を詳述
user01 Surprised
まあ!写真みたいに“パシャ”と保存する感じですのね。`log` の矢印が小さな物語に見えてきましたわ📚

📝 解説:やり直しの美学——restore / reset / revert / stash

怖がらずに直せると、思い切って作業できます。

# ファイルの変更を捨てる(未ステージぶん)
git restore <file>

# ステージから降ろす
git restore --staged <file>

# “コミットを取り消して履歴を作り直す”(ローカル向け)
git reset --soft HEAD~1   # 直前のコミットを解体し、変更はステージに残す
git reset --mixed HEAD~1  # 変更はワーキングに残し、ステージは外す(既定)
git reset --hard HEAD~1   # 変更ごと消す(取り返しがつかない。慎重に)

# “履歴を壊さず、打ち消すコミットを作る”(共有履歴向け)
git revert <commit>

# 作業を一時避難
git stash push -m "wip: refactor"
git stash list
git stash pop   # 取り出して適用(最新)

覚え方

  • 共有済みの履歴は revert(安全第一)
  • 自分だけの履歴なら reset(ただし --hard は要注意)
  • 机の上を片付けたい時は stash
user02 Serious
`reset --hard` は“紙ごとシュレッダー”。直前に `git status` と `git log` を確認してから使いましょう。

📝 解説:ブランチ運用——branch / switch / merge / rebase

“作業用の分岐レーン”がブランチです。

# ブランチの作成と移動
git branch                     # 一覧
git branch -vv                 # 追跡先つき一覧
git switch -c feature/login    # 作成&切替
git switch main                # 既存へ切替(旧: git checkout)

# 統合(merge)
git switch main
git pull origin main           # 最新に更新
git merge feature/login        # 変更を取り込む(履歴は分岐のまま)

# 線を真っ直ぐに整える(rebase:自分の未共有コミットにのみ)
git switch feature/login
git rebase main                # mainの先頭に自分の作業を積み直す

コンフリクト解消フロー

  1. 競合ファイルをエディタで開く(<<<<<<< などの印を手で解消)
  2. 解消後に git add <file>
  3. git merge --continue または git rebase --continue

チームでは「共有ブランチに rebase しない」が無難。個人作業の整形に限定しましょう。

user01 Calm
分岐レーンで安全運転、ですのね。`merge` は交差点で合流、`rebase` は車線を付け替えるイメージ…しっくり来ましたわ🚗

📝 解説:リモート連携——remote / fetch / pull / push

GitHubなど“中央の拠点”が リモート です。

# リモートの登録と確認
git remote add origin https://github.com/owner/repo.git
git remote -v

# 取り込み(安全な読み取り)
git fetch origin               # 参照だけ更新(作業ツリーは変えない)
git pull                       # fetch + merge(既定)
git pull --rebase              # fetch + rebase(履歴が直線的に)

# 送り出し(初回は上流設定 -u)
git push -u origin main        # 以後は `git push` だけでOK
git push origin feature/login

# 共同作業での注意
# rebase後に上書きが必要な場合のみ(強制は危険、まずは相談)
git push --force-with-lease

GitHubでの基本の流れ(Pull Request)

  1. feature/* ブランチを作る → 実装
  2. GitHubに push → Pull Request(PR)を作成
  3. レビュー&修正 → マージ(通常は “Squash and merge” か “Merge commit”)
user02 Happy
“fetch してから考える”は良い習慣です。作業ツリーを荒らさず情報だけ更新できます。

📝 解説:日常で迷わない“レシピ集”

A. 個人開発の基本ルーチン

git switch -c feature/awesome    # 作業枝を切る
# ...作業...
git add -A
git commit -m "feat: awesome"
git switch main
git pull --rebase                # mainを最新に
git merge feature/awesome
git push
git branch -d feature/awesome    # 使い終えた枝を掃除

B. チームでの安全運転(PR前提)

git switch -c feature/login
# ...作業...
git add -A
git commit -m "feat: login ui"
git fetch origin
git rebase origin/main           # 自ブランチ上で整形(共有前)
git push -u origin feature/login
# → GitHubで Pull Request 作成 → レビュー → マージ

C. コンフリクトが出たら

git status
# 競合ファイルを直す → 保存
git add <fixed-file>
git merge --continue   # あるいは git rebase --continue

D. 怖くなったら

git log --oneline --graph --decorate --all  # まず状況確認
git stash push -m "panic button"            # 机上退避
# 落ち着いてから取り出す
git stash pop
user01 Happy
これなら明日から“何を押せばよいか”が分かりますわ! 迷子防止のレシピ、心強いですの🍀

📝 まとめ

  • 初期設定で名札と作法を整える(user.name/user.emailinit.defaultBranch など)
  • はじめ方git init(新規)と git clone(取得)
  • 記録status → add → commit → log/diff の型を作る
  • やり直しは用途で使い分け(restore/reset/revert/stash
  • ブランチ運用switchmerge を基本、rebase は“自分の未共有作業の整形”に限る
  • 共同作業fetch/pull/push と PR が軸。強制 push は最後の手段
  • 日常レシピを覚えて、まずは手を動かすのが近道
user02 Calm
素晴らしい吸収力です。次回は「履歴の読み解き方」と「事故らないリカバリ術」を、もう一歩だけ深掘りしましょう。

こちらの記事もどうぞ みんなで作るコードの宝箱|第1回 GitHub入門みんなで作るコードの宝箱|第1回 GitHub入門 歴史を操る力|第2回 Gitのバージョン管理とは?歴史を操る力|第2回 Gitのバージョン管理とは?