この記事では、「Advanced Git」シリーズを継続しています。 Twitterでフォローするか、今後の記事の最新情報についてはニュースレターを購読してください!
前回の記事では、リベッシングとマージを探索しました。微妙に異なっていますが、 git merge
とgit rebase
両方が同じ基本的な目的を果たします。あるブランチから別のブランチへの変更を統合します。
この記事では、 git cherry-pick
、あらゆる支店から現在の頭への個々のコミットを選択できる強力なコマンドです。これは、Source Branchからすべての新しいコミットを組み込んだgit merge
およびgit rebase
とは対照的です。
なぜ単一のコミットを選択的に適用するのですか?重要なユースケースは、エラーを修正することです。誤って間違った枝にコミットすることを想像してください。 cherry-pick
修正を簡素化します:正しいブランチに切り替えて、誤ったコミットをチェリーピックします。
注意の言葉: cherry-pick
への過度の依存を避けてください。 git merge
とgit rebase
によって促進されるブランチレベルのワークフローが一般的に推奨されます。 cherry-pick
は、特定の状況に役立つ貴重なツールであり、標準のマージやリベッシングに代わるものではありません。
このシナリオを考えてみましょう。 feature/newsletter
ブランチを目的としたコミットは、誤ってmaster
に上陸しました。次のタワースクリーンショット(Macos and Windows用のgit gui)はこれ26bf1b48
示していますmaster
または、コマンドラインが問題を明らかにします。
$ gitログ Commit 26BF1B4808BA9783E4FABB19EC81E7A4C8160194(Head-> Master) 著者:TobiasGünther 日付:10月5日金曜日09:58:03 2018 0200 ニュースレターサインアップページ
Commit 26bf1b48
はfeature/newsletter
に属します。 cherry-pick
を使用して移動しましょう。
$ gitチェックアウト機能/ニュースレター ブランチ「機能/ニュースレター」に切り替えた $ gitステータス ブランチ機能/ニュースレター コミットするものは何もありません $ git cherry-pick 26bf1b48 [機能/ニュースレター7FB55D0]ニュースレターサインアップページ 著者:TobiasGünther 日付:10月5日金曜日09:58:03 2018 0200 1ファイルの変更、0挿入()、0 deletions( - ) モード100644 signup.htmlを作成します
git log
、 feature/newsletter
のコミットを表示します。
$ gitログ コミット7FB55D06A8E70FDCE46921A8A3D3A9DE7F7FB8D7(Head-> Feature/Newsletter) 著者:TobiasGünther 日付:10月5日金曜日09:58:03 2018 0200 ニュースレターサインアップページ
注: cherry-pick
コミットのコピーを作成し、オリジナルをそのまま残します。
「間違った」コミットはmaster
に残ります。 git reset
それを削除します:
$ gitチェックアウトマスター ブランチ「マスター」に切り替えた $ gitリセット - ヘッドヘッド〜1 ヘッドは現在776F8CAでタイトルと削除エラーページについて変更します
タワーGUIは、このプロセス全体を視覚化します。
可能な場合は、 merge
またはrebase
を優先します。特に個人のコミットを移動するのに適していない状況のためにcherry-pick
を予約します。 git cherry-pick
複製がコミットすることを忘れないでください。その後は常にクリーンアップしてください。
分岐戦略、インタラクティブなリベース、リフェログ、サブモジュールなど、より深いギットツールへのより深いダイブのための無料の「Advanced Git Kit」を探索してください。
ハッピーチェリーピッキング、そして次の「高度なgit」分割払いでお会いしましょう!
以上がGitでCherry-Pickingがコミットしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。