コンテンツにスキップ
GitTree

レッスン 9 · 日常の仕事

機能ブランチを作成し、使い捨ての ref のみをリタイアします

メインを変更せずに、機能/価格カードにワークフロー カードを追加します。捨てブランチの名前を変更し、そのコミットが既にメインから到達可能であることを証明した後にのみ削除してください。

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

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

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

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

何を学ぶか

  • ブランチ名の作成とチェックアウトを分離します。
  • メインを移動せずに、機能のワークフロー セクションをコミットします。
  • マージを作成せずに、使い捨てのローカル参照の名前を変更/削除します。
  • ネイティブの安全な削除チェックと GitTree の保護された削除を区別します。

始める前に

レッスン 8 が終了したところから開始します。メインには 5 つの文書化されたコミット、クリーンなワーク ツリーとインデックス、コミットされた CSS-02-WORKING があり、リモートはありません。生成された dist を無視したままにします。このビデオは、Ubuntu 24.04 の Git 2.52.0 と GitTree 2.0 を使用して録画されました。アプリ内でブランチの作成、名前変更、削除、切り替えが行われ、ファイルが保存されてコミットされ、アプリが作成したものに対してターミナル チェックが実行されたか、作成専用状態と名前変更された状態の個別のコピーに対してターミナル チェックが実行されました。 macOS または Windows では何も実行されず、記録された Linux システムは Ubuntu だけです。 GitTree の検査済みの最小値は Git 2.39.0 です。サインインすると、ローカル ブランチングは無料プランで使用できるようになり、ホストや Pro/トライアルは必要ありません。

以下の分岐の変異はすべて written steps for the isolated GitTree Features demo であり、この Web サイトのチェックアウトを分岐する指示ではありません。作成者のソース ブランチは変更されません。

コンセプト

ブランチはコミットの移動可能なローカル名であり、すべてのファイルのコピーではありません。名前を作成しただけでは HEAD は移動しません。切り替えると、HEAD がそのブランチにアタッチされ、必要に応じてインデックス/作業ファイルが更新されます。後続のコミットでは、チェックアウトされたブランチのみが進められます。 ネイティブ ブランチ セマンティクス、スイッチ セマンティクス。

初めにメイン名はH5です。 H5 で作成された使い捨てブランチは、別のコミットではなく、同じサークルに 2 番目のラベルを追加します。名前を変更するとラベルが変更されます。すでに到達可能なラベルを削除しても、メインの履歴は削除されません。後の機能/価格カードは H5 から始まり、F1 に進みます。メインステーH5。リモートは作成または削除されません。

ネイティブ git branch -d はマージをチェックします (通常は上流/現在の HEAD を基準にします)。 GitTree's inspected local deletion adapter uses -D after protecting the selected tip in its trash/journal. It is not the same refusal rule. ネイティブ -d が停止したからといって、アプリがマージされていない削除を停止するとは決して考えないでください。このコースでは、使い捨てチップがメイン before either path の祖先であることを証明し、機能を維持し、リモート削除アクションを決して選択しません。

フル機能ファイル

機能に関しては、index.html のみが変更されます。これを完全な HTML-03 に置き換えます。既存のスタイル/スクリプト/履歴は、レッスン 8 で残されたままになります。トピックのブランチ名は文字通りですが、このセクションには価格やプロモーションは含まれません。

ファイルの抜粋 · 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.</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>
    <section aria-labelledby="plans-title">
      <h2 id="plans-title">Choose the workflow you need</h2>
      <div class="cards">
        <article class="feature-card">
          <h3>Local Git</h3>
          <p>Local Git workflows work without signing in.</p>
        </article>
        <article class="feature-card">
          <h3>Connected workflows</h3>
          <p>Provider integrations and Nour require Pro or an applicable trial.</p>
        </article>
      </div>
    </section>
  </main>
  <footer><p>Built by a fictional team for GitTree Learn.</p></footer>
  <script type="module" src="site.js"></script>
</body>
</html>

