1

コンテキスト:

"mine" と "yours" と "main" の 3 つのブランチがあります。私はクリーンなクローンから始めましたが、唯一の要件は、「私の」ブランチを「メイン」ブランチのように作成し、いくつかの変更を加えるだけです。他のブランチを変更したくありません。現在の「私の」ブランチには、削除して新しいチェンジセットに置き換えたいチェンジセットが 1 つしかありません。

私の試み:

「私の」には、破棄したい変更セットが1つだけ含まれています。それで、私はこの変更セットを削除し(効果的に「mine」を削除)、ディレクトリを「main」ブランチに更新し、「mine」(「hg branch mine」)を再作成し、変更を追加してコミットし、プッシュしたいと思います。「hg push -b mine」の出力は「中止: プッシュは新しいリモート ヘッドを作成します...」であり、新しい変更セットを参照します。ただし、新しい変更セットを古い (ローカルで削除された) 変更セットに置き換えたいだけです。「hg 発信」には新しい変更セットがリストされ、「hg 着信」には古い変更セットがリストされます。

私は非常に近いと思いますが、何か提案はありますか?ここで強制プッシュは機能しますか? 代替ソリューションと参考文献を歓迎します。

4

1 に答える 1

0

「私の」ブランチから不要な変更セットを削除し、「私の」ブランチで新しい変更セットをコミットするという私の試みの後、ここに私の解決策があります:

この問題を強制プッシュ「hg push -f」で解決しました。これにより、「mine」ブランチ (メイン リポジトリ内) に 2 つのヘッドが作成され、「hg strip」拡張機能を使用して余分なヘッドが取り除かれました。これは、プッシュ後にメイン リポジトリから行ったもので、完璧ではないかもしれませんが、これらの目的には有効でした。

新しい変更セット (新しい "mine" ブランチ) を追加するには強制プッシュが必要で、strip (メイン リポジトリでプッシュ後に実行する必要がありました) は古い "mine" ブランチを削除しました。ローカル リポジトリの "mine" ブランチを削除しても、削除された変更セットがメイン リポジトリにまだ存在するため、違いはありません (したがって、プッシュ後に削除する必要があります)。

より良い解決策 (または質問を表現するためのより良い方法) がある場合は、知りたいと思っています。

于 2013-06-25T22:00:04.547 に答える