誤って以前のリビジョンに更新し、そこからデフォルト ブランチでコミットしたため、デフォルト ブランチで 2 つのヘッドが発生しました。ヘッドの 1 つを別のブランチに移動したい。私が移動したいこの頭は、数回前に取引されました。強制的にプッシュせずに他のヘッドをサーバーにプッシュできるように、それが含まれているブランチを変更するにはどうすればよいですか?
これまでのところ、サーバーに何もプッシュしていません。結局のところ、必要なファイルをコピーして、リポジトリを再クローンできます。
誤って以前のリビジョンに更新し、そこからデフォルト ブランチでコミットしたため、デフォルト ブランチで 2 つのヘッドが発生しました。ヘッドの 1 つを別のブランチに移動したい。私が移動したいこの頭は、数回前に取引されました。強制的にプッシュせずに他のヘッドをサーバーにプッシュできるように、それが含まれているブランチを変更するにはどうすればよいですか?
これまでのところ、サーバーに何もプッシュしていません。結局のところ、必要なファイルをコピーして、リポジトリを再クローンできます。
リベース拡張機能を使用して履歴を書き換えることができます。すでにインストールされているので、有効にする必要があります(tortoiseHGの[ファイル]>[設定]>[拡張機能]から)。tortoiseHGの内部では、リビジョンを右クリックして[履歴の変更]に移動し、[リベース]を選択すると見つけることができます。ただし、より詳細に制御するには、コマンドラインにドロップすることをお勧めします。
w
デフォルトのブランチから新しいヘッドであるリビジョンがあるとしましょう。(w
それに沿って移動する子孫がある場合があります)。
-o-o-o-o
\
w
b
その親は、別のブランチ(図には示されていません)のリビジョンである必要があります。入力するだけです:
hg rebase --source w --dest b --detach
それでおしまい!新しい親がになるように、リベースw
し、そのすべての子孫(存在する場合)をリベースしb
ます。b
を追加しない限り、と同じブランチ名に割り当てられます--keepbranches
。このフラグ--detach
により、状況によっては複雑なトポロジになってしまうことがなくなります。