レッスン 13 · 日常の仕事
コミットをプッシュしてブランチを公開する
Leo の新しいメインを上書きせずに、目的のブランチをローカルのベアオリジンにパブリッシュします。後方のみのメインを明示的に前方に移動し、独自のアップストリームで機能を公開します。
- レベル: 初心者
- 2 分で読みました
- 4 分の動画
- 更新されました
- このレッスンの前に: ページを置き換えずにチームメイトの変更を取得します
このブラウザに進行状況が保存されました。
再生すると、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);正確な名前のコマンドを入力して選択します。名前付き参照アクションは、引数のないパレット ショートカットではなく、その行のコンテキスト メニューを使用します。
- メインでは、実際の送信元/送信先と 0/1 カウントを検査します。正規テイクで古いメインを最初にプッシュしないでください。
- サイドパネルの「リモート」グループで、「origin/main」→「Merge origin/main into main」を右クリックします。 Record it as で Fast-forward only を選択し、次に Merge を選択します。 H7 にメインがあり、Leo のフッター、1 つの親、およびグラフ内の直線が期待されます。
- 以下の祖先/クリーンリードバックを実行します。メインが分岐した場合は、書き換えモードを選択せずにキャンセルしてください。
- メインのツールバー Push をクリックします。通知には「すべてがすでに最新の状態でした。」と書かれています。これは新しいコミットではありません。
- [ローカル] で、feature フォルダを開き、pricing-cards → Push feature/pricing-cards を右クリックします。 1 つのリモコンではダイアログは表示されません。通知には「機能/価格カードがオリジン/機能/価格カードにプッシュされました」と書かれています。
- プッシュはアップストリームを設定しませんでした (ブランチには何もありませんでした)。同じ行を右クリック → Upstream → Set Upstream…、What should feature/pricing-cards track? で origin/feature/pricing-cards、次に Track を選択します。サーバー機能 F1 とアップストリームを確認します。
- チェックアウトせずにメイン グラフとフィーチャー グラフのラベルを選択します。それらが異なるヒントのままであり、マージが表示されないことを確認します。
- main をチェックアウトしたままにし、クリーンにし、両方の名前付きサーバー ブランチを検証したままにします。 [強制プッシュ…] を選択したり、すべての参照を公開したりしないでください。
すべての通常のコミット: 概要が記載された主題です。説明が空です。以前のコミットを修正し、フックをスキップし、サインオフ者を追加し、別の作成者を追加し、コミット後にプッシュし、空のコミットをオフに許可します。共著者はいません。指定したファイルのみをステージングし、N 個のファイルへの変更を 1 回コミットする (1 つのファイル)、または代わりに Command+Enter を押します。本当の結果を待ちましょう。明示的に修正するレッスンでは、指定されたオプションのみが変更されます。
ターミナル内
元のデモからのネイティブ代替:
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 はありません。その後の遠隔修正を調整します。
理解度を確認してください
各質問に答えてから、その理由を読みましょう。 「必須」とマークされた質問は、レッスンの完了にカウントされます。
6 個中 0 個が正解です
必須の質問に正しく答えると、レッスンを完了できます。
このブラウザで確認しました。
練習する
メイン/サーバー H7 の同等性、フィーチャー/サーバー F1 の同等性、フィーチャー アップストリーム、変更されていないメイン チェックアウト、およびクリーン ステータスを証明します。別の古いメイン コピーで、H7 を失うことなく拒否を予測して観察します。
あなた自身の確認: サイトはあなたのコンピュータを認識できません。
レッスンを完了するには、必須の質問に正しく答え、実践的な演習を確認してください。
要約
- 正確な目的地を調べてください。
- 後方のみの子孫を明示的に統合します。
- 1 つのブランチをマージせずにパブリッシュします。
関連している
用語集の用語の紹介
プッシュ — دفع;パブリッシュブランチ — ブランチを発行します。上流 — الفرع المتتبَّع;早送り — تقديم سريع。
ビデオトランスクリプト
ビデオのナレーションが次々と流れます。
トランスクリプトを表示する
- 正確なチェックポイントから開始します。
- ブランチとインデックスに名前を付けます そして作業バージョン。
- 分離されたコースのコピーのみを準備します。
- 正確な送信元と送信先を調べてください。
- 次の場合のみ早送りします 祖先がそれを許します。
- 実際の分岐が分岐している場合は停止します。
- main はすでに宛先と一致しています。
- Publish the named すべてのブランチではありません。
- 機能自体のアップストリームを確認します。
- パブリケーションでは機能が統合されません。
- 元のメインはきれいなままにしておきます。
- F1 を公開すると何をしますか?
- 名前付きの ref を送信します。 すべての作業ファイルではありません。
- 正規の成功後に当てはまる事実はどれですか?
- その推進力はすでに揃っていた。
- メイン/H6 を早送りします。 子孫 H7: 新しいマージ コミット?
- ref は既存の子孫に移動します。
- 入力を変更: 古い H6 を押し込みます アライメント前のサーバー H7。
- ネイティブは exit1 を取得し、H7 を保持します。
- プッシュはすでに次のことを言っています 日付。 Is F1 published?
- Main's result says 他の参照者については何もありません。
- 最終的に必要な証拠はどれですか?
- 各ブランチの実際の SHA を比較します。
- 実際の結果を検証してみると、 単なるメッセージではありません。
- 行動する前に、変更された入力を予測します。
- リカバリする前に有用な作業を保存します。
- 続行する前にチェックポイントを証明してください。
- 検証結果を保存する 次のステップのために。