ブランチ: コードの並行現実
ブランチはGitの心臓部であり、多くの初心者が恐れを抱く部分でもあります。本講義ではブランチの神秘を解き明かします:ブランチが単なるポインタであり、ファイルのコピーではないことを示します。実際の例を用いて、ブランチの作成方法、ブランチ間の切り替え、変更のマージ方法を解説し、さらにfast-forwardマージと3-wayマージの違いについても詳しく説明します。
- ブランチが軽量なポインタであることを理解し、どんな時でも気軽に作成できるようになります。
- ブランチの作成、ブランチ間の切り替え、mergeコマンドを使った変更のマージができるようになります。
- fast-forwardマージと3-wayマージの違いを理解し、それぞれのシナリオを適切に使い分けられるようになります。
Phần đầu bài giảng
ブランチにおけるファイルコピーの誤解
- ブランチはファイルのコピーではなく、軽量なポインタです
- ブランチの作成は一瞬で完了します
- 保存に関するオーバーヘッドはありません
- すべてのブランチは同じファイルを扱います
ブランチを作成するたびにプロジェクト全体がコピーされると想像してみてください。大規模なリポジトリでは悪夢のような話ですよね。しかしGitはもっと賢く設計されています。ブランチは、変更履歴内の特定のコミットを指す単なるポインタに過ぎません。ファイルの重複は一切発生せず、ブランチ操作は瞬時に行われます。これは、コードの異なる時点を切り替えるようなもので、各変更ごとに並行宇宙を作成するわけではありません。
ブランチの内部構造
- ブランチ = コミットハッシュが書かれたテキストファイル
- .git/refs/heads/ に保存されます
- サイズ: ちょうど40文字
- 新しいブランチ = ハッシュ値が書かれた新しいファイル
Gitの内部をのぞいてみましょう。各ブランチは、.gitディレクトリ内の単なるテキストファイルです。このファイルには40文字のハッシュ値(最後のコミットのハッシュ)だけが保存されています。新しいブランチを作成すると、Gitは現在のコミットのハッシュを新しいファイルに書き込みます。プロジェクトに数千のファイルがあっても、この処理は一瞬で完了します。これで、なぜブランチの切り替えが瞬時に行えるのか、お分かりいただけたでしょうか?
本のしおりのような機能
- 本のしおりのようなブランチ
- コンテンツをコピーしない
- 瞬時の切り替え
- 何個でも作成可能
本を読むことに例えてみましょう。ページにしおりを挟むとき、本全体をコピーしますか?いいえ、後で戻れるように場所をマークするだけですね。Gitのブランチも全く同じように機能します。これはコードの特定の状態を指す軽量なマーカーです。何十個でも作成でき、ディスクスペースを余分に消費しません。これにより、プロジェクトの異なるバージョンを同時に扱う方法が根本的に変わります。
Bài giảng đầy đủ dành cho thuê bao
Còn 21 slide nữa trong phiên bản đầy đủ.
Video, toàn bộ slide, ghi chú, bài kiểm tra, gia sư AI và phỏng vấn sẽ mở sau khi đăng nhập và đăng ký thuê bao.
Đăng nhập hoặc đăng ký Đăng ký thuê baoNội dung bài giảng
- ブランチにおけるファイルコピーの誤解
- ブランチの内部構造
- 本のしおりのような機能
- ブランチの実践的な作成
- Gitブランチの仕組み
- 新しいブランチの作成
- ブランチの作成と切り替えを同時に
- ブランチ切り替え時の挙動
- ブランチのマージがコンフリクトせずに完了する場合
- ファストフォワードマージの仕組み
- 実践例:featureブランチをmainにマージ
- ブランチの自動マージができない場合
- マージ競合の表示例
- 競合解決の手順
- なぜ単純なマージが常に機能するわけではないのか?
- 3-wayマージの仕組み
- マージコミットを実際に作成する
- マージを遅らせることによる複雑化
- マージコンフリクトを無視する危険性
- コンフリクト解決の正しい方法
- 新しいタスク用のフィーチャーブランチの作成
- 複数ブランチでの並行作業
- メインブランチへの変更のマージ
- まとめ:ブランチとマージ
Bài viết liên quan đến bài học này
- Lệnh Git: bảng tra cứu với ví dụ dùng hằng ngày
- git checkout, switch và restore: khi nào dùng cái nào
- git merge: cách gộp nhánh và xử lý xung đột
- Nhánh trong Git: git branch, tạo, chuyển và xóa
- git worktree: làm việc với nhiều nhánh cùng lúc
Tất cả bài giảng của khóa học
- はじめに:ゼロから始めるGit - 自信を持って使える開発者を目指して
- Gitはなぜ必要なのか?~採用で求められるスキル~
- インストールとセットアップ:Gitの初回起動準備
- 最初のリポジトリ: init、add、commit、そしてインデックスの魔法
- Git履歴の読み方: log, diff, showと過去の履歴を辿る
- ブランチ: コードの並行現実
- ミスをなかったことに:restore、reset、revert ─ 正しい使い方と危険な落とし穴
- GitHubとリモートリポジトリ: クラウドでのコード管理
- チームワーク:フォーク、フィーチャーブランチ、プルリクエスト
- マージコンフリクト:慌てずに理解して解決する
- 実践的なチーム開発におけるGitワークフロー:最適な選択方法
- 上級者向けツール:rebase、stash、cherry-pick、タグ
- 最終プロジェクト:実際のチーム開発をシミュレートする