version-control - software - mercurial sistema de control de versiones
bzr pull vs bzr merge (3)
Tenga en cuenta que no hice ningún cambio local. ¿Es
bzr pull
la forma recomendada?
Sí, parece que bzr pull
es el comando apropiado para su uso. pull
toma una rama de origen remota y copia los cambios realizados en una rama de destino local en una revisión anterior. (Uso "remoto" y "local" aquí para significar "origen" y "destino". Cualquiera de las dos ramas funcionará, incluso las dos sucursales locales).
remote: A --> B --> C --> D
/ /
(branch) (pull)
/ /
local: /--> A (no change) /--> D
Una pull
solo funciona si las dos ramas no se han desviado, es decir, si la revisión del destino es una revisión antigua del origen. push
es la operación opuesta: copia los cambios en una sucursal local a una sucursal remota en una revisión anterior.
remote: A (no change) --> C
/ /
(branch) (push)
/ /
local: /--> A --> B --> C
Una merge
se usa cuando desea copiar cambios a una rama local que se ha desviado de la rama remota.
remote: A --> B --> C --> D
/ /
(branch) (merge)
/ /
local: /--> A --> X --> Y --> Z
Aquí, Z
incluye todos los cambios desde D
y los cambios desde Y
Un pull
no es posible en este caso. Tenga en cuenta que debe commit
después de una merge
para guardar la nueva revisión combinada, mientras que una extracción lleva automáticamente la rama a un punto de revisión guardado.
Una checkout
permite usar bzr en un modo similar al CVS / SVN: la sucursal local estará "conectada" a una sucursal remota; commit
s será push
automáticamente ed; si la rama remota se ha desviado, la confirmación fallará; una update
es solo una merge
de la rama remota "adjunta".
Estoy usando bzr para una tarea muy simple: obtener la versión de desarrollo de GNU Emacs. Después de la bzr branch
inicial de bzr branch
, me gustaría mantener mi versión local actualizada. Leí acerca de la documentación sobre bzr pull
y bzr merge
, pero no tuve sentido. Intenté bzr merge
durante unos días y descubrí que bzr merge
menudo daba como resultado conflictos irresolubles. Tenga en cuenta que no hice ningún cambio local. ¿Es bzr pull
la forma recomendada?
EDITAR 1 (agregado un diagrama robado de Chris Conway ):
remote: A --> B --> C --> D
/ /
(branch) (merge)
/ /
local: /--> A (no change) /--> why conflicts?
Entiendo git y darcs, pero no tengo conocimiento de bzr. Las analogías con git o darcs ayudarán mucho.
EDITAR 2 : ¿Se supone que la update
funciona solo con el checkout
y checkout
? Hacer una update
en una branch
no parece hacer nada.
$ bzr help pull
Propósito: Convertir esta rama en un espejo de otra rama.
- sobrescribir Ignora las diferencias entre las ramas y sobrescribe incondicionalmente.
Si desea reemplazar sus cambios locales y solo desea que su rama coincida con la remota, use pull --overwrite. Esto funcionará incluso si las dos ramas han divergido.
para que puedas usar:
$ bzr pull --overwrite
Fusionar es para fusionar dos ramas diferentes, no copias (locales y remotas). Utilice tirar