<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>変更をマージする — Bazaar 2.6.0 documentation</title> <link rel="stylesheet" href="../_static/default.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../', VERSION: '2.6.0', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <script type="text/javascript" src="../_static/translations.js"></script> <link rel="shortcut icon" href="../_static/bzr.ico"/> <link rel="top" title="Bazaar 2.6.0 documentation" href="../index.html" /> <link rel="up" title="Bazaarユーザーガイド" href="index.html" /> <link rel="next" title="衝突の解消" href="resolving_conflicts.html" /> <link rel="prev" title="プロジェクトをブランチする" href="branching_a_project.html" /> </head> <body> <div class="related"> <h3>ナビゲーション</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="resolving_conflicts.html" title="衝突の解消" accesskey="N">次へ</a></li> <li class="right" > <a href="branching_a_project.html" title="プロジェクトをブランチする" accesskey="P">前へ</a> |</li> <li><a href="../index.html">目次 (2.6.0)</a> »</li> <li><a href="index.html" accesskey="U">Bazaarユーザーガイド</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="id1"> <h1>変更をマージする<a class="headerlink" href="#id1" title="このヘッドラインへのパーマリンク">¶</a></h1> <div class="section" id="id2"> <h2>並行開発<a class="headerlink" href="#id2" title="このヘッドラインへのパーマリンク">¶</a></h2> <p>誰かがプロジェクトの独自ブランチを持ったら、 並行して変更を行い、オリジナルのブランチを続ける開発にコミットできます。 まもなくですが、開発の独立したラインを結合することが必要にあります。 このプロセスは <em>マージ (merging)</em> として知られます。</p> </div> <div class="section" id="merge"> <h2>mergeコマンド<a class="headerlink" href="#merge" title="このヘッドラインへのパーマリンク">¶</a></h2> <p>別のブランチから変更を受け入れるためには、 <tt class="docutils literal"><span class="pre">merge</span></tt> コマンドを使います。 構文は次のとおりです:</p> <div class="highlight-python"><pre>bzr merge [URL]</pre> </div> <p>URLが渡されない場合、オリジナルのものから由来する初期のブランチがデフォルトとして使われます。 たとえば、BillがMaryの作業内容からブランチを作る場合、 下記のようにコマンドを入力すれば彼女の次の変更をマージできます:</p> <div class="highlight-python"><pre>bzr merge</pre> </div> <p>一方で、MaryはBillのブランチで行われた作業内容を彼女のブランチにマージしたいかもしれません。 この場合、彼女は最初に明示的にURLを渡す必要があります:</p> <div class="highlight-python"><pre>bzr merge bzr+ssh://mary@bill-laptop/cool-repo/cool-trunk</pre> </div> <p>マージブランチがまだ設定されていなければ、これによってデフォルトのマージブランチが設定されます。 設定した後でデフォルトを変更するためには、 <tt class="docutils literal"><span class="pre">--remember</span></tt> オプションを使います。</p> </div> <div class="section" id="id3"> <h2>マージの動作方法は?<a class="headerlink" href="#id3" title="このヘッドラインへのパーマリンク">¶</a></h2> <p>マージのためのいくつかのアルゴリズムがあります。 Bazaarのデフォルトのアルゴリズムは次のように動作する <em>3方向マージ (3-way merging)</em> の一種です。 Aが祖先でBとCの2つがブランチであると仮定すると、次のテーブルは使われるルールを提示します。</p> <blockquote> <div><table border="1" class="docutils"> <colgroup> <col width="9%" /> <col width="9%" /> <col width="9%" /> <col width="19%" /> <col width="53%" /> </colgroup> <thead valign="bottom"> <tr class="row-odd"><th class="head">A</th> <th class="head">B</th> <th class="head">C</th> <th class="head">結果</th> <th class="head">コメント</th> </tr> </thead> <tbody valign="top"> <tr class="row-even"><td>x</td> <td>x</td> <td>x</td> <td>x</td> <td>unchanged</td> </tr> <tr class="row-odd"><td>x</td> <td>x</td> <td>y</td> <td>y</td> <td>line from C</td> </tr> <tr class="row-even"><td>x</td> <td>y</td> <td>x</td> <td>y</td> <td>line from B</td> </tr> <tr class="row-odd"><td>x</td> <td>y</td> <td>z</td> <td>?</td> <td>conflict</td> </tr> </tbody> </table> </div></blockquote> <p>マージの中には人間の手助けによってのみ完了するものがあることに留意してください。 これらを解決する方法の詳細は <a class="reference external" href="resolving_conflicts.html">衝突を解消する</a> を参照してください。</p> </div> <div class="section" id="id5"> <h2>マージを記録する<a class="headerlink" href="#id5" title="このヘッドラインへのパーマリンク">¶</a></h2> <p>衝突が解決した後で、マージをコミットする必要があります。例です:</p> <div class="highlight-python"><pre>bzr commit -m "Merged Mary's changes"</pre> </div> <p>衝突が無くても、明確なコミットがまだ必要です。 他のツールとは異なり、これはBazaarの機能と考えられています。 クリーンなマージは必ずしもよいマージとは限らないので、個別の明確なステップとしてコミットすることで、すべてがよい状態にあることを検証するための最初のテストスィートを実行できます。</p> <p>問題が見つかったら、マージをコミットする前にそれらを訂正するもしくは <tt class="docutils literal"><span class="pre">revert</span></tt> を使用してマージを廃棄すべきです。</p> </div> <div class="section" id="id6"> <h2>マージの追跡<a class="headerlink" href="#id6" title="このヘッドラインへのパーマリンク">¶</a></h2> <p>Bazaarの機能の中で最も重要な機能の1つは、分散型で高品質の<em>マージトラッキング</em> です。 言い換えると、Bazaarは何がすでにマージされていることを覚えており、マージのための最良の祖先を賢く選ぶためにその情報を使い、衝突の回数と規模を最小にします。</p> <p>あなたが他の多くのVCSツールの難民であるなら、 <em>何が何でもマージは避けさせてください</em> という習慣から抜け出すのは本当に難しいかもしれません。 Bazaarによっていつでも安全に他の人とのマージを行うことができます。 peer-to-peerの方法でうまくゆくときに、高い品質を保つために、 “統合のたまり場”として集中型のブランチを使うことも避けられます。 コラボレーションしている変更を本当に広く共有する準備ができたら、変更を中心のブランチにマージしてコミットする機会です。</p> <p>このようにマージ機能がうまくゆけば開発者の共同作業の方法を変えることができます。</p> </div> </div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <h3><a href="../index.html">目次</a></h3> <ul> <li><a class="reference internal" href="#">変更をマージする</a><ul> <li><a class="reference internal" href="#id2">並行開発</a></li> <li><a class="reference internal" href="#merge">mergeコマンド</a></li> <li><a class="reference internal" href="#id3">マージの動作方法は?</a></li> <li><a class="reference internal" href="#id5">マージを記録する</a></li> <li><a class="reference internal" href="#id6">マージの追跡</a></li> </ul> </li> </ul> <h4>前のトピックへ</h4> <p class="topless"><a href="branching_a_project.html" title="前の章へ">プロジェクトをブランチする</a></p> <h4>次のトピックへ</h4> <p class="topless"><a href="resolving_conflicts.html" title="次の章へ">衝突の解消</a></p> <h3>このページ</h3> <ul class="this-page-menu"> <li><a href="../_sources/user-guide/merging_changes.txt" rel="nofollow">ソースコードを表示</a></li> </ul> <div id="searchbox" style="display: none"> <h3>クイック検索</h3> <form class="search" action="../search.html" method="get"> <input type="text" name="q" /> <input type="submit" value="検索" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> <p class="searchtip" style="font-size: 90%"> モジュール、クラス、または関数名を入力してください </p> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="clearer"></div> </div> <div class="related"> <h3>ナビゲーション</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="resolving_conflicts.html" title="衝突の解消" >次へ</a></li> <li class="right" > <a href="branching_a_project.html" title="プロジェクトをブランチする" >前へ</a> |</li> <li><a href="../index.html">目次 (2.6.0)</a> »</li> <li><a href="index.html" >Bazaarユーザーガイド</a> »</li> </ul> </div> <div class="footer"> © Copyright 2009-2011 Canonical Ltd. このドキュメントは <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3 で生成しました。 </div> </body> </html>