コミットされていない変更が本質的に悪いことだとは思いません。あなたは「それらとマージできないこと」を参照します-一部のファイルへのコミットされていない変更があり、そのファイルへの変更をプルして更新すると、Mercurialはコミットしたかのようにマージプロセスを開始し、マージ。違う意味ですか?
したがって、他の開発者とまだ共有したくないローカルな変更については、2つのアプローチがあります。1つ目は、変更を作業コピーに保存し、変更をプッシュしないことです。もう1つは、作業コピーの外に置いておきます。どちらを選択するかは、作業中にこれらの変更を利用できるようにするかどうかによって異なります。
作業コピーにそれらを保持する場合、着信変更は正常に機能するため、発信変更の作成を回避するだけで済みます。つまり、変更のコミットを回避できます。ファイルが新しい場合、それは簡単です-しないでhg add
ください。それらがすでに追跡されている場合、具体的にはを使用してコミットから除外できますhg commit --exclude foo.txt
。除外するファイルの数が多い場合、または多くのコミットからそれらを除外する場合(たとえば、ローカル構成ファイルへの永続的な変更のため)、exclude拡張機能を確認します。
変更を移動する準備ができている場合は、別のオプションセットがあります。最も簡単なのはhg diff
、ファイルを使用して、ファイルを説明するパッチを作成し、安全な場所に保管して、hg patch --no-commit
変更を元に戻したいときにそのパッチを再適用することです。棚の拡張機能、屋根裏部屋の拡張機能、またはその他の親戚をインストールすることにより、これをよりスムーズにすることができます。キュー拡張機能を使用することもできますが、それは大ハンマーを使用してナットをクラックすることです。変更をコミットしてから、親に更新して他の作業をコミットし、変更を不安定な匿名ブランチに残すhg commit -m 'temporary branch' && hg up $(hg log -r 'parents(.)' --template '{node}')
こともできます(ただし、手動で行う方が簡単な場合もあります)。ただし、そのチェンジセットをプッシュしないように注意する必要があります。