チェリーピッキングのn
コミットは、チェリーピッキングのコミットと同じです(個別のgit呼び出しを使用)。ブランチやその他の関係はありません。現在のブランチで新しいコミットが作成されるだけです。
ヘルプページhttps://www.git-scm.com/docs/git-cherry-pick.htmlには次のように書かれています。
1つ以上の既存のコミットが与えられた場合、それぞれが導入する変更を適用し、それぞれに新しいコミットを記録します。
そのステートメントをバラバラに選んでみましょう:
変化
これは、「diff」とも呼ばれるものです。それがgit diff HEAD somecommit
出力されるものです。「パッチ」と呼ばれることもあります(実際、からの同じ出力をgit diff
通常のpatch
ユーティリティで適用できます。もちろん、git apply
ここでは重要ではありません)。
したがって、「変更」とは、テキストファイルのようなツール、git
またはpatch
テキストファイルを変更して、新しい変更されたテキストファイルを作成する方法を指示するものです。
2つのファイルに対して標準diff
ユーティリティを実行することにより、2つのファイル間の違いの同様のテキスト表現を作成できます。実際、それはgit
内部的に(もちろん、独自のdiff実装を使用して)チェリーピックで行うことです。つまり、これは2方向の差分であり、git merge
操作のような3方向の差分ではありません。
それぞれが紹介します
この状態の場合:
...----+----+----...
abc def
次に、これが「導入」されるため、git cherry-pick def
変更はコミットabc
とdef
(もちろん、ファイルごとに異なるすべてのファイルの)間の双方向の差分def
です。
変更を適用する
これはHEAD
、「変更」(つまり、差分、パッチなど)を取得して、新しいテキストファイルのセットを作成することを意味します。これは、patch
そうでない場合、つまりdiff
出力のコンテキスト情報がHEAD
現在の内容と一致しない場合を除いて、原則として(ユーティリティが行うのと同じように)双方向マージとして扱うことができます。その場合、gitは、3ウェイマージを実行できる共通の祖先を見つけるためにチートします。また、gitとmeldを使用したインタラクティブなリベースのための3ウェイマージの3つのファイルは何ですか?。しかし、それでも、ユーザーの観点からはgit merge
、構造的には、のような2つの親のコミットではなく、単一の親のコミットになる限り、実際には比較できませんgit merge
。
新しいコミットを記録する
git
変更をインデックスと作業ディレクトリに適用し、コミットします。2方向マージと3方向マージが競合なしで機能しなかった場合を除き、その場合は、ヘルプページから直接コメントを追加してください。
def
上の私の写真にあります。]そして最後に、文の残りの部分:
1つ以上の既存のコミットが与えられた場合、適用...それぞれに新しいコミットを記録します。
明示的にgit cherry-pick sha1 sha2 sha3...
または暗黙的に複数のコミットを指定するとgit cherry-pick sha1..sha2
、上記は単純なループで実行され、最後のピックの後、またはマージの競合が発生したときに停止します。
CHERRY_PICK_HEAD refとは何ですか?
2. The CHERRY_PICK_HEAD ref is set to point at the commit that introduced the change that is difficult to apply.
commitを選択しようとしてdef
、マージの競合が発生した場合、はCHERRY_PICK_HEAD
を指しdef
ます。
git Cherry-pick 2 ^ .. 4を実行することにより、gitが実行するアクションのシーケンスはどのようになり、どのコミット間でgit use diffが実行されますか?
上記のように:
git cherry-pick --continue
。git Cherry-pick 1..8を実行すると、gitは何をしますか?
同じですが、今回はコミット2、3、4、8を選択します。
(「最初」の範囲でコミットが選ばれていないという事実は、例えば、通常の動作であるgit log 2^..4
か、git log 1..8
出力が同じコミットだろう- 。実際に選んだであろうと同じ。これは、桜の下で選ぶヘルプページに記載されている<commits>
など、詳細については、gitがリビジョンをウォークする方法へのリンク。これはのプロパティではなく、git cherry-pick
これらの..
範囲がどのように機能するかについてのプロパティです。)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加