2010-06-11 13 views
12

¿Cuándo ocurren diferentes estados git status no fusionados, como added by us, added by them o both deleted?Git: ¿cómo crear diferentes estados no fusionados?

He intentado reproducir este último realizando una fusión donde un archivo ha sido eliminado en la rama actual y fusionada, pero no pude crear este estado.

+0

"both deleted"? ¿Se trata de la fusión del pulpo? ¿Cómo puede ser una fusión de dos padres habitual? –

+0

Eso es exactamente lo que quería saber. – mklhmnn

Respuesta

17

Puede obtener las tres cambiando el nombre de un archivo en cada rama.

git init 
touch foo 
git add foo 
git commit -m 'initial commit' 
git checkout -b tmp 
git mv foo X 
git commit -m 'rename to X' 
git checkout - 
git mv foo Y 
git commit -m 'rename to Y' 
git merge tmp 

Ahora tiene los tres estados.

 
$ git status 
# On branch master 
# Unmerged paths: 
# (use "git add/rm ..." as appropriate to mark resolution) 
# 
#  added by them:  X 
#  added by us:  Y 
#  both deleted:  foo 
# 
no changes added to commit (use "git add" and/or "git commit -a") 
+0

Buena demostración. Esto me ayudó a ver lo que significa vs nosotros. Si estoy en la rama A y me estoy fusionando en la rama B, la rama A es "nosotros" y la rama B es "ellos". –

+5

Además, tu ejemplo me enseñó 'git checkout -', que es como' cd -'; significa "verificar la rama en la que estaba antes de cambiar a esta". Para cualquier otra persona que encuentre esto, solo alterna entre dos ramas; no mantiene una historia. –

+2

A partir de Git 1.9.3, este ejemplo ya no parece funcionar: no se generan conflictos de fusión. – Pol

Cuestiones relacionadas