本文へスキップ
totonoe.tech

お知らせ

新ツール

「Gitコマンドを整える」を公開 — add・commit・push・pull・reset が「何をどこへ動かすか」を図で見る

🌿 Gitコマンドを整える を公開しました。Linux・コマンドのカテゴリに入ります。

コマンドの一覧表では覚えられない理由

git add はステージングエリアへ登録、git push はリモートリポジトリに反映——一覧表にはそう書いてありますが、「ステージングエリア」や「リモート」がどこにあるのか、頭の中に絵が無いと、いくら読んでも定着しません。

このツールは、Git が扱う4つの場所を横一列に並べます。

💻 作業ツリー → 📦 ステージ → 🗄️ ローカルリポジトリ → ☁️ リモートリポジトリ

そのうえで、コマンドを打つと何がどこからどこへ飛ぶかをアニメで見せます。「① 変更を記録する」「② 共有する」「③ 取り消す」「④ 枝分かれ」「⑤ 始める」の5つの場面に分けてあり、コマンド一覧表の各行から該当する図へ飛べます。

一番誤解される fetch と pull

git fetch はリモートの最新情報を取ってきますが、作業ツリーには一切反映しません。取ってきた記録がローカルリポジトリの中に置かれるだけです。git pull は多くの場合「fetch+merge」を1回で行うコマンドで、ここで初めて作業ツリーまで届きます。

図では、fetch の直後に「🚫 まだ作業ツリーには反映されない」というバッジが出ます。この1枚で伝わることが、文章だと何行も要ります。

説明の正確さにこだわりました

Git のコマンド一覧は世の中にたくさんありますが、簡略化しすぎて不正確になっているものが少なくありません。このツールでは次の点を正確に書いています。

  • git reset は「直前のコミットを取消」ではありません。 HEAD(今いる位置)を指定したコミットへ動かすコマンドで、--soft / --mixed / --hard によって作業ツリーとステージをどこまで戻すかが変わります。--hard は未保存の変更が消えるので、図の中でも警告を出しています
  • git revert は履歴を消しません。 指定したコミットを打ち消す新しいコミットを追加します。共有済みの履歴を戻すときは reset ではなくこちらです
  • git checkout は役割が分かれました。 現在は git switch(ブランチ移動)と git restore(ファイル復元)に分かれています。checkout も動きますが、両方を書いています
  • git rebase は merge とは別物です。 自分のコミットを別の土台の上に置き直すため、履歴が書き換わります。共有済みのブランチでは使わないのが定番です

設定によって挙動が変わる箇所は「多くの場合」「設定によっては」と書き、断定を避けています。

各コマンドの「そのまま打てる形」つき

git commit -m "メッセージ" のように、コピーしてすぐ使える形を20コマンドぶん添えました。全215種になりました。

運営サイト

私たちが運営するサイト