コンテンツにスキップ
GitTree

レッスン 13 · 日常の仕事

コミットをプッシュしてブランチを公開する

Leo の新しいメインを上書きせずに、目的のブランチをローカルのベアオリジンにパブリッシュします。後方のみのメインを明示的に前方に移動し、独自のアップストリームで機能を公開します。

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

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

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

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

何を学ぶか

  • プッシュする前にソースと宛先を検査します。
  • マージ コミットなしで、behind-only ブランチを早送りします。
  • 名前付き機能を 1 つ公開し、そのアップストリームを確認します。
  • 拒否と仕事の喪失を区別してください。

始める前に

レッスン 11 が終了したところから開始します。メイン/H6 がチェックアウトされ、オリジン/メイン/サーバー H7 と Leo のフッター、クリーン、メイン 6 とフェッチされた 7 つのコミットと 0/1 が表示されます。機能 F1 はアップストリームなしでローカルにのみ存在します。

このビデオは、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 またはネイティブ パスのいずれかを介してミューテーションを作成します。読み取り専用検証はどちらの後にも続きます。最終的な作業として説明される準備はすべて、ネイティブの準備としてラベル付けされており、決して発明されたアプリの機能ではありません。

概念と状態の効果

Push は、選択したリモート参照への更新を提案します。これは、すべてのファイル、追跡されていないバッファ、またはブランチのバックアップではありません。ネットワーク接続が機能している場合でも、宛先は更新を拒否する可能性があります。

受信 H7 は main/H6 から派生します。早送りでは、マージ コミットを作成せずに main をその子孫に移動できます。ここでは、この狭く述べられた祖先操作を紹介します。発散積分は、コースの後のレッスンに属します。

フィーチャー/価格カードを公開すると、F1 が新しいサーバー ブランチに送信されます。 GitTree では、プッシュは上流を選択しません。同じ分岐行から後で設定します。現在のブランチを切り替えたり、そのワークフロー カードを main にマージしたりすることはありません。成功した no-op メイン プッシュは、新しいサーバーのコミットではありません。

明示的な早送りにより、main/HEAD、インデックス、ワークが H7 に変更されます。プッシュでは、成功後に選択したサーバー参照とローカルの追跡/構成のみが変更されます。ステージングされていないテキストは保存されません。リモート メインは Leo のコミットを保持する必要があります。

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

レッスン 11 の後でオリジナルを使用し、安定したプレビューを得るためにバックグラウンドフェッチをオフにします。新しいファイル ペイロードやノートブックは追加されません。意図的なメイン背後での拒否は、別のネイティブ テイクであり、アプリの強制プッシュをクリックする指示ではありません。

GitTreeで

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

  1. メインでは、実際の送信元/送信先と 0/1 カウントを検査します。正規テイクで古いメインを最初にプッシュしないでください。
  2. サイドパネルの「リモート」グループで、「origin/main」→「Merge origin/main into main」を右クリックします。 Record it as で Fast-forward only を選択し、次に Merge を選択します。 H7 にメインがあり、Leo のフッター、1 つの親、およびグラフ内の直線が期待されます。
  3. 以下の祖先/クリーンリードバックを実行します。メインが分岐した場合は、書き換えモードを選択せず​​にキャンセルしてください。
  4. メインのツールバー Push をクリックします。通知には「すべてがすでに最新の状態でした。」と書かれています。これは新しいコミットではありません。
  5. [ローカル] で、feature フォルダを開き、pricing-cards → Push feature/pricing-cards を右クリックします。 1 つのリモコンではダイアログは表示されません。通知には「機能/価格カードがオリジン/機能/価格カードにプッシュされました」と書かれています。
  6. プッシュはアップストリームを設定しませんでした (ブランチには何もありませんでした)。同じ行を右クリック → Upstream → Set Upstream…、What should feature/pricing-cards track? で origin/feature/pricing-cards、次に Track を選択します。サーバー機能 F1 とアップストリームを確認します。
  7. チェックアウトせずにメイン グラフとフィーチャー グラフのラベルを選択します。それらが異なるヒントのままであり、マージが表示されないことを確認します。
  8. main をチェックアウトしたままにし、クリーンにし、両方の名前付きサーバー ブランチを検証したままにします。 [強制プッシュ…] を選択したり、すべての参照を公開したりしないでください。

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

ターミナル内

元のデモからのネイティブ代替:

Command · bash
git rev-list --left-right --count main...origin/main
git merge --ff-only --quiet origin/main
git push --quiet origin main
git push --quiet --set-upstream origin feature/pricing-cards
git rev-list --left-right --count main...origin/main
git rev-parse --abbrev-ref 'feature/pricing-cards@{upstream}'
git symbolic-ref --short HEAD
git status --short

