レッスン 8 · 日常の仕事
HEADを移動せずに履歴を読み取る
残りの半径編集を記録し、実際の履歴を文書化して、リビジョン セットをファイル ツリーの差異と比較します。グラフ行の選択は検査であり、分岐スイッチではありません。
- レベル: 初心者
- 3 分で読みました
- 4 分の動画
- 更新されました
- このレッスンの前に: 目的のスナップショットをステージングし、最初のコミットを行います, ファイル全体ではなく、選択したハンクをコミットします
このブラウザに進行状況が保存されました。
再生すると、YouTube からビデオが読み込まれます (プライバシー強化モード)。
何を学ぶか
- HEAD、選択したコミット、作成者、コミッターを区別します。
- 親と最初の親の祖先をたどります。
- 2 つのドット/3 つのドットのログ セットを、diff エンドポイントと混同することなく読み取ります。
- 履歴を書き換えずに、GitTree 内の 2 つの実際のコミットを比較します。
始める前に
レッスン 7 が終了したところから開始します。main にはレッスン 5 から 7 までの 3 つのコミットがあります。CSS 半径のみが変更されたままになります。HEAD とインデックスは CSS-02-INDEX、作業ファイル CSS-02-WORKING を保持します。リモコンはありません。このビデオは、Ubuntu 24.04 の Git 2.52.0 と GitTree 2.0 を使用して録画されました。両方のコミット、ドキュメント、グラフ検査、検索、HEAD へのジャンプと参照の比較がアプリで操作され、ターミナル チェックがアプリが作成したものに対して実行されたため、表示されるコミット ID はアプリが比較したものです。分岐ブランチのケースは図です。機能ブランチは作成されませんでした。 macOS または Windows では何も実行されず、記録された Linux システムは Ubuntu だけです。 GitTree のソース最小値は Git 2.39.0 です。サインインすると、ローカル検査とコミットは無料プランで行われます。
コンセプト
コミットでは、ツリー、メタデータ、および親 ID が記録されます。ブランチはコミットに名前を付けます。通常、HEAD は現在のブランチに名前を付けます。グラフの別の行をクリックすると、HEAD、ブランチ、またはディスク ファイルではなく、アプリの selection が変更されます。著者は作品を書いた人を記録します。 committer は、このコミットを記録した人を記録します。ここでは、彼らはたまたま同じ架空のアイデンティティです。
線形チェーンの場合、HEAD~1 は 1 つの最初の親エッジに従います。 HEAD~2 は 2 に続きます。 HEAD^1 は最初の親です。 HEAD^2 は、「2 つのコミットバック」ではなく、second parent of one commit を意味します。非マージコミットには 2 番目の親がありません。
git log A..B は、A からの到達可能性を除く、B からの到達可能性を意味します。git log A...B は、到達可能性の対称的な差を意味します。 git diff A B はエンドポイント ツリーを比較し、git diff A...B は merge-base(A,B) と B を比較します。 3 つの点のログと 3 つの点の差分は同じ質問をするわけではありません。この線形履歴では、いくつかの結果がたまたま一致します。その偶然の一致を枝分かれに一般化しないでください。 リビジョン表記、差分セマンティクス。
読み取り/選択/検索では、インデックス、作業バイト、または参照は変更されません。このレッスンの 2 つの明示的なコミットは、ローカル メインを移動します。最初に radius、2 番目にドキュメントを移動します。リモート変更はありません。
完全な歴史文書
まず、以下に示すように、既存の半径編集をコミットします。次に、この完全な UTF-8/LF 本文を使用して docs/history.md を作成します。最後の項目では、作成された SHA ではなく、ドキュメントを含むコミットについて説明します。
# GitTree Features history
The first-parent chain on main, oldest first:
1. feat: add the GitTree Features hero
2. feat: add styling and local project checks
3. feat: refine the hero and card spacing
4. style: finish the card radius change
5. docs: record logs-and-revisions practice
After this document is committed, HEAD names item 5.
HEAD~1 names item 4; HEAD~2 names item 3.
Selecting a graph row does not move HEAD.
These labels are descriptions, not fabricated commit SHAs.
All identities in this project are fictional.この 5 つのコミット チェーンに、オプションの練習ノートブックや追加のクリーンアップ コミットを追加しないでください。
GitTreeで
- パレット Show Working Changes (パレットを開くには Command/Ctrl+Shift+P)。 Unstaged Filesの下にあるstyles.cssをクリックします。半径 0.5rem → 0.75rem だけが残っていることを確認します。以前の幅の変更を繰り返さないでください。
- Stage File 行アクションを選択し、概要
style: finish the card radius changeを入力し、通常のオプションをオフにしてから、Commit Changes to 1 File (または Command/Ctrl+Enter を 1 回押します)。 4 つのコミットを確認し、追跡ステータスをクリーンアップします。 - パレット New File… → Path from the project folder = docs/history.md → Create。ドキュメント全体を貼り付けて、Save。 Back to Graph → Show Working Changes → docs/history.md のステージ ファイル。
- 概要
docs: record logs-and-revisions practice; 1 つのファイルをコミットします。予想されるチェーンには現在 5 つのコミットがあります。 - ルート ヒーローの行をクリックします。コミットの詳細で、実際の SHA、件名、作成者/コミッター、および root commit の親ステータスを検査します。最新の行をクリックします。その親関係を比較します。単に読み取るためだけに Check Out This Commit を呼び出さないでください。
- コミットの詳細で View all files を切り替えて、コミットのツリー全体と変更されたパスのみを区別します。記録されたリビジョンで文書を検査します。これによって作業ファイルは変更されません。
- Back to Graph を返します。パレット Search Loaded History または Command/Ctrl+F while the graph is active を使用し、
radiusと入力して、一致するロードされた履歴を調べます。エディターでは、同じコードがエディター テキストを検索します。その後検索をクリアしてください。ロードされた履歴の検索は、サーバー全体の履歴クエリではありません。 - パレット Jump to HEAD、Command/Ctrl+Shift+H、現在のチップを見つけます。ネイティブ
git symbolic-ref --short HEADがメインをレポートしている間、選択/検索は移動できます。 - ネイティブ
git rev-parse HEAD~2を使用して、その real コミット ID を取得します。固定コースの SHA は提供されません。パレット Compare References… (repo.compareRefs) が Compare References を開きます。 Old side に、測定された ID を貼り付け、そのコミット オプションを選択します。 New side で HEAD を選択します。ピッカーはコミット ID を受け入れますが、そこで任意のリビジョン式が解析されることを約束するものではありません。 - What to compare で、The two endpoints を選択し、次に Compare を選択します。このチェーンでは docs/history.md と style.css の違いが予想されます。比較を再度開くか変更して、同じ辺を持つ Changes since the merge base を選択します。線形祖先により、ここでエンドポイントの結果が一致します。そのビューから対称ログの動作を推測しないでください。 Cancel は履歴を変更せずに終了します。
ターミナル内
対応するアプリが成功する前にのみ、ネイティブのミューテーションの代替:
git add -- styles.css
git commit --quiet -m "style: finish the card radius change"どちらも静かに成功しました。ドキュメント全体を保存した後:
git add -- docs/history.md
git commit --quiet -m "docs: record logs-and-revisions practice"
git log --reverse --format=%s完全に観察されたチェーン:
feat: add the GitTree Features hero
feat: add styling and local project checks
feat: refine the hero and card spacing
style: finish the card radius change
docs: record logs-and-revisions practiceセットとツリーを検査します。
git log --format=%s HEAD~2..HEAD
git log --format=%s HEAD~2...HEAD各クエリは個別に出力されます。
docs: record logs-and-revisions practice
style: finish the card radius changeこれらが一致するのは、古いエンドポイントがここでは祖先であるためです。
git diff --name-only HEAD~2 HEAD
git rev-list --count HEAD
git symbolic-ref --short HEAD順番に出力します。
docs/history.md
styles.css
5
main2 つの名前付きファイルはツリーの違いであり、ログによって返された 2 つのコミットの同一性ではありません。
git rev-parse --verify --quiet HEAD^2stdout/stderr がないことが確認され、1 が終了しました: 最新のコミットはマージではありません。代わりに、2 つの最初の親ステップには HEAD~2 を使用してください。実際の比較 ID を特定するには:
git rev-parse HEAD~2リハーサル中に実際の出力を読んでください。測定された SHA はコミット メタデータによって変化するため、モデル ラベルからコピーしてはなりません。
結果
このレッスンの終わりには、文書化された順序でメインに 5 つのコミットを行います。追跡された作業/インデックスはクリーンで、リモートまたは進行中の操作はありません。 CSS の半径は 0.75rem になり、docs/history.md がコミットされます。過去のグラフ行を読み取っても HEAD が切り離されていません。
よくある間違い
- 選択した行をチェックアウトされたコミットとして扱う: HEAD を個別に検査します。
- ^2 を ~2 として読み取る: 2 番目の親と 2 つの最初の親エッジ。
- 対称対数の意味を 3 つのドット diff に適用すると、diff はマージ ベースから右への方向になります。
- グラフ検索がアンロード/アンフェッチされた履歴をカバーすると仮定します。
何か問題が発生した場合
リビジョンが欠落しているということは、破損ではなく、不十分な祖先、タイプミス、境界が浅いことを意味している可能性があります。チェーンと選択したリポジトリを確認します。コミットを終了する前にアプリフィルターをクリアすると消えます。選択範囲を修復するためだけに、任意のプロバイダーからフェッチしたり、リセットまたはチェックアウトしたりしないでください。ドキュメントがすでに存在する場合は、この新規ファイル手順を適用する前に、その内容を検査してください。
理解度を確認してください
各質問に答えてから、その理由を読みましょう。 「必須」とマークされた質問は、レッスンの完了にカウントされます。
6 個中 0 個が正解です
必須の質問に正しく答えると、レッスンを完了できます。
このブラウザで確認しました。
練習する
古い行を選択して、HEAD がメインのままであることを証明します。 2 つのログ エントリが 2 つのパスのみの違いに対応できる理由を説明してください。入力の変更: main が H5 にあるときに H3 からの 1 つのコミットを持つ別のブランチの場合、main..feature にはそのフィーチャーのコミットのみが含まれると予測されますが、main...feature には H4/H5 も含まれます。正規チェックポイントにそのブランチを作成しないでください。使い捨てのコピーを使用します。
あなた自身の確認: サイトはあなたのコンピュータを認識できません。
レッスンを完了するには、必須の質問に正しく答え、実践的な演習を確認してください。
要約
- 選択と HEAD の所有者は異なります。
- 親表記とリビジョン セットは、ファイルの変更ではなく、祖先を記述します。
- 実際に解決されたエンドポイントを比較し、質問に明確にラベルを付けます。
関連している
用語集の用語の紹介
コミット — 認証;親 — إيداع أب;参照 — 重要;改訂 — مراجعة;範囲 — 範囲;ベースをマージします — マージベース著者 — ヤステル;コミッター — المُودِع。
ビデオトランスクリプト
ビデオのナレーションが次々と流れます。
トランスクリプトを表示する
- なしで履歴を読む 現在のブランチを移動します。
- まずそれを検査してください L007 が残した独自の編集。
- 半径を独自のローカル コミットとして記録します。
- 次を使用して文書化されたチェーンを記述します。 発明されたハッシュではなく、主体です。
- 文書は次のようになります。 このチェーンの 5 番目のコミット。
- 事前に実際の注文を確認してください 指導改訂表記。
- ブランチ名と選択したブランチ名 グラフの行が異なります。
- ルートのみを選択する 検査されたコミットを変更します。
- 完全なツリーは単なるものではありません。 そのコミットで変更されたリスト。
- ロードされた履歴を検索するのではなく、 約束されたサーバー全体のアーカイブ。
- 選択範囲を現在のチップに戻します。
- 端末が独立して チェックアウトされたブランチを確認します。
- 2 つの親ステップは、 1 つのコミットの 2 番目の親。
- この非マージコミット 2番目の親がいません。
- これらのセットはここで一致します。 エンドポイントは先祖です。
- ツリーの差分ファイル名、 コミット ID のセットではありません。
- 測定されたコミット ID を使用する 比較ピッカーで。
- 解決された 2 つを比較します 参照を変更せずにツリーを作成します。
- このモードはマージを比較します。 右側のベース。
- 発散したグラフにより、 2 つのログ範囲は異なります。
- 三点ログと三点 diff はさまざまな質問に答えます。
- 間違った選択が必要 破壊的回復ではなく、ナビゲーションです。
- チェーンが変更されていないことを確認します 分岐する前に HEAD します。
- 次に作成して切り替えます ブランチ名は意図的に付けられています。