これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド git-cherry-pick です。
プログラム:
NAME
git-cherry-pick - 既存のコミットによって導入された変更を適用する
SYNOPSIS
git チェリーピック [--edit] [-n] [-m 親番号] [-s] [-x] [--ff]
[-S[ ]] ...
git チェリーピック - 継続する
git チェリーピック - 終了する
git チェリーピック - アボート
DESCRIPTION
XNUMX つ以上の既存のコミットがある場合、それぞれが導入する変更を適用し、新しいコミットを記録します。
それぞれコミットします。 これには、作業ツリーがクリーンである必要があります (
HEAD コミット)。
変更を適用する方法が明らかでない場合、次のようなことが起こります。
1. 現在のブランチと HEAD ポインターは、最後に成功したコミットにとどまります。
2. CHERRY_PICK_HEAD ref は、変更を導入したコミットを指すように設定されます。
適用が難しい。
3. 変更が正常に適用されたパスは、インデックス ファイルと
あなたの作業ツリー。
4. 競合するパスの場合、インデックス ファイルには最大 XNUMX つのバージョンが記録されます。
の「TRUE MERGE」セクション git-マージ(1)。 作業ツリー ファイルには、
通常の競合マーカーで囲まれた競合の説明 <<<<<<< および
>>>>>>>.
5. その他の変更はありません。
詳細はこちら: git-マージ(1) そのような競合を解決するためのいくつかのヒント。
OPTIONS
...
チェリーピックにコミットします。 コミットの綴り方のより完全なリストについては、以下を参照してください。
ギトレヴィジョンズ(7)。 コミットのセットを渡すことができますが、トラバーサルはデフォルトで行われません。
もし --散歩禁止 オプションが指定されました。 を参照してください git-rev-リスト(1)。 を指定することに注意してください。
範囲はすべてをフィードします... 単一のリビジョン ウォークへの引数 (後述を参照)
使用例 MAINT マスター..次).
-e、--edit
このオプションを使用すると、 git チェリーピック 前にコミットメッセージを編集できます
コミットしています。
-x
コミットを記録するときは、「(cherry picks from commit ...)」という行を追加します。
この変更がどのコミットであったかを示すために、元のコミット メッセージに
からチェリーピック。 これは、競合のないチェリー ピックに対してのみ行われます。 使用禁止
プライベートブランチからチェリーピッキングしている場合、このオプション
受け取る側には無用です。 一方、XNUMXつの間でチェリーピッキングをしている場合
一般に公開されているブランチ (たとえば、古いバージョンのメンテナンス ブランチへの修正のバックポート)
開発ブランチからのリリース)、この情報を追加すると役立つ場合があります。
-r
以前は、コマンドはデフォルトで上記の -x を実行し、-r は
無効にします。 現在、デフォルトでは -x を実行しないため、このオプションはノーオペレーションです。
-m 親番号、--mainline 親番号
通常、マージのどちら側かわからないため、マージをチェリー ピックすることはできません。
メインラインと考えるべきです。 このオプションでは、親番号 (開始番号) を指定します。
メインラインの 1) から、cherry-pick がメインラインに関連する変更をリプレイできるようにします。
指定された親。
-n、--コミットなし
通常、コマンドは一連のコミットを自動的に作成します。 このフラグは、
作業ツリーとインデックスへの各名前付きコミットをチェリーピックするために必要な変更、
コミットせずに。 さらに、このオプションを使用すると、インデックスは
HEAD コミットと一致する必要があります。 チェリーピックは、の開始状態に対して行われます
あなたのインデックス。
これは、複数のコミットの効果をインデックスにチェリーピックするときに役立ちます。
行。
-s、--サインオフ
コミット メッセージの最後に Signed-off-by 行を追加します。 のサインオフ オプションを参照してください。
git-commit(1)詳細については。
-S[ ]、--gpg-sign[= 】
GPG 署名コミット。 keyid 引数はオプションであり、デフォルトはコミッタです。
身元; 指定する場合は、スペースを入れずにオプションに固定する必要があります。
--ff
現在の HEAD がチェリーピックされたコミットの親と同じである場合、
このコミットへの早送りが実行されます。
--allow-empty
デフォルトでは、空のコミットのチェリーピックは失敗します。
git commit --allow-empty の呼び出しが必要です。 このオプションはそれをオーバーライドします
これにより、空のコミットをチェリーピックで自動的に保存できます。 ノート
「--ff」が有効な場合、「早送り」要件を満たす空のコミット
このオプションがなくても保持されます。 また、このオプションの使用は保持のみであることにも注意してください
最初は空だったコミット (つまり、コミットはそのコミットと同じツリーを記録しました)
親)。 以前のコミットのために空になったコミットはドロップされます。 力に
これらのコミットを含めるには、--keep-redundant-commits を使用します。
--allow-空のメッセージ
デフォルトでは、空のメッセージを含むコミットのチェリー ピックは失敗します。 このオプション
その動作をオーバーライドし、空のメッセージを持つコミットをチェリーピックできるようにします。
--keep-redundant-commits
チェリーピックされたコミットが現在の履歴にすでにあるコミットと重複している場合、
空になります。 デフォルトでは、これらの冗長なコミットにより、cherry-pick が停止するため、
ユーザーはコミットを調べることができます。 このオプションはその動作をオーバーライドし、空の
オブジェクトをコミットします。 --allow-empty を意味します。
--戦略=
指定されたマージ戦略を使用します。 使用は XNUMX 回のみにしてください。 マージ戦略を参照
のセクション git-マージ詳細は(1)。
-バツ、 --strategy-option=
マージ戦略固有のオプションをマージ戦略に渡します。 見る ギット-
マージ詳細は(1)。
シーケンサー サブコマンド
- 継続する
の情報を使用して進行中の操作を続行します。 .git/シーケンサー。 することができます
以前は失敗したチェリーピックまたはリバートで競合を解決した後に続行していました。
- 終了する
現在進行中の操作のことは忘れてください。 シーケンサーをクリアするために使用できます
チェリーピックまたはリバートが失敗した後の状態。
- アボート
操作をキャンセルし、シーケンス前の状態に戻ります。
例
git チェリーピック マスター
コミットによって導入された変更を master ブランチの先端に適用し、
この変更で新しいコミット。
git チェリーピック ..マスター、git チェリーピック ^HEAD マスター
master の祖先であるが master の祖先ではないすべてのコミットによって導入された変更を適用します
新しいコミットを生成するための HEAD。
git Cherry-pick maint next ^master、git Cherry-pick maint master..next
maint または next の祖先であるすべてのコミットによって導入された変更を適用しますが、
マスターまたはその先祖ではありません。 後者は maint を意味しないことに注意してください。
master と next の間のすべて。 具体的には、次の場合、maint は使用されません。
マスターに含まれています。
git チェリーピック master~4 master~2
master が指す最後の XNUMX 番目と XNUMX 番目のコミットによって導入された変更を適用する
これらの変更で 2 つの新しいコミットを作成します。
git Cherry-pick -n master~1 next
作業ツリーとインデックスに、最後から XNUMX 番目の変更によって導入された変更を適用します。
master が指している commit と、next が指している最後のコミットが指しているが、そうではない
これらの変更でコミットを作成します。
git Cherry-pick --ff ..next
history が線形で HEAD が next の祖先である場合、作業ツリーを更新し、
次に一致するように HEAD ポインタを進めます。 それ以外の場合は、によって導入された変更を適用します
next にあるが現在のブランチの HEAD ではないコミットで、新しいブランチを作成する
新しい変更ごとにコミットします。
git rev-list --reverse master -- README | git チェリーピック -n --stdin
README に触れたマスター ブランチのすべてのコミットによって導入された変更を適用します。
作業ツリーとインデックスに追加されるため、結果を検査して単一にすることができます
適切な場合は新しいコミット。
次のシーケンスはパッチのバックポートを試みますが、コードがパッチであるためベイルアウトします
に適用され、変更が多すぎて、再試行しますが、今回はより注意が必要です
コンテキスト行の一致について。
$ git チェリーピック トピック^ (1)
$ git 差分 (2)
$ git restart --merge ORIG_HEAD (3)
$ git cherry-pick -Xpatience トピック^ (4)
1. git show topic^ によって表示される変更を適用します。 この例では、パッチ
きれいに適用されないため、競合に関する情報がインデックスに書き込まれ、
作業ツリーと新しいコミット結果はありません。
2. 調整する変更を要約する
3. チェリーピックをキャンセルします。 つまり、チェリーピック前の状態に戻ります。
作業ツリーで行ったローカルの変更。
4. トピック^ によって導入された変更をもう一度適用してみてください。回避するために余分な時間を費やします
コンテキスト行の不正確な一致に基づくミス。
onworks.net サービスを使用してオンラインで git-cherry-pick を使用する