コミットM1-M2-M3を持つ既存のGit追跡モジュール(M)を想定します。サブモジュールでコミットを一時的にスキップします
私は、アプリケーション(A)のGitリポジトリをコミットA1-A2-A3としています。リポジトリにはサブモジュール(git submodule add URL DIRECTORY
)としてMが含まれていますが、Mでは最新ではありません。代わりに、古いコミットM1(subproject commit 187cac115b5f4fdeb39c25c79e882d30ee9624be
)を使用します。
私の問題はこれです:私はコミットM3の内容を使いたいですが、しばらくの間はコミットM2を使用してはいけません。この制限は最終的には終わりますが、現時点では克服できません。では、私の選択肢は何ですか?
Mはサブモジュールではなく、Aの分岐ではありませんでした場合、それは簡単だろう:A3に
Cherry-pick
M3、A4を形成します。- M2の制限が満たされたら、M3をA4にマージします。
サブモジュールではわかりません。私が考えることができる唯一の "直接"の解決策は、以下のステップを伴います。
- M1にブランチBを作成します。
Cherry-pick
M3をBに変換し、M4を形成する。- BをM3に結合し、M5を形成する。
- Mをそのリポジトリにプッシュします。
- では、Mを更新します。
- では、チェックアウトM4。
- M2の制限が満たされると、M5をチェックアウトします。
しかし、これは(変更がMに余分な複雑さが、何も持っていないとして)彼が行うには本当の理由を持っていない非常に多く、それらを受け入れるためにMの所有者の意欲に依存しているMの変化を伴います。私はMにそれほど強要する必要のない解決策を好むだろう。
- がM3で分岐Bを作成します。
多分間接的な解決策は、あります。
Reverse-commit
M2をBに変換し、M4を形成する。- Mをそのリポジトリにプッシュします。 Aにおいて
- 、A、チェックアウトM4
- M2上の制約が通過する、チェックアウトM3においてM.
- を更新します。
これはMの方がはるかに侵襲性が低く、良好です。しかし、ブランチBは永遠にアンマウントされてしまいました。私は非常に悪い状況だと考えています(私は、「TODOリスト」のようなブランチのリストを使用しています)。
この状況を処理する最も良い方法は何ですか?
ありがとうございました。
これは素晴らしい考えです。私はブランチにタグをつけて削除することができないことを認識しませんでしたが、それは私のニーズによく合います。 – pepak