mercurialのベストプラクティス:branch vs. clone、そして部分的なマージ?
質問
...というわけで、メルカリで簡単なものには慣れてきたのですが(
add
,
commit
,
diff
) を作成し、.hgignore ファイルについて知り (やったー!) 、ブランチの作成と切り替えのコツを掴みました (
branch
,
update -C
).
しかし、2つの大きな疑問があります。
-
ブランチ "Branch1"にいて、ブランチ "Branch2"からの変更のすべてではなく一部を取り込みたい場合、どのようにすればよいでしょうか。特に、すべての変更がひとつのサブディレクトリにある場合です。(リポジトリ全体をクローンして、Beyond Compareのようなディレクトリマージツールを使って編集箇所を選択&選択すればいいのでしょうけど。しかし、1 つのファイルまたは 1 つのディレクトリの変更を分離する方法があるはずです)。
-
でのブランチ間の切り替えは
update -C
はとても簡単なので、なぜわざわざclone
. いくつかの理由しか思いつきませんが(下記参照)、私が見逃している他の理由があるのでしょうか?a. 2 つのバージョン/ブランチを同時に操作する必要がある場合 (たとえば、パフォーマンス メトリックの差分を取る)。
b. バックアップのため (
clone
を物理的に異なる場所にあるネットワークドライブに保存する)c. 上記で述べたような pick&choose マージを行うため。
どのように解決するのですか?
クローンを使っています。
- 短命のローカルブランチ
- 異なる開発マシンやサーバーへのクローン作成
前者の使い方は私にとってかなり稀です。主に、完全に放棄したくなるようなアイデアを試しているときです。マージしたい場合は、すべての変更をマージしたいと思います。この種のブランチは、主に異なる開発者のブランチを追跡して、互いに邪魔し合わないようにするためのものです。この最後の点を明確にしておきます。
- 私は自分の変更に取り組み続け、仲間の開発者の変更をプルし、彼らは私の変更をプルします。
- 私にとって都合が良いとき、私はこれらのブランチのひとつ (またはすべて) の変更をすべて私のブランチにマージします。
機能ブランチや長期間のブランチには、私は名前付きブランチを使用します。これは、マージせずにリポジトリ間でより快適に共有することができます。これはまた、選択的にマージしたい場合にも便利です。
基本的に、私はこのように見ています。
- 名前付きブランチは、アプリの異なるブランチまたはバージョンを開発するためのものです。
- クローンは、アプリの同じバージョンへの異なる貢献を管理するためのものです。
これは私の考えですが、実際にはポリシーの問題です。
関連
-
[解決済み】Gitマージで「すでに最新」と報告されるが、違いはある
-
[解決済み] Subversionリポジトリにおける「branch」、「tag」、「trunk」の意味とは?
-
[解決済み] masterブランチとorigin/masterが分岐してしまったので、分岐を解除する方法を教えてください。
-
[解決済み] Git で単一のブランチをクローンする方法を教えてください。
-
[解決済み] MercurialとGitの違いは何ですか?
-
[解決済み】Mercurialでフィーチャーブランチを正しくクローズするには?
-
[解決済み】TortoiseHGでブランチする方法
-
[解決済み】どのようなGitブランチングモデルが有効ですか?
-
[解決済み] 名前付きブランチとマルチリポジトリの比較
-
[解決済み] Mercurialで2つのプロジェクトを結合するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] なぜ git はデフォルトで fast-forward マージを行うのですか?
-
[解決済み】TortoiseHGでブランチする方法
-
[解決済み] [Solved] Mercurialで作業ディレクトリから未追跡のファイルをすべて削除するには?
-
[解決済み】TortoiseHgのパスワード保存について
-
[解決済み] すべて破棄して、最新リビジョンのクリーンコピーを取得しますか?
-
[解決済み] hgでタグ/ブランチに切り替えるにはどうしたらいいですか?
-
[解決済み] Mercurial undo 最後のコミット
-
[解決済み] Mercurial の "デフォルト" 親 URL を変更する
-
[解決済み] Mercurial がコミット時に使用するユーザー名はどのように設定するのですか?
-
[解決済み] Mercurialです。「作業ディレクトリにある未追跡のファイルと要求されたリビジョンにあるファイルが異なる"?