1

プライバシー上の理由から、以下の画像を編集しましたが、基本的には同じコミットで取得しようとしている 2 つのブランチがあります。タグ 4.3.1.11 のコミットは、タグ 4.3.1.13 のコミットとは別のブランチにあります。4.3.1.11 を 4.3.1.13 にマージしようとしましたが、何も変わりません。

私は単に同じコミットで両方のブランチを取得しようとしています。

これを行うにはどうすればよいですか。同様の質問が寄せられていることは知っていますが、私のようなシナリオで回答が得られたことはありません。

ここに画像の説明を入力

4

3 に答える 3

0

ブランチのポインターを別のコミットに移動するには、次を使用します。

git branch -f <branch name> <commit number>

from: Git: チェックアウトせずにブランチ ポインターを別のコミットに移動する

于 2016-03-31T13:52:49.630 に答える
0

Merge と Commit という用語には混乱があるかもしれません。git では、コミットは単にデルタであり、コンテキストの 2 つの変更の間です。マージは、2 つの親のブランチを結合する単一のエンティティを表すシンボリック コミットです。

これは、マージが実際に重要な SVN のようなリビジョン システムとは異なります。git では、それを戦略と見なす方が安全です。

したがって、レポ A にポイントがあり、別のポイント B がある場合、それらは何らかのパスを介して互いに接続します (2 つの別々の孤立したブランチにない限り)。ポイント C を作成するように git に指示する場合、これはブランチ A または B の拡張と見なすことができますが、これは A から B への、または B から A へのシンボリック マージです。共有の親が見つかるまで、A と B の親子関係を調べます。

したがって、OA と OB が OAC (C はマージ) を作成するパスである場合、BOA をパスと見なします。

OB をマージしたいものと見なし、OA を忘れている可能性があるため、これは混乱を招きます。しかし、それは論理的です。

あなたの例では、4.3.1.11 が A、origin/develop が B、4.3.1.13 が G の場合、ブランチ ツリーは単に ABCDEFG であることがわかります。したがって、A から G に移動するには、ツリーに沿って進むだけです (早送りできます)。

別の言い方をすれば、G には既に A が含まれており、デルタ BG が既に適用されているだけなので、明らかに戦略の正味の効果は git が「何もしない」ということです。

あなたの例では、4.3.1.11 と 4.3.1.13 はタグであるため、定義上、移動しないでください。回答でコメントしたgit branch -fように、ブランチ ポインターを新しいコミットに移動するために使用できますが、それはマージではありません。コミットを削除するために使用することもできますgit revert(逆コミットを作成し、それをチェーンに追加するように git に要求します)。

于 2016-04-27T14:46:18.380 に答える