コンテンツにスキップ
GitTree

レッスン 16 · 日常の仕事

ローカルコミットメッセージまたはコンテンツを修正する

古いヒントを保持したまま、1 つのプライベート ヒーロー コミット内のタイプミスとメッセージを修正します。 amend がアイデンティティを置き換える理由と、無関係なステージングされたコンテンツを排除しなければならない理由を学びましょう。

このブラウザに進行状況が保存されました。

再生すると、YouTube からビデオが読み込まれます (プライバシー強化モード)。

英語ナレーション · English and Arabic 件のキャプション

動画ページを開くYouTubeで見る

何を学ぶか

  • 置き換えられるコミットを検査します。
  • 修正された内容をメッセージのみの編集から分離します。
  • コミットされた古いヒントを保存します。
  • 新しい ID と変更されていない親を確認します。

始める前に

分岐シナリオ/修正に関するレッスン 15 の結果の別のコピーから開始します。 HEADING_DRAFT ページ全体が fix: hedaing; としてコミットされます。ワークツリーはクリーンで、コミットは未公開です。ドラフトヒントと正確に一致する名前をレスキュー/修正する前に。

このビデオは、Ubuntu 24.04 の Git 2.52.0 と GitTree 2.0 を使用して録画されました。修正、修正、メッセージのみの編集はアプリで行われました。ドラフト、その救援ブランチ、および小切手はターミナルで実行されました。 macOS または Windows では何も実行されず、記録された Linux システムは Ubuntu だけです。 GitTree のソース Git フロアは 2.39.0 です。

GitTree はサインインを求めます。無料プランでは、ここでのすべてのステップがカバーされます。プロバイダー アカウント、プロ/トライアル、API 認証情報、インターネット サービスは必要ありません。ローカルのベアオリジンは GitLab または CI ではありません。すべてのアイデンティティは example.com を使用します。このレッスンをソース チェックアウト内で実行しないでください。

両方を連続してではなく、同一の入力で GitTree またはネイティブ パスのいずれかを介してミューテーションを作成します。読み取り専用検証はどちらの後にも続きます。最終的な作業として説明される準備はすべて、ネイティブの準備としてラベル付けされており、決して発明されたアプリの機能ではありません。

概念と状態の効果

Amend は、現在のインデックスから最後のコミットの置換を書き込みます。古いコミットに小さな修正レコードを追加するわけではありません。コンテンツとメッセージは同時に変更される可能性がありますが、古いオブジェクトはレスキュー参照を通じて到達可能なままである可​​能性があります。

メッセージのみの編集には、無関係な段階的な変更が黙って含まれるべきではありません。アプリの Edit Commit Message… ルートは、選択したコミット/子孫を書き換えます。これは、ここで示したコンポーザーの「前のコミットの修正」パスとは異なります。

ここで、変更されたサブジェクトは、異なるオブジェクトのアイデンティティを保証します。同じ親が同じコミットを意味するわけではありません。他の人がすでに作業を行っている公開済みコミットの無害な編集として修正を教えないでください。

新しいインデックスのコンテンツは置換コミットになります。シナリオ分岐/HEAD は古い C→C' に移動し、親は M のままで、作業/インデックスはクリーンになります。レスキューは C のままです。元のメイン/サーバーは変更されていません。

正確なプロジェクトの状態を準備する

レッスン 15 で残したクリーン プロジェクトの別の通常のコピーから開始します。元の gittree の機能は維持されます。このシナリオは、オリジナルまたはソース チェックアウトでは実行しないでください。 (コースの以前の計画では、後のマージ レッスンの結果からこのレッスンが開始されました。そのレッスンはまだ録画されていないため、ビデオではレッスン 15 のプロジェクトと同じ手順が使用されています。) 以下の 2 つのページ本体は、ヒーローの見出しのみが変更されたプロジェクトの Index.html です。リポジトリローカルのデモ署名はオフになっており、GitTree デモ <demo@example.com> が ID です。

完全なファイル入力

以下のフェーズでのみ保存します。これらは、最後に改行を含む完全な UTF-8/LF 本文です。 Markdown フェンスは決して貼り付けないでください。変更されていない実行可能ファイルは、名前付き入力を継承します。別のバリアントのバージョンでオリジナルを上書きしてはなりません。

Index.html — HEADING_DRAFT

ファイルの抜粋 · html
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>GitTree Features — course demo</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <header class="site-header">
    <a href="#main">GitTree Features</a>
  </header>
  <main id="main">
    <section class="hero" aria-labelledby="hero-title">
      <p class="eyebrow">GitTree Learn demo project</p>
      <h1 id="hero-title">See your work cleary.</h1>
      <p id="hero-copy">Choose one change, then check what Git saved.</p>
    </section>
    <section class="features" aria-labelledby="features-title">
      <h2 id="features-title">Follow your work</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>History</h3>
          <p>Read commits and branches together.</p>
        </article>
        <article class="feature-card">
          <h3>Changes</h3>
          <p>Review the exact content selected for a commit.</p>
        </article>
        <article class="feature-card">
          <h3>Recovery</h3>
          <p>Inspect the scope of a recovery point before using it.</p>
        </article>
      </div>
    </section>
  </main>
  <footer><p>Built by a fictional team for GitTree Learn. Review one change at a time.</p></footer>
  <script type="module" src="site.js"></script>
