Ответ 1
Обратите внимание, что я не сделал никаких локальных изменения. Является
bzr pull
рекомендуемым способ?
Да, похоже, что bzr pull
- соответствующая команда для вашего использования. pull
берет ветку удаленного источника и копирует любые изменения из нее в локальную ветку назначения в более старой версии. (Я использую "remote" и "local" здесь для обозначения "источника" и "адресата". Любые две ветки будут делать, даже две локальные ветки.)
remote: A --> B --> C --> D
\ \
(branch) (pull)
\ \
local: \--> A (no change) \--> D
A pull
работает только в том случае, если две ветки не расходятся, т.е. если ревизия адресата является старой ревизией источника. push
- это просто противоположная операция: она копирует изменения в локальной ветки в удаленную ветвь с более старой версией.
remote: A (no change) --> C
\ /
(branch) (push)
\ /
local: \--> A --> B --> C
A merge
используется, когда вы хотите скопировать изменения в локальную ветвь, которая отклонилась от удаленной ветки.
remote: A --> B --> C --> D
\ \
(branch) (merge)
\ \
local: \--> A --> X --> Y --> Z
Здесь Z
включает все изменения из D
и изменения из Y
. A pull
в этом случае невозможно. Обратите внимание, что вы должны commit
после merge
, чтобы сохранить новую объединенную ревизию, тогда как pull автоматически приносит ветку в сохраненную точку ревизии.
A checkout
позволяет вам использовать bzr в режиме, аналогичном CVS/SVN: локальная ветвь будет "прикреплена" к удаленной ветке; commit
будет автоматически push
ed; если удаленная ветвь расходится, коммит будет терпеть неудачу; a update
является просто a merge
из "прикрепленной" удаленной ветки.