0

Mercurialを使用しているプロジェクトがあり、1人で作業していると、同じ状況に何度も直面することがよくあります。作業中に、現在の作業を終了する前に、他の変更を修正してコミットする必要があることに気付きます。 。そこで、「匿名ブランチ」を作成してみました

hg update --check PREVIOUS_REVISION

しかし、残念ながら、コミットされていない変更では機能しません(そして、私は本当に未完成の作業をコミットしたくありません)。したがって、毎回、ソースを含むディレクトリをコピーし、以前のリビジョンに戻し、修正し、コミットし、作業コピーに戻り、変更をプルして作業を続行します...しかし、時間がかかりすぎるので、もっと良いかもしれませんそれを行う方法とソースの1つのコピーだけで?ありがとうございました。

PSおそらく、それは他の何かに取り組んでいる間にコミットされていない変更の束を脇に置く方法と同じ質問ですが、私の考えは「未完成の作業をデフォルトのブランチに「そのまま」の状態のままにしてから作業することは可能ですか?後で、外部パッチをロードせずに?」(とにかく、重複している場合は、遠慮なく閉じてください)

4

3 に答える 3

2

「間欠作業」の課題を解決する3つの方法

  • shelve 拡張機能の使用: 現在のすべての変更を保存しhg shelve --all、クリーンな WC で必要な独立した変更を行い、コミットし、ステップ 1 で保存された作業の中間結果を復元します。hg unshelve
  • 匿名ブランチの使用: WC を「そのまま」hg up <REV>コミットし、前のコミットに変更し、「前にある必要がある」変更を行い、コミットし、古いヘッドに戻り、ヘッドをマージし、作業を続行します。
  • MQ 拡張機能の使用: MQ チュートリアルを出発点として使用します。第 1 章: 「せっかちな人のための MQ」(qrefresh と qfinish の間は、この場合は純粋なコミットになります)

私は MQ を好みます (そして常に別のタスクに使用します)

添加:

「クリーン ヒストリー」のファンと崇拝者のために、匿名ブランチ ワークフローの 1 つの可能な変更 (マージの回避)

  • hg commit -m "Unfinished work"(rev M)
  • hg up -r "tip^1"
  • ...
  • hg commit -m "Base changes"(rev N)
  • hg rebase -r M -d N(履歴を線形化)
  • hg up
  • ...
  • hg commit --amend -m "Full dependent change"

PS:リバースされたチェンジセットのセット、つまりa = something(data)CSET とfunction something (int subject) {...}CSET+1 の書き込みに悪い点は見当たりません。

于 2013-01-13T23:25:56.607 に答える
0

「必要な」変更がコードの異なるハンクである場合は、そうではなくhg record、「必要な」ハンクを選択して他のものより先にコミットします。

于 2013-01-25T05:36:45.437 に答える
0

コミットが完了していないことは悪いことではありません。ハードドライブのクラッシュなどに耐えるのに役立ちます。「これは進行中です」のようなコミットメッセージで進行中のコードをコミットし、他に必要なことは何でもしてから、作業を続けてみませんか?

古いコミットは、定義上、未完成です。それが、あなたが彼らの後にもっと多くのことをコミットした理由です。古いリポジトリの状態について心配する必要はありません。

もちろん、フィーチャー ブランチで作業している場合は修正する必要があります。そうすれば、コードを .NET 以外のブランチにプッシュできますdefault

于 2013-01-13T19:28:24.960 に答える