</body>
</html>

Index.html — HEADING_FIXED

ファイルの抜粋 · html
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>GitTree Features — course demo</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <header class="site-header">
    <a href="#main">GitTree Features</a>
  </header>
  <main id="main">
    <section class="hero" aria-labelledby="hero-title">
      <p class="eyebrow">GitTree Learn demo project</p>
      <h1 id="hero-title">See your work clearly, one change at a time.</h1>
      <p id="hero-copy">Choose one change, then check what Git saved.</p>
    </section>
    <section class="features" aria-labelledby="features-title">
      <h2 id="features-title">Follow your work</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>History</h3>
          <p>Read commits and branches together.</p>
        </article>
        <article class="feature-card">
          <h3>Changes</h3>
          <p>Review the exact content selected for a commit.</p>
        </article>
        <article class="feature-card">
          <h3>Recovery</h3>
          <p>Inspect the scope of a recovery point before using it.</p>
        </article>
      </div>
    </section>
  </main>
  <footer><p>Built by a fictional team for GitTree Learn. Review one change at a time.</p></footer>
  <script type="module" src="site.js"></script>
</body>
</html>

GitTreeで

パレット: Command+Shift+P (Ubuntu では Ctrl+Shift+P);正確な名前のコマンドを入力して選択します。名前付き参照アクションは、引数のないパレット ショートカットではなく、その行のコンテキスト メニューを使用します。

  1. 以下のようにプライベートドラフトとレスキューブランチを準備します。リモコンにドラフトが含まれていないことを確認します。
  2. ファイルを表示→index.html; HEADING_FIXED を完全に保存し、他のすべてのページ コンテンツを保持します。
  3. 作業上の変更を表示します。意図した見出し置換とステージファイルのindex.htmlのみを検査してください。
  4. Composer で Amend Previous Commit をチェックします。古いグラフ選択ではなく、置き換えられる実際の最後のコミットを検査します。 (このビルドでは、[概要] フィールドには古いメッセージが入力されていません。次の手順で新しいメッセージを書き込みます。)
  5. セット概要の修正: ヒーローの見出しを明確にしました。プッシュ/サインオフ/フックのバイパスやその他のオプションの動作をオフにしておきます。ステージングされたコンテンツを確認します。
  6. コンポーザーから Command+Enter (Ubuntu では Ctrl+Enter) を押して一度送信します。実際の完了を待ちます。 2 番目の通常のコミットを送信しないでください。 [前のコミットを修正] オプションは、その後自動的にオフになります。
  7. 実際の C' がレスキュー C と異なること、同じ親、完全な HEADING_FIXED、およびクリーンな作業であることを確認します。後の通常の作業の前に、「前のコミットの修正」をオフにします。
  8. メッセージのみの代替案。下書きが残っている別のコピーにあります。下書きコミットを右クリック → Edit History → Edit Commit Message… とクリックします。ダイアログのタイトルはコミットの短縮 ID の「メッセージの編集」で、コミットとその上のすべてのコミットが新しい ID を取得することが示されています。 Message を正確に修正された件名に置き換えて、Save Message を選択します。ツリーと親は同じままです。 IDとメッセージのみが変わります。修正された結果に対してこれを繰り返さないでください。

すべての通常のコミット: 概要が記載された主題です。説明が空です。以前のコミットを修正し、フックをスキップし、サインオフ者を追加し、別の作成者を追加し、コミット後にプッシュし、空のコミットをオフに許可します。共著者はいません。指定したファイルのみをステージングし、N 個のファイルへの変更を 1 回コミットする (1 つのファイル)、または代わりに Command+Enter を押します。本当の結果を待ちましょう。明示的に修正するレッスンでは、指定されたオプションのみが変更されます。

ターミナル内

レッスン 15 の結果の別のコピー:

Command · bash
git switch --create scenario/amend

HEADING_DRAFT をindex.html の上に置きます (ビデオではレッスンのファイルが ~/Downloads に保存され、cp ~/Downloads/HEADING_DRAFT.html index.html が使用されます)、次のようになります。

Command · bash
git add -- index.html
git commit --quiet -m "fix: hedaing"
git branch rescue/before-amend

HEADING_FIXED を完全に保存してから、次のようにします。

Command · bash
git add -- index.html
git commit --quiet --amend --message "fix: clarify the hero heading"
git log -1 --format=%s
git rev-parse HEAD rescue/before-amend HEAD^ rescue/before-amend^
git status --short

