17

私は非常に単純なタスクのために bzr を使用しています: GNU Emacs の開発バージョンを取得します。最初の の後、bzr branchローカル バージョンを最新の状態に保ちたいと思います。bzr pullとのドキュメントを読みましたbzr mergeが、意味がわかりませんでした。bzr merge数日間試してみたところbzr merge、解決できない競合が発生することがよくありました。ローカルに変更を加えていないことに注意してください。bzr pullおすすめの方法は?

EDIT 1 ( Chris Conwayから盗んだ図を追加):

remote: A --> B --> C --> D
         \                 \
       (branch)           (merge)
           \                  \
local:      \--> A (no change) \--> why conflicts?

git と darcs は理解できますが、bzr についてはまったく知識がありません。git や darcs との類似性は大いに役立ちます。

EDIT 2 :のみupdateで動作するはずcheckoutですか? を実行しても、何もupdatebranchないようです。

4

3 に答える 3

35

ローカルに変更を加えていないことに注意してください。bzr pullおすすめの方法は?

はい、bzr pullあなたの使用に適したコマンドのようです。pullリモート ソース ブランチを取得し、そこからの変更を古いリビジョンのローカル宛先ブランチにコピーします。(ここでは、「リモート」と「ローカル」を「ソース」と「宛先」を意味するために使用します。2 つのブランチでも構いません。ローカル ブランチが 2 つでも構いません。)

remote: A --> B --> C --> D
         \                 \
       (branch)           (pull)
           \                  \
local:      \--> A (no change) \--> D

Apullは、2 つのブランチが分岐していない場合、つまり、宛先のリビジョンがソースの古いリビジョンである場合にのみ機能します。pushは正反対の操作です。ローカル ブランチの変更を古いリビジョンのリモート ブランチにコピーします。

remote: A      (no change)       --> C
         \                      /
       (branch)             (push)
           \                  /
local:      \--> A --> B --> C

Amergeは、リモート ブランチから分岐したローカル ブランチに変更をコピーする場合に使用されます。

remote: A --> B --> C --> D
         \                 \  
       (branch)           (merge) 
           \                  \ 
local:      \--> A --> X --> Y --> Z

ここにZは、 からのすべての変更Dと からの変更が含まれYます。この場合、 Apullはできません。commitマージされた新しいリビジョンを保存するには、後で必要があることに注意してくださいmerge。プルでは、​​保存されたリビジョン ポイントにブランチが自動的に移動します。

Acheckoutを使用すると、CVS/SVN に似たモードで bzr を使用できます。ローカル ブランチはリモート ブランチに「接続」されます。commits は自動的にpush編集されます。リモート ブランチが分岐した場合、コミットは失敗します。anは、「接続された」リモート ブランチからのupdate単なる aです。merge

于 2010-01-12T05:56:51.333 に答える
4

マージは、コピー (ローカルとリモート) ではなく、2 つの異なるブランチをマージするためのものです。プルを使用します。

于 2010-01-12T11:46:44.203 に答える
2

$bzr help pull

目的: このブランチを別のブランチのミラーにします。

--overwrite ブランチ間の違いを無視して無条件に上書きします。

ローカルの変更を置き換えて、ブランチをリモートのブランチと一致させたい場合は、pull --overwrite を使用します。これは、2 つのブランチが分岐している場合でも機能します。

あなたが使用することができます:

$bzr pull --overwrite

于 2011-11-21T03:37:00.707 に答える