Git履歴の読み方: log, diff, showと過去の履歴を辿る
プロジェクトの履歴は、単なるログではなく、意思決定のドキュメントです。このレクチャーでは、コミットをフィルタリングしたり、バージョン間の変更点を確認したり、SHA-1ハッシュを恐れずに理解したりする方法を学びます。特に、チーム内での評価に直接影響する「良い履歴」と「ゴミのような履歴」の見分け方について詳しく説明します。
- リポジトリの履歴を読み、著者、日付、キーワードに基づいて必要なコミットを素早く見つけることができるようになります。
- ワーキングディレクトリ、インデックス、コミットなど、さまざまなレベルでファイルバージョンを比較する方法を理解できます。
- 業界標準(Conventional Commits)に従ったコミットメッセージの書き方を習得できます。
Simula ng leksyon
プロジェクトの日記としてのコミット履歴
- Git logは逆順の日記のように履歴を表示します
- 各エントリーは変更のスナップショットです
- 誰が、いつ、何を変更したかが記録されています
- コードの進化の過程を追うことができます
Gitで変更を保存するたびに、開発日誌にエントリーを追加していると想像してください。'git log'コマンドは、これらのエントリーを新しいものから古いものへと逆順に表示します。この日誌には、プロジェクトの完全な年表が記録されています:誰が、いつ、どのような変更を加えたか。これは単なる変更リストではなく、コードの進化の生きた歴史です。この履歴を読み解き、分析する能力は、チームで働く上で重要なスキルです。なぜなら、コミット履歴を通じて、プロジェクトがどのように発展し、どのような決定がなされてきたのかを理解できるからです。それでは、個々のコミットの構造について詳しく見ていきましょう。
コミットエントリーの読み方:ハッシュ、作成者、日付
- commit: 一意のハッシュ識別子
- Author: 変更を行った人物と日時
- Date: コミットのタイムスタンプ
- メッセージ: 具体的な変更内容
'git log'コマンドの出力を見てみましょう。各エントリーは長い文字列で始まります。これがコミットハッシュで、一意の識別子です。その右側には、変更を行った作者と変更日時が表示されます。その下には、開発者が変更を保存する際に記述したコミットメッセージがあります。メールアドレスが山括弧で囲まれ、その後にタイムスタンプが続く形式に注目してください。これらのデータは、変更の文脈を理解し、必要に応じて作者に連絡を取るのに役立ちます。コミットの構造を理解したところで、ハッシュとは何か、なぜ必要なのかについて見ていきましょう。
#!/bin/bash
cd ~/projects/git-course/
git log -1 --pretty=format:'commit %H%nAuthor: %an <%ae>%nDate: %ad%n%n %s'
コミットハッシュ - 履歴への鍵
- ハッシュはコミットのデジタル指紋です
- コンテンツとメタデータに基づきます
- 1文字変わるだけでハッシュ全体が変わります
- あらゆるバージョンに正確に参照できます
コミットハッシュは単なるランダムな文字列ではなく、コミットの内容を一意の文字列に変換する暗号化関数の結果です。コミットの1バイトでも変更されると、ハッシュは完全に変わります。これは変更履歴の完全性を保証します。ハッシュを知っていれば、本の栞のようにコードのどのバージョンにもアクセスできます。例えば、'git checkout'コマンドにハッシュを指定すると、そのコミット時点のプロジェクトの状態に戻れます。これは変更を元に戻したり、バグがいつ発生したかを分析する際に特に便利です。では、実際のプロジェクトでは数千ものコミットがあることが多いので、履歴のフィルタリング方法を学びましょう。
Buong leksyon ay para sa subscription
26 pang slide sa buong bersyon.
Mabubuksan ang video, lahat ng slide, tala, pagsusulit, AI tutor, at interview pagkatapos mag-sign in at mag-subscribe.
Mag-sign in o magparehistro Mag-subscribeNilalaman ng leksyon
- プロジェクトの日記としてのコミット履歴
- コミットエントリーの読み方:ハッシュ、作成者、日付
- コミットハッシュ - 履歴への鍵
- 著者別のコミット検索方法
- コミット日時でのフィルタリング
- コミットメッセージのテキスト検索
- フィルタの組み合わせ
- コミット履歴の読み取りに関する課題
- コンパクト表示: --onelineオプション
- --graphオプションによるブランチの可視化
- --allオプションで全体像を把握
- git diffとは何か、その目的
- 作業ディレクトリの変更を比較する
- コミット準備ができたもの:git diff --staged
- 任意の2つのコミットを比較する
- 特定のコミットを詳細に調べる方法
- 実践:コミットの変更を確認する
- コミット内の特定ファイルの表示
- ファイルの最新変更履歴の確認
- 履歴を通じた他者のコード分析
- 関数の追加や削除の検索
- コミットメッセージの重要性
- 理想的なコミットメッセージの構成
- Conventional Commitsの実践
- 不適切なコミットのリファクタリング
- なぜ「修正」コミットはアンチパターンなのか
- 変更の原子性: 1コミット1タスク
- git add -p: クリーンなコミットのための必須ツール
- まとめと課題
Mga artikulo tungkol sa araling ito
- Mga command ng Git: cheat sheet na may mga halimbawa para sa araw-araw
- git log, diff, show, at blame: paano basahin ang history ng project sa Git
- git bisect: paano hanapin ang commit na sumira sa code
- Git at GitHub: ano ang pagkakaiba at paano sila magkaugnay
- Paano mag-install ng Git sa Windows, macOS, at Linux
Lahat ng leksyon ng kurso
- はじめに:ゼロから始めるGit - 自信を持って使える開発者を目指して
- Gitはなぜ必要なのか?~採用で求められるスキル~
- インストールとセットアップ:Gitの初回起動準備
- 最初のリポジトリ: init、add、commit、そしてインデックスの魔法
- Git履歴の読み方: log, diff, showと過去の履歴を辿る
- ブランチ: コードの並行現実
- ミスをなかったことに:restore、reset、revert ─ 正しい使い方と危険な落とし穴
- GitHubとリモートリポジトリ: クラウドでのコード管理
- チームワーク:フォーク、フィーチャーブランチ、プルリクエスト
- マージコンフリクト:慌てずに理解して解決する
- 実践的なチーム開発におけるGitワークフロー:最適な選択方法
- 上級者向けツール:rebase、stash、cherry-pick、タグ
- 最終プロジェクト:実際のチーム開発をシミュレートする