最初のカウント0/1;早送りと静かなプッシュは exit 0 を押します。最後のリードバックは次の順序で出力されます。

出力
0	0
origin/feature/pricing-cards
main

ステータスはサイレントです。サーバー/ローカルのメインと機能の実際の SHA を git ls-remote --heads オリジンと個別に比較します。変数 ID は、意図されたローカル ヒントと一致する必要があります。早送り前のネガティブ テイクを別個に作成します: git Push --quitte main exited1 と実際の診断の抜粋:

出力
 ! [rejected]        main -> main (non-fast-forward)

完全な診断では、測定されたローカル ファイル URL と Git ヒントに名前が付けられます。その拒否時にリモート参照は変更されませんでした。 URLを捏造したり、無理に修復したりしないでください。

結果

Where you end: メインは H7 に早送りされましたが、チェックアウト/クリーンのままです。サーバーメインはH7のままです。フィーチャー F1 はオリジン/フィーチャー/価格カードとして公開され、追跡されます。 main と feature がマージされていませんでした。

よくある間違い

  • 名前付き機能を意味する場合は、現在のメインを公開します。
  • ビハインドのみの拒否を Leo の上書き許可として扱います。
  • プッシュによって機能のアップストリームが設定されたか、その設定によって何かがマージされたと仮定すると、アプリには別の Set Upstream… ステップが必要です。

何か問題が発生した場合

拒否後は、再試行する前に祖先/宛先を取得して検査します。この正確な後方のみの入力には、明示的な早送りを使用します。リモート プッシュには汎用アプリ Undo はありません。その後の遠隔修正を調整します。

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

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

  1. 質問 1 / 6

    F1 を公開すると何をしますか?

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

  2. 質問 2 / 6

    正規の成功後に当てはまる事実はどれですか?

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

  3. 質問 3 / 6
    必須

    メイン/H6 を子孫 H7 に早送りします: 新しいマージ コミット?

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

  4. 質問 4 / 6
    必須

    入力を変更します。位置合わせの前に、古い H6 をサーバー H7 の上にプッシュします。

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

  5. 質問 5 / 6

    Pushはすでに最新であると述べています。 F1って公開されてるの?

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

  6. 質問 6 / 6
    必須

    最終的に必要な証拠はどれですか?

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

6 個中 0 個が正解です

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

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

練習する

メイン/サーバー H7 の同等性、フィーチャー/サーバー F1 の同等性、フィーチャー アップストリーム、変更されていないメイン チェックアウト、およびクリーン ステータスを証明します。別の古いメイン コピーで、H7 を失うことなく拒否を予測して観察します。

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

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

要約

  • 正確な目的地を調べてください。
  • 後方のみの子孫を明示的に統合します。
  • 1 つのブランチをマージせずにパブリッシュします。

用語集の用語の紹介

プッシュ — دفع;パブリッシュブランチ — ブランチを発行します。上流 — الفرع المتتبَّع;早送り — تقديم سريع。

ビデオトランスクリプト

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

トランスクリプトを表示する
  1. 正確なチェックポイントから開始します。
  2. ブランチとインデックスに名前を付けます そして作業バージョン。
  3. 分離されたコースのコピーのみを準備します。
  4. 正確な送信元と送信先を調べてください。
  5. 次の場合のみ早送りします 祖先がそれを許します。
  6. 実際の分岐が分岐している場合は停止します。
  7. main はすでに宛先と一致しています。
  8. Publish the named すべてのブランチではありません。
  9. 機能自体のアップストリームを確認します。
  10. パブリケーションでは機能が統合されません。
  11. 元のメインはきれいなままにしておきます。
  12. F1 を公開すると何をしますか?
  13. 名前付きの ref を送信します。 すべての作業ファイルではありません。
  14. 正規の成功後に当てはまる事実はどれですか?
  15. その推進力はすでに揃っていた。
  16. メイン/H6 を早送りします。 子孫 H7: 新しいマージ コミット?
  17. ref は既存の子孫に移動します。
  18. 入力を変更: 古い H6 を押し込みます アライメント前のサーバー H7。
  19. ネイティブは exit1 を取得し、H7 を保持します。
  20. プッシュはすでに次のことを言っています 日付。 Is F1 published?
  21. Main's result says 他の参照者については何もありません。
  22. 最終的に必要な証拠はどれですか?
  23. 各ブランチの実際の SHA を比較します。
  24. 実際の結果を検証してみると、 単なるメッセージではありません。
  25. 行動する前に、変更された入力を予測します。
  26. リカバリする前に有用な作業を保存します。
  27. 続行する前にチェックポイントを証明してください。
  28. 検証結果を保存する 次のステップのために。