Git の学び方: 学習計画、練習ツール、ドキュメント、実践
Git は4つの段階で学ぶのが効果的です。基本の流れ(init、add、commit、log)、ブランチとマージ、リモートリポジトリとチームでの作業、そしてミスの取り消しと高度なツールです。実務で安定して使えるまでには、自分のリポジトリで2〜4週間の練習が目安になります。
Git は読むだけでは身につきません。手を動かして覚えます。チームで自信を持って作業するには、20個ほどのコマンドを身につけ、3つの考え方を理解すれば十分です。コミットはプロジェクトのスナップショット、ブランチはコミットを指すポインタ、リモートリポジトリは履歴のもう1つのコピーです。以下では、段階ごとの学習計画を、練習問題、無料の教材、段階を終えた目安とともに紹介します。
この計画は、ターミナルの基本(cd や ls)がある程度使える初心者を想定しています。使えない場合は、まずコマンドラインの基礎を1晩かけて学んでください。それなしで Git を学ぶのは、かなり大変です。
Git を体系的に学ぶべき理由
何年も、他人の手順からコピーした5つほどのコマンドだけで作業している人がいます。そして、最初のコンフリクトや「detached HEAD」で慌てます。原因はたいてい1つで、頭の中にモデルがないのです。つまり、そのコマンドが履歴とファイルに何をしているのかを理解していません。
体系的に学ぶと、すぐに効果が出ます。ミスを取り戻せると分かっているので、実験を怖がらなくなります。コンフリクトを落ち着いて解決でき、レビュアーや採用担当者が見ても分かりやすい、整った履歴を残せます。Git は、フロントエンドから DevOps、データ分析まで、ほぼすべての IT 職種の面接で確認されます。
段階1. 基礎: リポジトリ、インデックス、コミット
最初の段階の目標は、基本の流れと、Git の3つの領域(作業ディレクトリ、インデックス、リポジトリ)を理解することです。1日1時間で、2〜4日かかります。
- インストールと初期設定:
git config --global user.name、user.email、既定のブランチmain。 - リポジトリの作成:
git init。 git status→git add→git commitの流れ。git add -pで一部だけを追加する。- 履歴の確認:
git log --oneline、git diff、git diff --staged、git show。 .gitignore: リポジトリに入れてはいけないものを決める。
練習問題。 メモや小さなスクリプトのためのリポジトリを作ります。15〜20個のコミットを行い、それぞれが1つの論理的な変更で、分かりやすいメッセージを持つようにします。コマンドを実行するたびに git status を確認し、何が変わったかを自分で説明してください。
段階を終えた目安: git diff と git diff --staged の出力の違いを、ヒントなしで説明でき、変更したファイルの一部だけをコミットできること。
段階2. ブランチとマージ
ブランチは Git の中心であり、初心者が最も怖がる部分です。ここで大切なのは、コマンドを暗記することではなく、コミットのグラフを頭に描けるようになることです。この段階には約1週間を充てます。
- 作成と切り替え:
git branch、git switch、git switch -c。 - HEAD とは何か。detached HEAD の状態。
- マージ:
git merge、fast-forward とマージコミット、--no-ffフラグ。 - コンフリクト:
<<<<<<<と>>>>>>>のマーカー、git merge --abort。 - 可視化:
git log --oneline --graph --all。
練習問題。 main から2つのブランチを作り、それぞれで同じファイルの同じ行を変更します。順にマージして、コンフリクトを発生させ、解決してください。退屈になるまで繰り返します。
この段階では、後で紹介する対話型の練習ツールが特に役立ちます。コマンドのたびにグラフを表示し、直感を素早く育ててくれます。
段階3. リモートリポジトリとチームでの作業
目標は、チームで実際に行われているように、サーバーと連携して作業することです。GitHub、GitLab、その他の Git ホスティングのアカウントが必要です。期間は約1週間です。
- 接続とクローン:
git remote add、git clone、SSH 鍵によるログイン。 - 同期:
git push、git push -u、git fetch、git pull、それぞれの違い。 origin/mainのようなリモート追跡ブランチ。- フォーク、feature ブランチ、コードレビューのある pull request。
- チームの進め方: GitHub Flow、Git Flow、トランクベース開発。
練習問題。 1つのリポジトリを、2つの異なるフォルダに clone して、2つの「パソコン」で作業するように扱います。一方でコミットして push し、もう一方で取り込みます。サーバーの方が先に進んでいて push が拒否される状況を作り、その理由を理解してください。
git clone git@github.com:you/sandbox.git copy-a
git clone git@github.com:you/sandbox.git copy-b
cd copy-a && echo "из A" >> notes.txt && git commit -am "Правка из A" && git push
cd ../copy-b && echo "из B" >> notes.txt && git commit -am "Правка из B"
git push # rejected: сервер ушёл вперёд
git pull # 変更 A を取得し、notes.txt のコンフリクトを解決
git push
この短いシナリオは、チームで最もよく起きる状況を再現しています。各コマンドの出力を読み、push が拒否された理由、fetch の後に origin/main に何が現れたか、マージコミットがどこから来たかを確認してください。その後、git pull --rebase で同じことを行い、git log --oneline --graph --all でグラフを比べましょう。
さらに効果的なのは、仲間を見つけて小さなプロジェクトを一緒に pull request で進めることです。レビュー、コンフリクト、ブランチに関する取り決めを、実感をもって学べます。
段階4. ミスの取り消し
この段階で、Git は不安の種から安全網へと変わります。3〜5日かかります。
git restoreとgit restore --staged: ファイルとインデックスの取り消し。git commit --amend: 直前のコミットを直す。git resetの--soft、--mixed、--hardモード。git revert: 公開済みのコミットを安全に取り消す。git reflog: 「失われた」コミットを復元する。
練習問題。 いくつかコミットを作り、git reset --hard HEAD~3 を実行して、reflog から復元します。「共有」ブランチのコミットを revert で取り消し、履歴にどう現れるかを確認してください。
段階5. 高度なツール
これらは必要になったときに習得すれば十分ですが、存在を事前に知っておくと役立ちます。
| ツール | 必要になる場面 |
|---|---|
git rebase と git rebase -i | 一直線の履歴、pull request の前のコミットの整理 |
git stash | 完成していない作業をコミットせずに、急いで切り替える |
git cherry-pick | ホットフィックスなど、1つのコミットだけを移す |
git tag | リリースのバージョンに印を付ける |
git bisect | コードを壊したコミットを見つける |
git worktree、git submodule | 複数の作業コピー、入れ子のリポジトリ |
Git の練習ツール
練習ツールには、安全なサンドボックスがあり、結果がすぐ見えるという利点があります。無料で使える主なものは次のとおりです。
- Learn Git Branching(learngitbranching.js.org): ブランチに関して最もよく知られた練習ツールです。課題付きのレベルがあり、コミットグラフがアニメーションで表示されます。commit、branch、merge、rebase、cherry-pick、対話的な rebase、リモートの扱いをカバーしています。
- Oh My Git!: オープンソースのゲームです。Git のコマンドがカードとして表現され、裏では本物の Git が動いています。
- 自分のリポジトリでのサンドボックス: 最も過小評価されている練習方法です。
git-sandboxのようなフォルダを作り、そこで何でも壊してみてください。失うものは何もありません。
練習ツールはグラフの理解を育てるのに優れていますが、本物のプロジェクトの代わりにはなりません。実際のファイル、エディタ、コードのコンフリクト、IDE がないからです。補助として使ってください。
Git のドキュメントと教科書
Git の公式ドキュメントは git-scm.com にあります。同じサイトで、Scott Chacon と Ben Straub による無料の教科書 Pro Git も読めます。日本語版もあります(git-scm.com/book/ja)。最高の入門書の1つです。最初の3章(基本、ブランチ)は必読で、「Git の内部」の章は、データモデルを完全に理解したい人向けです。
組み込みのヘルプはいつでも使えます。git help <コマンド> で完全なマニュアル、git <コマンド> -h で簡単なオプション一覧が表示されます。公式ドキュメントは素っ気ないですが、正確です。検索で最初に出てきた回答よりも、公式を確認する習慣をつけてください。
git help rebase # 完全なマニュアル
git switch -h # オプションの簡単な説明
git help -g # 概念ガイドの一覧(gitworkflows、gittutorial など)
Git に標準で付属する gittutorial と giteveryday も役立ちます。git help で開けます。
独学か、コースか
Git を独学で身につけることは十分に可能です。教科書、練習ツール、サンドボックスがあれば必要なものは揃います。難しいのは別の点です。構造がないと、理論で足踏みしたり、逆に理解なしにコマンドだけを覚えたりしがちです。また、フィードバックがないと、履歴が雑になっていることに誰も気づきません。
Git のコースは、最初のコミットから、実際のリポジトリでの pull request までを、各ステップの課題とともに順に進めたい人に役立ちます。コースを選ぶときは、期間ではなく、実践の割合を見てください。コンフリクト、ミスの取り消し、チームでの作業、最終プロジェクトの課題があるかどうかです。
Git の習得にかかる時間
| レベル | できること | 1日1時間の場合の期間 |
|---|---|---|
| 基礎 | コミット、履歴、.gitignore | 3〜5日 |
| 実務レベル | ブランチ、コンフリクト、push と pull、pull request | 2〜3週間 |
| 熟練 | ミスの取り消し、rebase、reflog、チームのワークフロー | 実際の実践を含め1〜2か月 |
この数字はあくまで目安です。大切なのは継続性です。毎日1時間の方が、月に一度の週末の集中学習より効果があります。
Git を学ぶときによくある間違い
- GUI だけで学ぶ。 グラフィカルなクライアントは便利ですが、モデルを隠してしまいます。まずコマンドラインを理解し、その後で好きなツールを選びましょう。
- フラグを丸暗記する。 覚えるべきはアイデアです。フラグは
-hでいつでも確認できます。 - 壊すことを怖がる。
reset --hardを実行して reflog から戻すまで、Git が守ってくれていることは実感できません。 - リモートを飛ばす。 push、pull、pull request のないローカルの Git は、スキルの半分にすぎません。
- 「fix」や「update」のようなコミット。 分かりやすいメッセージを書く習慣は、最初から身につけた方が楽です。
最終課題で定着させる
最良の確認方法は、チーム開発のシミュレーションです。リポジトリを作り、main に直接 push できないように保護します。仲間を招待するか、2つのアカウントを使って作業します。各タスクは独立した feature ブランチと、レビューのある pull request で行います。少なくとも1回はコンフリクトを発生させ、1回は問題のあるコミットを revert で取り消し、1回はリリースにタグを付けてください。
このような課題を経験すると、Git は呪文の集まりではなくなります。グラフが見え、コマンドの影響が分かり、面接での質問にも備えられます。
まとめ
効果的に Git を学ぶには、基礎の流れ、ブランチ、サーバーとの作業、ミスの取り消し、高度なツールの順に進みます。練習ツールはグラフを理解させ、Pro Git と公式ドキュメントは深さを与え、自分のサンドボックスとチームのプロジェクトが知識を技能に変えます。git init から最終課題の pull request まで、この道筋に沿って設計されたのが、Skillaria の Git コースです。
よくある質問
Git は1日で覚えられますか?
基本の流れ(init、add、commit、log、push)は1日で覚えられます。ブランチ、コンフリクト、ミスの取り消しを自信をもって扱えるようになるには、数週間の練習が必要です。
Git を学ぶのにプログラミングの知識は必要ですか?
いいえ。Git はあらゆるテキストファイルを扱えるので、メモや文書でも学べます。必要なのはターミナルの基本だけです。
Git の公式ドキュメントは日本語で読めますか?
コマンドのリファレンスは git-scm.com で英語です。ただし、Pro Git は日本語版があり、git-scm.com/book/ja で読めます。
Git の次に何を学ぶべきですか?
自然な次のステップは、CI/CD(GitHub Actions、GitLab CI)、コードレビュー、チームの開発プロセスです。インフラ担当なら、Git に保存される Infrastructure as Code も学んでください。 </content>