74

...だから私はMercurial(、、)の簡単なものにadd慣れ、.hgignoreファイル(yay!)について知り、ブランチ(、commit)を作成して切り替えるコツをつかんだ。diffbranchupdate -C

しかし、私には2つの大きな質問があります。

  1. ブランチ「Branch1」にいて、ブランチ「Branch2」からの変更のすべてではなく一部を取得したい場合、どうすればよいですか?特に、すべての変更が1つのサブディレクトリにある場合。(リポジトリ全体のクローンを作成し、Beyond Compareなどのディレクトリマージツールを使用して編集内容を選択して選択できると思います。ただし、1つのファイルまたは1つのディレクトリの変更を分離する方法があるはずです。)

  2. でブランチを切り替えるのupdate -Cはとても簡単なようですが、なぜわざわざを使用するのだろうかと思いcloneます。私はいくつかの理由しか考えられません(以下を参照)-私が見逃している他の理由はありますか?

    a。2つのバージョン/ブランチを同時に操作する必要がある場合(たとえば、パフォーマンスメトリック差分を実行する)

    b。バックアップ用(clone物理的に異なる場所にあるネットワークドライブへのリポジトリ)

    c。上で述べたように、pick&chooseマージを実行します。

4

3 に答える 3

50

次の目的でクローンを使用します。

  • 存続期間の短いローカル ブランチ
  • 異なる開発マシンおよびサーバーへのクローン作成

前者の使用は、私にとってはかなりまれです。主に、完全に放棄したいアイデアを試しているときです。マージしたい場合は、すべての変更をマージします。この種の分岐は主に、さまざまな開発者の分岐を追跡して、互いに邪魔しないようにするためのものです。この最後の点を明確にするために:

  • 私は自分の変更に取り組み続け、仲間の開発者の変更をプルし、彼らは私の変更をプルします。
  • 都合がよければ、これらのブランチの 1 つ (またはすべて) からのすべての変更を私のものにマージします。

フィーチャー ブランチ、または存続期間の長いブランチについては、マージせずにリポジトリ間でより快適に共有できる名前付きブランチを使用します。また、選択的にマージしたい場合にも「気分」が良くなります。

基本的に私はそれを次のように見ています:

  • 名前付きブランチは、アプリのさまざまなブランチまたはバージョンを開発するためのものです
  • クローンは、同じバージョンのアプリへのさまざまな貢献を管理するためのものです。

これは私の見解ですが、実際にはポリシーの問題です。

于 2009-01-15T23:09:47.113 に答える
29

質問1については、「変更」の意味をもう少し明確にする必要があります。これらのどれを意味しますか:

  1. 「別のブランチにあるチェンジセットのすべてではありませんが、一部をこのブランチにプルしたいと思います。」
  2. 「別のブランチにあるファイルのすべてではありませんが、一部の最新バージョンをこのファイルにプルしたいと思います。」

項目1を意味する場合は、移植拡張機能、具体的にはいくつかのチェンジセットをチェリーピッキングするというアイデアを検討する必要があります。

項目2を意味する場合は、次のようにします。

  • 変更をプルするブランチに更新します。
  • hg revert -r <branch you want to merge> --include <files to update>これらのファイルの内容を他のブランチと同じように変更するために使用します。
  • hg commitこれらの変更を新しいチェンジセットとしてブランチにコミットするために使用します。

質問2については、自分自身を分岐するためにリポジトリクローンを使用することはないので、わかりません。名前付きブランチまたは匿名ブランチ(ブックマークを使用する場合もあります)を使用します。

于 2009-07-25T21:20:40.500 に答える
3

調査する別のオプションがあります: Mercurial キューです。

アイデアは、現在の作業ディレクトリの上にパッチのスタック (コミットなし、「実際の」パッチ) を配置することです。次に、適用されたパッチを追加または削除したり、追加したり削除したり、別のパッチを追加したりできます。おそらくブランチでやりたいと思うように、1 つのパッチまたはそれらのサブセットが新しい「機能」になります。あとは、通常通りパッチを当てることができます(変更なので)。他の誰かと一緒に作業する場合、ブランチはおそらくより便利です... ?

于 2009-01-15T23:07:04.293 に答える