プッシュ/プルしながら、コミットされていない変更をローカルのMercurialリポジトリに保持するにはどうすればよいですか?
質問
コミットしたくないファイルで作業している場合は、それらを保存するだけです。次に、サーバーにプッシュしたい他のファイルがありますが、他の誰かがリポジトリに変更を加え、それらをプルダウンすると、マージまたはリベースするように求められます。しかし、これらのオプションのいずれかにより、コミットしていないローカルの変更を失うため。
これを回避するために他の人は何をしていますか?シェルフエクステンションのドキュメントが頭に浮かぶのは難しいと思います。
注:Mercurial Eclipseを使用して、サーバーとの間でファイルをプッシュおよびプルしています。
これについての説明をいただければ幸いです。ありがとう!
例:
MercurialEclipseで自分のWebサイトに取り組んでいます。まだサーバーにコミットしたくない新しいフォルダーと新しいファイルがあります。また、いくつかの既存のファイルを変更しましたが、それらの変更をまだ公開したくありません。
その後、ウェブサイトの何かが壊れて修正する必要があります。ベースを変更したり、リポジトリの最新のヒントとマージしたりしないと修正できません。これにより、コミットされていない変更がすべて失われます。
編集した新しいフォルダとファイルをなくしたくない場合はどうすればよいですか?再クローン作成は面倒なようです。ファイルを新しいフォルダにコピーするのも面倒なようです。 ShelvingまたはMQが私が望むことを実行すると確信していますが、どうすればよいかまだわかりません。
解決
誰かがあなたが悪い回避策を見つけるのを手伝ってくれると確信していますが、最善の方法はあなたの目標を変えることです-ただコミットするだけです。コミットされていないコードは書かれていません。履歴に頻繁にコミットすることに積極的に従えない場合は、キューリポジトリでMercurialQueuesを使用してコミットします。次に、チェンジセットをポップし、プッシュ/プル/マージし、プッシュして戻すことができます。貴重な作業はすべてパッチキューにコミットされます。
他のヒント
あなたの例の状況を参照して、これが私がすることです(あなたが現在取り組んでいることをコミットするだけで、まだ公開したくないというRy4anの戦略に従います):
次のようなリポジトリで作業を開始するとします: ジェネラコディセタグプレ
つまり、2つのファイルと2つのコミット/変更セットがあります。いくつかの作業を行い、たとえば新しい機能を追加すると、作業コピーは次のようになります。 ジェネラコディセタグプレ
2つの新しいファイルと1つの変更されたファイルがあります。次に、リモートリポジトリで新しい変更が必要なバグを修正する必要があります。現在の作業をコミットしてスナップショットを作成し、リモートの変更をプルします(この順序は重要ではありません。デフォルトでは、プルは作業コピーの状態に影響しません): ジェネラコディセタグプレ
これにより、次のような履歴が発生する可能性があります: ジェネラコディセタグプレ
これで、リビジョン3を更新/チェックアウトして、バグの修正を開始できます。 ジェネラコディセタグプレ
よさそうです。中間の作業を公開せずに、修正をプッシュします。つまり、ライブにします。 ジェネラコディセタグプレ
これにより、バグ修正であるリビジョン4につながるすべての変更がプッシュされますが、ローカルリポジトリ内の他のブランチはプッシュされません。作業コピーの親リビジョン、つまりコミットしたばかりのリビジョンを参照する-r .
を使用することもできます。
最後に、機能の作業に戻って作業を続行できます: ジェネラコディセタグプレ
これらの手順はコマンドライン上にありますが、一般的な概念をEclipseMercurialプラグインの対応するクリックに適合させるのは難しいことではないと思います。
いくつかの補足事項:
- スナップショットコミットをブックマークすることをお勧めします。そのため、リビジョンIDや番号を操作する必要はありません。
- 後で1回のコミットで機能の作業を公開する場合は、完了したら折りたたみ拡張機能を使用します。