GIT PARA FRONTENDS
flujo de trabajo
añadir cambios al HEAD
Área de staging = HEAD = índice
Si no tenemos cambios desde el último commit ni nuevos archivos, se dice que el directorio de trabajo está vacío
$ git status # On branch master nothing to commit (working directory clean)
añadir cambios al HEADLos archivos nuevos siempre deberán ser añadidos explícitamente a la lista de cambios que se quieren commitear
git add “nombre_del_archivo_nuevo”git commit
En cambio, si ya estaban añadidos con anterioridad al HEAD podemos forzar la subida con –a
git commit –a
añadir cambios al HEAD
Para añadir un comentario a tu commit podemos usar la opción –m
git commit -m “Commit message”
Si hemos nos hemos equivocado al escribir el comentario, podemos modificarlo de forma sencilla
git commit --amend -m “Correct message“
subir cambios al repositorio
Tus cambios están ahora en el HEAD de tu copia local. Para enviar estos cambios a tu repositorio remoto ejecuta
git push origin master
Propagar cambios a otras ramas:
cherry-pick
Para hacer un cherry-pick nuestro índice (HEAD) tiene que estar limpio. Nos movemos a la rama destino y ejecutamos
git cherry-pick “id del commit”git push origin master
Opciones:-e (editar el mensaje del commit)-x (añade la línea “cherry picked from commit ...”)
trabajar con ramasCrea una nueva rama llamada "feature_x" y cámbiate a ella, vuelve a la rama master y borra la rama recién creada
git checkout -b feature_xgit checkout mastergit branch -d feature_x
Una rama nueva no estará disponible para los demás a menos que hagas push
git push origin <branch>
actualizar el HEAD
Para actualizar tu repositorio local al commit más nuevo, ejecuta
git pull
Es el equivalente a hacer
git fetch git merge FETCH_HEAD
Opciones--rebase[=false|true|preserve]
fusionar ramas
Para fusionar otra rama a tu rama activa (por ejemplo master), utiliza
git merge <branch>
En caso de haber conflictos han de resolverse a mano y marcarlos como fusionados, opcionalmente se pueden revisar antes
git diff <source_branch> <target_branch>git add <filename>
fusionar ramas
Opciones--no-commit (en caso de fallo no hace el merge)-m <msg>
Resolver conflictos<<<<<<< yours:sample.txt Conflict resolution is hard; let's go shopping. ======= Git makes conflict resolution easy. >>>>>>> theirs:sample.txt
fusionar ramas
Herramientas
git mergetoolgit diffgit log --merge -p <path> (muestra las dif del HEAD seguidas de las de la branch remota)git status
Configurar editor de fusionado
$ git config --global merge.tool opendiff
deshacer cambios
Para eliminar un archivo de la lista de commit
git reset HEAD <file>
Para revertir definitivamente unos cambios
git checkout -- <file>
Deshacer un commit
git revert [hash del commit]
Almacenar cambiosstash
git stash save <message>git list (para saber el nombre de cada stash)git show <stash>git stash pop <stash> (aplica los cambios y borra el stash)git stash appy <stash> (aplica los cambios sin borrar el stash)git stash clear (borra todos los stash)git stash drop <stash> (borra uno determinado)
eliminar y renombrar archivos
Para borrar un archivo, primero hay que borrarlo de la lista de archivos del HEAD y después del entorno de trabajo
$ git rm <nomre_archivo>rm ‘nombre_archivo‘
Podemos utilizar el comando mv para renombrar un archivo
$ git mv file_from file_to
etiquetasCrear una etiqueta
$ git tag -a v1.4 -m 'my version 1.4‘
Listar etiquetas existentes y ver info
$ git tag$ git show v1.4
Compartir etiquetas
$ git push origin v1.5
configuración
Usuariogit config --global user.name “nombre”git config --global user.email “email”
Coloresgit config --global color.status auto git config --global color.branch green
Shortcutsgit config --global alias.st status