Inicializa el repositorio en git
esto etiqueta el comando a un alias predefinida
Log
git config --global alias.lg "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"
Status
git config --global alias.s status --short
git config --global alias.s "status --short"
Alternativa útil de status
git config --global alias.s status -sb
Añade al repositorio un archivo o varios archivos
Añade al repositorio todo lo que hay en la carpeta
Añade al repositorio solo el archivo en cuestion
Envia los ultimos cambios agregados por lo general va con un mensaje
git commit -m "Nombre del commit o mensaje "
git commit -am "mensaje" // solo funciona con archivos que previamente se le haya realizado un git add .
Para corregir un commit se puede utilizar el siguiente código
git commit --amend -m "Mensaje"
Me permite saber que archivos fueron o no agregados al repositorio
mostrar todos los cambios que se ha hecho incluyendo las lineas que se han cambiado
sirve para ver los cambios que se ha hecho a ese archivo
para ver toda la historia de todos los commits sirve si queremos regresar a un punto en particular
sirve para ver los commits que se ha hecho a ese archivo
Muestra configuraciones de git también podemos usar –list para mostrar la configuración por defecto de nuestro git y si añadimos --show-origin inhales nos muestra las configuraciones guardadas y su ubicación.
Cambia de manera global el nombre del usuario, seguidamente ponemos entre comillas nuestro nombre.
Cambia de manera global el email del usuario, seguidamente ponemos entre comillas nuestro nombre.
Este comando nos ayuda a eliminar archivos de Git sin eliminar su historial del sistema de versiones. Esto quiere decir que si necesitamos recuperar el archivo solo debemos “viajar en el tiempo” y recuperar el último commit antes de borrar el archivo en cuestión.
Recuerda que git rm
no puede usarse así nomás. Debemos usar uno de los flags para indicarle a Git cómo eliminar los archivos que ya no necesitamos en la última versión del proyecto:
git rm --cached
: Elimina los archivos de nuestro repositorio local y del área de staging, pero los mantiene en nuestro disco duro. Básicamente le dice a Git que deje de trackear el historial de cambios de estos archivos, por lo que pasaran a un estado untracked
.git rm --force
: Elimina los archivos de Git y del disco duro. Git siempre guarda todo, por lo que podemos acceder al registro de la existencia de los archivos, de modo que podremos recuperarlos si es necesario (pero debemos usar comandos más avanzados).Este comando sirve para renombrar un elemento del repositorio la forma correcta de utilizarlo es
git mv <nombre actual elemento> <Nuevo nombre>
Lo usamos si queremos ver la diferencia entre una versión y otra, no necesariamente todos los cambios desde la creación del archivo, podemos usar el comando
Nos permite viajar en el tiempo. Podemos volver a cualquier versión anterior de un archivo específico o incluso del proyecto entero. Esta también es la forma de crear ramas y movernos entre ellas.
En este caso, no solo “volvemos en el tiempo”, sino que borramos los cambios que hicimos después de este commit.
Hay dos formas de usar git reset
: con el argumento --hard
, borrando toda la información que tengamos en el área de staging (y perdiendo todo para siempre). O, un poco más seguro, con el argumento --soft
, que mantiene allí los archivos del área de staging para que podamos aplicar nuestros últimos cambios pero desde un commit anterior.
Este comando nos ayuda a volver en el tiempo. Pero no como git checkout
que nos deja ir, mirar, pasear y volver. Con git reset
volvemos al pasado sin la posibilidad de volver al futuro. Borramos la historia y la debemos sobreescribir. No hay vuelta atrás.
Este comando es muy peligroso y debemos usarlo solo en caso de emergencia. Recuerda que debemos usar alguna de estas dos opciones:
Hay dos formas de usar git reset
: con el argumento --hard
, borrando toda la información que tengamos en el área de staging (y perdiendo todo para siempre). O, un poco más seguro, con el argumento --soft
, que mantiene allí los archivos del área de staging para que podamos aplicar nuestros últimos cambios pero desde un commit anterior.
git reset --soft
: Borramos todo el historial y los registros de Git pero guardamos los cambios que tengamos en Staging, así podemos aplicar las últimas actualizaciones a un nuevo commit.git reset --hard
: Borra todo. Todo todito, absolutamente todo. Toda la información de los commits y del área de staging se borra del historial.¡Pero todavía falta algo!
git reset HEAD
: Este es el comando para sacar archivos del área de staging. No para borrarlos ni nada de eso, solo para que los últimos cambios de estos archivos no se envíen al último commit, a menos que cambiemos de opinión y los incluyamos de nuevo en staging con git add
, por supuesto.Luego de hacer git add
y git commit
debemos ejecutar este comando para mandar los cambios al servidor remoto.
Lo usamos para traer actualizaciones del servidor remoto y guardarlas en nuestro repositorio local (en caso de que hayan, por supuesto).
También usamos el comando git merge
con servidores remotos. Lo necesitamos para combinar los últimos cambios del servidor remoto y nuestro directorio de trabajo.
Nos permite crear un nuevo commit con la combinación de dos ramas (la rama donde nos encontramos cuando ejecutamos el comando y la rama que indiquemos después del comando).
# Crear un nuevo commit en la rama master combinando
# los cambios de la rama cabecera:
git checkout master
git merge cabecera
# Crear un nuevo commit en la rama cabecera combinando
# los cambios de cualquier otra rama:
git checkout cabecera
git merge cualquier-otra-rama
Recuerda que siempre debemos crear un nuevo commit para aplicar los cambios del merge. Si Git puede resolver el conflicto hará commit automáticamente. Pero, en caso de no pueda resolverlo, debemos solucionarlo y hacer el commit.
Los archivos con conflictos por el comando git merge
entran en un nuevo estado que conocemos como Unmerged. Funcionan muy parecido a los archivos en estado Unstaged, algo así como un estado intermedio entre Untracked y Unstaged, solo debemos ejecutar git add
para pasarlos al área de staging y git commit
para aplicar los cambios en el repositorio.
Básicamente, git fetch
y git merge
al mismo tiempo.
Las ramas son la forma de hacer cambios en nuestro proyecto sin afectar el flujo de trabajo de la rama principal. Esto porque queremos trabajar una parte muy específica de la aplicación o simplemente experimentar.
La cabecera o HEAD
representan la rama y el commit de esa rama donde estamos trabajando. Por defecto, esta cabecera aparecerá en el último commit de nuestra rama principal. Pero podemos cambiarlo al crear una rama (git branch rama
, git checkout -b rama
) o movernos en el tiempo a cualquier otro commit de cualquier otra rama con los comandos (git reset id-commit
, git checkout rama-o-id-commit
).
Git branch -m master main —> cambia el nombre de la rama
Es una forma de conectar el repositorio de GitHub con nuestro repositorio local
# con el nombre de origin
git remote add origin URL
# Segundo: Verificar que la URL se haya guardado
# correctamente:
git remote
git remote -v
# Tercero: Traer la versión del repositorio remoto y
# hacer merge para crear un commit con los archivos
# de ambas partes. Podemos usar git fetch y git merge
# o solo el git pull con el flag --allow-unrelated-histories:
git pull origin master --allow-unrelated-histories
# Por último, ahora sí podemos hacer git push para guardar
# los cambios de nuestro repositorio local en GitHub:
git push origin master
Primer paso: Generar tus llaves SSH. Recuerda que es muy buena idea proteger tu llave privada con una contraseña.
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Segundo paso: Terminar de configurar nuestro sistema.
En Windows y Linux:
# Encender el "servidor" de llaves SSH de tu computadora:
eval $(ssh-agent -s)
# Añadir tu llave SSH a este "servidor":
ssh-add ruta-donde-guardaste-tu-llave-privada
En Mac:
# Encender el "servidor" de llaves SSH de tu computadora:
eval "$(ssh-agent -s)"
# Si usas una versión de OSX superior a Mac Sierra (v10.12)
# debes crear o modificar un archivo "config" en la carpeta
# de tu usuario con el siguiente contenido (ten cuidado con
# las mayúsculas):
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ruta-donde-guardaste-tu-llave-privada
# Añadir tu llave SSH al "servidor" de llaves SSH de tu
# computadora (en caso de error puedes ejecutar este
# mismo comando pero sin el argumento -K):
ssh-add -K ruta-donde-guardaste-tu-llave-privada
Luego de crear nuestras llaves SSH podemos entregarle la llave pública a GitHub para comunicarnos de forma segura y sin necesidad de escribir nuestro usuario y contraseña todo el tiempo.
Para esto debes entrar a la Configuración de Llaves SSH en GitHub, crear una nueva llave con el nombre que le quieras dar y el contenido de la llave pública de tu computadora.
Ahora podemos actualizar la URL que guardamos en nuestro repositorio remoto, solo que, en vez de guardar la URL con HTTPS, vamos a usar la URL con SSH:
git remoteset-url originurl-ssh-del-repositorio-en-github
Los tags o etiquetas nos permiten asignar versiones a los commits con cambios más importantes o significativos de nuestro proyecto.
Comandos para trabajar con etiquetas:
git tag -a nombre-del-tag id-del-commit
.git tag -d nombre-del-tag
.git tag
o git show-ref --tags
.git push origin --tags
.git tag -d nombre-del-tag
y git push origin :refs/tags/nombre-del-tag
.git tag -a <Nombre> -m "mensaje"
git push --tags
En un entorno profesional normalmente se bloquea la rama master, y para enviar código a dicha rama pasa por un code review y luego de su aprobación se unen códigos con los llamados merge request.
Para realizar pruebas enviamos el código a servidores que normalmente los llamamos staging develop (servidores de pruebas) luego de que se realizan las pruebas pertinentes tanto de código como de la aplicación estos pasan a el servidor de producción con el ya antes mencionado merge request.
Es una funcionalidad de github (en gitlab llamada merge request y en bitbucket push request), en la que un colaborador pide que revisen sus cambios antes de hacer merge a una rama, normalmente master.
Al hacer un pull request se genera una conversación que pueden seguir los demás usuarios del repositorio, así como autorizar y rechazar los cambios.
El flujo del pull request es el siguiente
git checkout -b <rama>
)git commit -am '<Comentario>'
)git push origin <rama>
)pull request
comparando la rama master con la rama del fix.