1

gitでは、2つのコミットとブランチマージがあり、これらは次のようにリベースされています

7
6_
  5
  4
3_|
2
1

マージはno-ffで行われました。

私のクライアントはコミット1と2をロールアウトしたくないので、次のようにリベースしようとしています

1
2
7
6_
  5
  4
3_|

これが望ましいのは、コミット7から分岐でき、それが私の本番リリースだからです。

リベース-iXXXX

全体を平坦化し、膨大な数の競合が発生します。実稼働ロールアウトを準備しようとしているので、コードをテストに戻さなければならないため、競合が発生したくありません。

私がこれをするとき

リベース-i-pXXXXXX

コミット1と2は正しく移動しますが、マージとそれに関連する4週間の作業は削除されます。いったいどうやってこれをするの?

4

1 に答える 1

3

2つのコミットからパッチを作成し、それらをリバースモードでheadに適用します。

プロ:

  1. 簡単な解決策
  2. 変更のサイズによってはかなり安全です

短所:

  1. コミットをコミット履歴に残します
  2. 2つのコミットに含まれるコードへの変更の量(つまり、リビジョン3〜7で発生するコードへの変更)によっては、逆の適用は機能しません。

もう1つのハックは、最後の7つのリビジョンなしでチェックアウトすることです。次に、リビジョン3〜7のパッチを作成し、それらを適用します。同じ結果とクリーンなコミット履歴が得られるはずです。

しかし、どちらの場合も、リベース中に多くの競合が発生したため、私は警戒しています。

于 2012-06-19T12:18:07.113 に答える