GitTreeで

  1. オリジナルがメイン上にあり、クリーンで、履歴ドキュメントのコミット時にあることを確認します。 Command Palette… (Command/Ctrl+Shift+P) → Create Branch… (repo.branch.create) を開きます。 Create a branch at HEAD を期待してください。
  2. Branch name = practice/rename-me を設定します。 Uncheck Check out the new branch。 Create Branchを選択します。 main がチェックアウトされたままになっている間、同じコミットで新しい ref が期待されます。
  3. ローカル ブランチ リストで、[practice/rename-me] を右クリック → [Rename practice/rename-me…] をクリックします。 Rename practice/rename-me で、ブランチ名を practice/renamed に設定し、次に Rename に設定します。古い名前が存在せず、同じ先端に新しい名前があることが予想されます。ファイルの変更はありません。
  4. ターミナルで、以下の祖先条件を証明します。次に、「練習/名前変更」→「Delete practice/renamed…」を右クリックします。 Delete practice/renamed in gittree-features? を確認し、ローカル参照のみがターゲットになっていることを確認してから、Delete practice/renamed を確認します。名前/チップが異なる場合はキャンセルしてください。ソースは、リモート復元で​​はなく、突然変異前のゴミ/ジャーナルエントリを約束しています。ランタイムで実証されたものを呼び出す前に、実際の操作/証拠をキャプチャします。
  5. パレット ブランチの作成…再度、feature/pricing-cards という名前を付け、Check out the new branch をチェックしたままにしてから、ブランチを作成します。この機能は同じ H5 でチェックアウトされる予定です。このチェックボックスにより、ステップ 2 とは異なり、操作で and スイッチが作成されます。
  6. ファイルを表示 (Command/Ctrl+Shift+E)、index.html にフォーカスして Enter キーを押します。作業テキストを完全な HTML-03 と Save (Command/Ctrl+S) に置き換えます。生成された dist をステージングしないでください。
  7. グラフ → パレット Show Working Changes に戻ります。 Index.html を確認し、Stage File を使用してください。概要 feat: add workflow cards;通常のオプションはオフ。 Commit Changes to 1 File / Command/Ctrl+Enter を 1 回実行します。
  8. ローカル ブランチ リストで main を右クリック → Checkout mainワークフローセクションのないドキュメント時代のヒーローとクリーンな作業を期待してください。機能/価格カードを右クリック → Checkout feature/pricing-cards で戻ります。ブランチのコミットされたツリーが異なるため、そのセクションが再表示されます。
  9. ダーティ スイッチ ダイアログが表示された場合は、Cancel して実際の作業を検査してください。正規のスイッチ ポイントはクリーンです。フィルムに合わせて破棄オプションを選択しないでください。
  10. 機能/価格カードで終了します。メインに 5 つのコミットがあり、フィーチャーに 1 つの追加コミットがあることを確認します。まだ not をマージするか、削除して単線グラフを取得してください。

名前付き参照に対するコンテキスト アクションは、引数のない汎用パレット コマンドではありません。最上位パレットの Create Branch... は、別個の current-HEAD アクションです。実際のメニュー ラベルを使用します。デフォルトの直接ブランチ作成/切り替えショートカットは作成されていません。

ターミナル内

ネイティブ同等、クリーンなメイン入力。アプリが成功した後はミューテーションを繰り返さないでください。

Command · bash
git branch practice/rename-me
git symbolic-ref --short HEAD
git branch -m practice/rename-me practice/renamed
git merge-base --is-ancestor practice/renamed main

ブランチ/名前変更/祖先のチェックはサイレントに成功しました。シンボリック参照は次のように出力します。

出力
main

祖先クエリの終了 0 は、この使い捨てチップがすでに到達可能であることを証明します。ゼロ以外の結果は停止を意味します。強制削除を置き換えないでください。

Command · bash
git branch --delete --quiet practice/renamed
git switch --quiet --create feature/pricing-cards

どちらも静かに成功しました。完全な HTML-03 を保存した後:

Command · bash
git add -- index.html
git commit --quiet -m "feat: add workflow cards"
git switch --quiet main

試合では全員が静かに成功した。このメイン スイッチは機能参照を移動しません。

main がチェックアウトされている間の意図的なネイティブ拒否:

Command · bash
git -c advice.forceDeleteBranch=false branch -d feature/pricing-cards

標準エラー出力を確認しました。1 を終了します:

出力
error: the branch 'feature/pricing-cards' is not fully merged

特徴は残っています。 Do not attempt this as an app safety test: の保護された削除ポリシーが異なります。レッスンを「修正」するために -d を -D に置き換えないでください。

返却して検査します。

Command · bash
git switch --quiet feature/pricing-cards
git symbolic-ref --short HEAD
git branch --format='%(refname:short)'
git rev-list --count main..feature/pricing-cards
git log --format=%s main..feature/pricing-cards
git diff --name-only main feature/pricing-cards
git rev-list --count main
git status --short

サイレント切り替え後に観察された出力を順番に示します。

出力
feature/pricing-cards
feature/pricing-cards
main
1
feat: add workflow cards
index.html
5

最終的な短いステータスは空で、終了 0 になります。両方の使い捨て名がありません。何も設定されていないため、リモート出力は存在しません。

結果

このレッスンの終わりには、機能/価格カードがチェックアウトされてクリーンになり、メインを超えて 1 つの機能がコミットされます。 main は 5 コミットのドキュメント チェックポイントに留まります。ワークフロー カードには価格が含まれていません。使い捨ての枝はありません。マージ、リモート、公開ブランチ、プロバイダーのアクションはありません。

