Guía Emacs - Versionando Proyectos con MAGIT
Table of Contents
1. Traer cambios de un branch al master
Si hicimos cambios y los guardamos en branches y queremos traerlos al branch master (suele ser la última versión, la que irá a producción)
- Cambiamos al branch master
Presionamos
SPC g s
para acceder al menú de Magit, luegob b
y elegimos el master branch (no es lo mismo que origin/master) - Hacemos (merge) con el branch que queremos (Ej. hotfix branch o testing branch)
Presionamos
SPC g s
luegom m
y elegimos el branch para traer los cambios al master branch - Hacemos (push) del (merge)
Presionamos con
SPC g s
luegop p
2. Diferencia entre master y origin/master
2.1. Procedimiento
Del ejemplo anterior quizás puede aparecer esto, y pueden surgir dudas.
Cuando se dice master se refiere al local branch (el entorno local), mientras que origin/master hace referencia al remote branch (el que esta en el servidor github)
Observación: Lo mismo aplica con los branches
Por ejemplo origin/hotfix y hotfix, origin/testing y testing, etc..
2.2. Referencias
2.2.1. Referencias Web Extraoficiales
2.2.2. Referencias Issues
3. Guardar cambios de forma temporal (Stash)
3.1. Procedimiento
Si hicimos cambios en archivos de nuestro ordenador (se dice que es local, y se guarda en unstage), para guardar esos cambios en otro lugar de "forma temporal" (se guarda en stash) antes de hacer un pull
- Antes de hacer (commit) de los cambios, separamos el código con (stash)
Los cambios que se hicimos en los archivos del entorno local estan en unstage sino hicimos commit,
seleccionamos ese bloque de código y presionamos
zz RET
(no le asignamos nombre porque es opcional). Cuando volvamos al archivo, no apareceran lo cambios, quedaron separados en stash - Creamos un branch para las nuevas características que nos pidieron de improviso Al crear el branch nos aseguramos de separar las nuevas características del commit que haríamos con las funcionalidades que estabamos desarrollando.
- Volvemos a traer el código que reservamos con (stash)
Seleccionamos los cambios que teniamos stashes y presionamos
a
(hace referencia a add/agregar) y volverá a aparecer esos cambios en el archivo, por tanto estará en unstage donde quedan las modificaciones que aún no se hizo commit (si lo hicieramos quedarían en stage)
3.2. Referencias Web Extraoficiales
4. Listar historial de commits de un archivo
4.1. Procedimiento
Corremos el comando (blame) presionando SPC g b
y nos muestra un log de los cambios
Si presionamos b
va a los commits anteriores y con q
los mas recientes
4.2. Referencias Web Oficiales
5. Atajos
Comando | Descripción |
---|---|
SPC-g s | Muestra el estado de cambios |
Tab | Expande/Oculta el contenido del bloque donde esta el cursor |
s | Agrega archivos nuevos/Guarda los cambios locales unstage en stage |
u | Pasa los cambios de stage al entorno local (unstage) |
x | Descarta los cambios |
c c | Crear commit (luego de escribir el motivo, se debe finalizar) |
, , | Finalizar commit |
b c | Crear un nuevo branch, y hacer checkout de ese branch |
b b | Cambiar de branch (Ej. Ir del master al develop o testing) |
t t | Crear un tag |
p p | Hacer push |
p e | Hacer push en un repositorio externo |
F p | Hacer pull |
6. Posibles Situaciones
6.1. Hacer cambios, subirlos y actualizar
- Guardamos los cambios de forma local (unstage)
Modificamos los archivos, guardamos con con
SPC f s
óM-x s
- Guardo los cambios en Stage
Presionamos
SPC g s
seleccionamos los cambios que queremos guardar en stage conshift
óv
y las flechas Down/Up, y presionamoss
- Hacemos (commit) (aplicamos los cambios)
Presionamos
SPC g s
seguido dec c
- Creamos un (branch) del (commit)
Presionamos
SPC g s
seguido deb c
luegoRET
y escribimos el nombre del nuevo (branch) donde se guardaran los cambios del (commit) - Hacemos (push)
Presionamos
SPC g s
seguido dep p
- Hacemos (pull) del (branch) nuevo al master branch
Presionamos
SPC g s
seguido deb b
elegimos el master branch y terminamos conF p
Observación:
Si ya estamos en el menú de magit no es necesario presionar el atajo SPC g s
del mode evil de spacemacs
6.2. Resolver conflicto, diferencia entre archivos
Si en el paso 5 del ejemplo anterior hubiesemos tenido un conflicto, porque alguien modificó el mismo archivo en las mismas lineas.
- Hacemos (pull) Para traer el archivo con el que tenemos conflicto, ver las diferencias entre este archivo y el archivo local para resolverlo.
Mostramos el conflicto Presionamos
SPC g s
y luegoe
, apareciendo tres buffers identificados en la parte inferior izquierda con las letras A, B, C.Nota: A y B son los archivos en conflicto, y C el archivo final, el que tendra los conflictos resuelto.
- Comparamos las diferencias con
n
yp
Si presionamosp
on
se resaltará los cambios, dondep
hace de previous diff yn
de next diff Corregimos el conflicto Podemos elegir entre elegir que archivo (buffer A o B) sera el correcto como solucion e ira al buffer C, presionando la letra minuscula del buffer que identifica al archivo.
Nota: La otra manera, seria si corregimos las diferencias de forma manual escribiendo en el buffer C
- Guardamos los cambios y salimos
Presionamos
q
seguido dey
dos veces para confirmar los cambios realizados. - Verificamos que se hizo el (merge)
Presionamos
SPC g s
y debe decir "Merging origin/nombre del branch" - Hacemos (commit) del (merge) y (push)
Comiteamos con
c c
y, ,
y por último pusheamos conP p