0

ローカル ブランチからメイン ストリーム ブランチに変更をプルしたいが、メイン ブランチのローカル ブランチの中間変更セット履歴が必要ない場合。どうすればそれができますか?

4

2 に答える 2

0
  1. サーバーへのプッシュ時に変更セットの履歴を書き換えることはできません
  2. プッシュする前に、ローカル リポジトリのローカル履歴を書き換えることができます
  3. hg push -b ...部分的なプッシュを実行して、レポ全体ではなく、特定のブランチのみを送信できます

1-3手段の統合

  • 新しい、別のプッシュ可能なブランチが必要です
  • このブランチにマージし、その履歴を折りたたみます (MQ パッチ、拡張子を追加: histedit|collapse)
  • このブランチのみをプッシュ
于 2012-10-15T16:27:46.200 に答える
0

プッシュ時に変更セットを省略することはできないため、この解決策を試すことができます。まったく明確ではありませんが、この方法で実行できます。ローカルの hg ログを次のように想像してください。

  • 5: トップ (このチェンジセットをメインブランチに置きたい)
  • 4: (ローカル変更セット)
  • 3: (ローカル変更セット)
  • 2: (ローカル変更セット)
  • 1: 既にメイン ブランチにある変更セットで、ローカルから新しくプッシュされた変更セットの親になる必要があります。

この問題が発生した場合は、1 に更新し、すべての変更を 5 から元に戻します (したがって、作業ディレクトリは 5 と同じになります)。その後、一時的にコミット (6) し、これを一時的にコミットします (チェンジセット 5 と同じ)。メインに。ローカルでは、5 と 6 をマージして続行できますが、ローカルからメインへの発信変更セットが常に存在します。コマンドは次のようになります。

  1. HGアップ1
  2. hg revert -r 5 -a (これで作業ディレクトリは 5 と同じになります)
  3. hg ci -m "メイン ブランチに表示されるコミットの名前"
  4. hg push -r 6 main_branch_path

しかし、適切な解決策は、このように使用する場合、すべての devel 変更セットも main に保持することです。HTH

于 2012-10-16T07:07:38.590 に答える