よくある間違い

  • ブランチラベルをコミットとしてカウントします。
  • 作成のみの移動 HEAD を想定しています。
  • デモ参照の代わりにアクティブなsource-webブランチの名前を変更します。
  • アプリの削除にはネイティブの -d のガードがあると信じています。
  • 便利な機能を削除してグラフを簡略化します。

何か問題が発生した場合

無効な名前や重複した名前がある場合は、入力した値でダイアログを開いたままにする必要があります。エラーを読んでください。無関係な参照の名前を変更しても、大文字と小文字のみのあいまいさは解決されません。作業によって切り替えがブロックされる場合は、切り替えをキャンセルして保存します。後のスタッシュ/コミットのレッスンでは、意図的な選択が提供されます。別のワークツリーでチェックアウトされたブランチを単純に削除することはできません。

マージされていないネイティブの拒否は保護的です。アプリの突然変異前のスナップショットは別のメカニズムであり、到達可能性やチップ ID を無視する許可ではありません。フィルタリングされたビューからラベルが一時的に消えたという理由だけで、失敗した突然変異を成功として表示してはなりません。

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

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

  1. 質問 1 / 6

    H5 で別の参照を作成すると、どのくらいの履歴が作成されますか?

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

  2. 質問 2 / 6

    使い捨て参照を削除する前に何が必要ですか?

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

  3. 質問 3 / 6
    必須

    H5 の機能/価格カードに HTML-03 をコミットします。メインはどこですか?

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

  4. 質問 4 / 6
    必須

    メイン実行中に新しいブランチをチェックアウトするのチェックを外します。何が変わるのでしょうか?

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

  5. 質問 5 / 6

    Native -d は、マージされていない機能を拒否します。それはGitTreeも拒否したことを証明するのでしょうか?

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

  6. 質問 6 / 6
    必須

    チェックポイントが完了したことを証明する証拠はどれですか?

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

6 個中 0 個が正解です

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

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

練習する

変更されていないメインと 1 つ前のコミットを表示します。入力が変更されました: 新しいブランチのチェックアウトが off の場合、予測 HEAD は明示的に切り替えられるまでメインのままになります。完了したチェックポイントを変更するのではなく、別の使い捨てリプレイでテストします。ネイティブの拒否がアプリの拒否を証明しない理由を説明してください。

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

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

要約

  • ブランチ名とコミットは別のオブジェクトです。
  • 作成のみと作成と切り替えでは、異なる HEAD 効果があります。
  • 削除範囲と到達可能性を証明します。保護されたアプリの削除とネイティブの -d は異なります。

用語集の用語の紹介

ブランチ — فرع;スイッチ — تبديل;参照 — 重要;到達可能 — قابل للوصول;上流 — فرع متتبَّع;ワーキングツリー — جلد العمل.

ビデオトランスクリプト

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

トランスクリプトを表示する
  1. 機能ブランチを作成する メインを守りながら。
  2. 新しいブランチ名は、 コミットを作成しません。
  3. 使い捨てのものを作成する メインを残さずに名前を付けます。
  4. 作成専用であることを確認します ブランチを切り替えませんでした。
  5. 使い捨て参照の名前を変更するのではなく、 Web サイトのソース ブランチ。
  6. 現在のディスポーザブルチップを確認してください はすでにメインから到達可能です。
  7. 事前にチェックしたものだけを削除する 使い捨てのリファレンス。
  8. GitTree の保護された削除は次のとおりです ネイティブの安全な削除の拒否ではありません。
  9. 今回作成するのは、 機能を搭載しているのでチェックしてみてください。
  10. ワークフローセクションを保存します 価格やプロモーションなしで。
  11. 機能の 1 つを確認する コミットする前にファイルを変更しました。
  12. メインではなく機能にコミットします。
  13. チェックアウトされたブランチのみ このコミットで進みます。
  14. 切り替えはメインのコミット済みツリーを選択します。
  15. ネイティブの安全な削除が拒否される マージされていないフィーチャ。
  16. その拒否はGitTreeを証明するものではありません 同様の削除も拒否します。
  17. 機能の説明に戻る 記録されたファイルの内容。
  18. 1 つの機能のコミットを確認し、 インデックスドット H T M L のみが変更されました。
  19. メインにはまだ 5 つのコミットがあります そして特徴はきれいです。
  20. チェックアウトをオフにすると、新しい名前になります 存在しますが、HEAD はメインに残ります。
  21. 予期しないダーティスイッチをキャンセルする そして最初に作業を検査します。
  22. 保護されたローカル ヒントは、 遠隔復旧の約束。
  23. 便利な機能を保存して検証する 使い捨ての名前はなくなりました。
  24. 次のレッスンで紹介するのは、 リモコン。ここでは何も必要ありませんでした。