Menú

Juan Luis García Borrego

Programación, PHP, Symfony2, Silex y más cosillas.

Apuntes Git

Algunos comandos típicos y no tan típicos que usamos mientras trabajamos usando Git.

Git apuntes

Inicialización

Inicializar un proyecto con git. Al iniciar git nos crea un directorio oculto .git.
git init
Para ver los archivos ocultos en finder (MAC OS) podemos hacer uso del siguiente comando (Para que funcione tenemos que cerrar y volver abrir nuestro finder):
defaults write com.apple.finder AppleShowAllFiles TRUE

Añadir archivos al área de preparación

Añadir un cambio del directorio de trabajo al área de preparación
git add nombrearchivo
git add . #Todos los archivos

Confirmación

Añadimos un commit a nuestro repositorio
git commit nombrearchivo
De vez en cuando al realizar un commit nos equivocamos al escribir el mensaje.
git commit -m "Este es un mensaje fallido"
Para modificar el mensaje utilizamos:
git commit --amend -m "Este es el mensaje correcto"
–ammed funciona tambien para las situaciones que hemos hecho un commit, pero se nos olvidó añadir algo. Para eso:
git commit --amend --no-edit #Hace el cambio y [deja el mismo mensaje]  o si lo deseamos podemos añadir otro mensaje diferente.
git commit --amend -m "Este es el mensaje correcto nuevo"

Ignorar archivos

Podemos crear un archivo .gitignore y escribir los archivos/directorios que no queremos que nos añada git para que no se incluyan en el área de trabajo.

También podemos hacer uso del archivo que está en la carpeta oculta .git
nano exclude #.git/info/

Estado y commits actuales

Mostramos el estado o los cambios ocurridos que se encuentra el directorio de trabajo y el área de preparación.
git status
Mostramos el estado o los cambios ocurridos que se encuentra el directorio de trabajo y el área de preparación.
git log

Guardar todos nuestros commits en un archivo de texto:
git log > miscommits.txt
Ver los últimos n commits:
git log -n 4 #ultimos 4 commits
Ver los archivos que han cambiado en los commits
git log --stat

Comparaciones

Para comparar diferencias entre archivos que se encuentran en el working directory con los que tenemos en el staging index o repository
git diff

Mostrar nuestras ramas graficamente en terminal

Podemos ver un en nuestra terminal de manera gráfica un esquema de todas nuestras ramas:
git log --oneline --graph --all

Ramas

Lista todas las ramas del repositorio:
git branch
Lista todas las ramas + las ocultas del repositorio:
git branch -a
Crear una nueva rama:
git branch nombreNuevaRama
Nos movemos a la rama indicada:
git checkout nombreRama
Crear la rama y posicionarnos automáticamente [2 pasos anteriores en 1]
git checkout -b nombreRama
Fusiona la rama nombreRama con la rama en la que estamos posicionados actualmente en una sola (Fash-Forward: Si la fusión no tiene conflictos). [⌨o, Escribo mensaje, 😡 [guarda y sale]]
git merge nombreRama
Ver las ramas que se han fusionado
git branch --merge
Elimina una rama
git branch -d nombreRama
Fusionar con merge sin fast-forward
git merge nombreRama --no-stat

Repositorios remotos

Copia un repositorio remoto en nuestro equipo
git clone PATH-Repositorio
Copia an rama de nuestro repositorio remoto en nuestro equipo
git clone -b nombreRama PATH-Repositorio
Muestra los repositorios que tenemos
git remote
Muestra las direcciones del FETCH y del PUSH
git remote -v 
FETCH: Recupera información del repositorio remoto al local [No une los cambios a nuestro repositorio] [rama “oculta” llamada origin/master]
git remote -v 
PUSH: Subimos cambios a nuestro repositorio
git push origin nombreRama
Eliminar rama
git push origin :nombreRama
Muestra las direcciones del FETCH y del PUSH
git remote -v 
PULL: Actualiza nuestro repositorio remoto al local con sus cambios.
git pull origin nombreRama
Actualiza nuestro repositorio remoto al local con TODAS SUS RAMAS.
git branch -aremotes/origin/HEAD -> origin/masterremotes/origin/devremotes/origin/masterremotes/origin/productremotes/origin/user
Luego repetimos el siguiente comando con todos las ramas del repositorio que queramos tenerlas en local
git checkout -b dev origin/dev

Crear alias

Para comandos muy largos, dificiles de recordar u otros motivos, podemos utilizar alias, es decir, sustituiremos el comando por alguna palabra. Particularmente no me gusta hacer uso de alias debido a que tiendes a olvidar el comando original.
git config --global alias.nombreQueDeseasLlamarlo 'comando git a sustituir' #Ejemplo: git config --global alias.grafico 'log --oneline --graph --all'

Tags

Utilizamos las etiquetas para identificar los avances concretos de nuestro proyecto. Ej: Para una nueva versión.

Muestra todas las etiquetas
git tag
Crear una etiqueta [en el último commit]
git tag nombreTag
Ver información del tag
git show nombreTag
Compartir el tag en el repositorio remoto
git push origin nombreRama --tags

Eliminar cambios

Si hemos tocado algún archivo y queremos dejarlo tal como estaba
git checkout -- nombrearchivo
Si añadimos un archivo al staging index [ git add index.html] y queremos volver enviarlo al working directory:
git reset HEAD index.html
Eliminar commits para siempre⚠️
git reset --hard 95ee28b
Elimina los commits de nuestro repositorio y deja los archivos del commit en el stagin index para luego volver hacer el commit
git reset --soft 95ee28b
Elimina los commits de nuestro repositorio y deja los archivos del commit en el working directory para luego volver hacer git add y git commit -m "mensaje"
git reset --mixed 95ee28b