Git merge afecta el directorio de trabajo y el área de preparación
Soy nuevo porGit
y tratando de saber cómogit merge
El comando funciona. Así que probé un proyecto simple de git, por ejemplo:
Tengo dos ramas:master
yb
. Puedes ver el registro de git para ambos aquí (1,2,4
son archivos de muestra que se crean en ramas):
* cf3456b (HEAD, b) add and modify 4 in b
* 68b9086 edit 1 in branch b
| * 81e6490 (master) remove 1 from branch b1
| * e0a6844 modify 2 in branch b1
| * 06bad1d add2 in branch b1
|/
* c667d3b add 1 in branch master
Entoncesmaster
solo tiene un archivo:2
b
solo tiene dos archivos:1
,4
Ahora cuando trato de hacer:
git merge master
Vi este mensaje:
CONFLICTO (modificar / eliminar): 1 eliminado en maestro y modificado en HEAD. Versión HEAD de 1 izquierda en árbol. La fusión automática falló; arregle conflictos y luego confirme el resultado.
Eso es extraño para mí, pensé antes de eso:
merge
como uncheckout
intenta copiar contenido de la última confirmación demerge in
bifurcarse a la última confirmación demerge into
rama pero frente acheckout
, merge
intenta no cambiar ningún archivo enmerge into
Y finalmente si ambosmerge in
ymerge into
las ramas tienen el mismo archivo con un estado diferente, se produce un conflicto.Yo sé esogit
solo guardasnapshot
de archivos en lugar dedifferences
. Entonces, ¿cómo saber acerca de los cambios en las últimas confirmaciones de sucursales? (En el mensaje puedes ver1 deleted in master and modified in HEAD
cuales son las diferencias)Ahora, si mi pensamiento fuera cierto, no debería ocurrir ningún conflicto para el archivo1
. Entonces mi pensamiento no es cierto, pero ¿cómomerge
funciona de verdad?