観察対象:

出力
fix: clarify the hero heading

最初の 2 つの SHA 出力は異なります。最後の2つは同意します。完全に記録されたファイルは HEADING_FIXED に等しく、問題なく動作します。別のクリーンなドラフト コピー内のネイティブ メッセージのみの代替案では、 git commit --amend --only -m "fix: ヒーローの見出しを明確にします"; を使用します。 --only は、そのメッセージ専用タスクに無関係なステージングされたパスが含まれることを回避します。アプリのグラフ リワード操作は、ソースに基づいた独自のルートです。インストールされたビルドで確認してください。

結果

Where you end: 置換コミットには修正が記載されています。ヒーローの見出しを明確にし、完全な HEADING_FIXED が含まれています。親は古いコミットの親と一致しますが、ID は異なります。古いチップが救出されました。クリーン、未公開。

よくある間違い

  • 無関係なステージングされたファイルを修正します。
  • 代替ペインを元のチェックポイントとして扱います。
  • アプリが成功した後、完了したミューテーションを繰り返します。

何か問題が発生した場合

レスキュー ブランチは、コミットされた古いドラフトに名前を付けます。修復物を選択する前に比較してください。ステージングされていない任意の編集は保存されません。フック/署名が失敗した場合は、実際の出力を検査し、レッスンに一致させるためにそれらをバイパスしないでください。

理解度を確認してください

各質問に答えてから、その理由を読みましょう。 「必須」とマークされた質問は、レッスンの完了にカウントされます。

  1. 質問 1 / 6

    修正は何を生み出すのでしょうか?

    答えを 1 つ選択してください。

  2. 質問 2 / 6

    何を見直す必要があるのか​​?

    当てはまるものをすべて選択してください。

  3. 質問 3 / 6
    必須

    修正された C' の親?

    答えを 1 つ選択してください。

  4. 質問 4 / 6
    必須

    修正する前に、無関係なステージングされたファイルを追加してください: content?

    答えを 1 つ選択してください。

  5. 質問 5 / 6

    ドラフトが公開されました: 非公開として続行しますか?

    答えを 1 つ選択してください。

  6. 質問 6 / 6
    必須

    どの証拠が必要ですか?

    当てはまるものをすべて選択してください。

6 個中 0 個が正解です

必須の質問に正しく答えると、レッスンを完了できます。

このブラウザで確認しました。

練習する

同じ親、変更されたオブジェクト ID、正確に修正された見出し/メッセージ、およびクリーンな状態を証明します。追加のステージング ファイルが別のリプレイでコンポーザー修正コンテンツをどのように変更するかを予測します。

あなた自身の確認: サイトはあなたのコンピュータを認識できません。

レッスンを完了するには、必須の質問に正しく答え、実践的な演習を確認してください。

要約

  • 修正すると置換が作成されます。
  • インデックスは、修正されたコンテンツを管理します。
  • メッセージのみは別のスコープです。

用語集の用語の紹介

修正 — تعديل الإيداع الأخير;言い換え — إعادة صياغة;置換コミット — إيداع بديل。

ビデオトランスクリプト

ビデオのナレーションが次々と流れます。

トランスクリプトを表示する
  1. 正確なチェックポイントから開始します。
  2. ブランチとインデックスに名前を付けます そして作業バージョン。
  3. 分離されたコースのコピーのみを準備します。
  4. プライベートドラフトを保護する 交換する前に。
  5. 意図した修正を完全に保存します。
  6. メッセージだけでなくインデックスも確認してください。
  7. Amend は実際の最後のコミットを置き換えます。
  8. 修正した件名を明記してください。
  9. 代替品を送信するのは 1 回だけです。
  10. 同じ親が同じアイデンティティを意味するわけではありません。
  11. メッセージのみの編集には別のスコープがあります。
  12. 修正は何を生み出すのでしょうか?
  13. Git オブジェクトは不変です。 交換者は新しい ID を取得します。
  14. 何を見直す必要があるのか​​?
  15. Composer amend はインデックスを使用します and last commit context.
  16. 修正された C' の親?
  17. The replacement occupies 同じ祖先の立場。
  18. Add an unrelated staged 修正前のファイル: 内容?
  19. 現在のインデックスの定義 the replacement tree.
  20. ドラフトが公開されました: 非公開として続行しますか?
  21. 公開された ID は他者によって使用される可能性があります。
  22. どの証拠が必要ですか?
  23. Verify both replacement アイデンティティと意図されたコンテンツ。
  24. 実際の結果を検証してみると、 単なるメッセージではありません。
  25. 行動する前に、変更された入力を予測します。
  26. リカバリする前に有用な作業を保存します。
  27. 続行する前にチェックポイントを証明してください。
  28. 検証結果を保存する 次のステップのために。