Comandos de Git
IMPORTANTE
- Todos los comandos comienzan con
git
. Omitirégit
en la definición de los comandos (e.g.git init
porinit
)- HEAD: Rama actual, en la que te ubicas
- Los parámetros con espacios hacen referencia a dos párametros (
<nombre valor>
) y con-
es un único parámetro- Al mencionar rama hacer referencia a la rama indicada (como parámetro)
- Cuando hago mención a
url
, me refiero tanto al enlacehttp
como al enlacessh
- Se utilizará la palbra repo para referirse a repositorio
Configuración de Git
IMPORTANTE
Es necesario primero establecer un nombre de usuario y un email para poder hacer commits, esto con el objetivo de que quede registrado quién hizo dicho commit. Veáse Configuración Inicial de Git
-
git config
:-
--global
: Permite acceder la configuración global (i.e, del computador) -
--local
: Permite acceder la configuración local (i.e del repo)-
<atributo valor>
: Crea o modifica el atributo con un valor
-
-
<--unset atributo>
: Elimina el atributo-
-l
,--list
: Muestra la configuración de Git-
show
: flags
-
-
alias.<nombre> <comando>
: Establece un alias en git
-
-
Comandos Básicos
Creación
-
init
: Crea un repo en la carpeta actual -
add
: Añade los archivos especificados a staging y a tracking-
.
: Implementaadd
a todos los archivos recursivamente de la carpeta actual.
-
-
commit
: Guarda los archivos de staging en el repo-
-a
: Aplicaadd
a todos los archivos tracked -
-m "mensaje"
: Establece un mensaje al commit. Le puedes dar salto de línea al mensaje mientras no añadas las comillas de cierre -
--amend -m "mensaje"
: Modifica el commit más reciente, agregando los cambios actuales de staging y permitiendo cambiar el mensaje del commit
-
Eliminación
-
rm
:-
--cached
: Elimina los archivos de staging y tracking, es decir, remueve los archivos del repo -
-f
,--force
: Elimina los archivos modificados de todas partes -
r
: Elimina recursivamente -
--dry-run
: Muestra lo que se eliminaría si se ejectara elrm
sin esta flag
-
Status y Registros
-
status
: Señala el HEAD y los archivos guadados en local y staging -
show
: Muestra los cambios de los archivos del último commit respecto a la versión previa-
<archivo>
: Aplicashow
al archivo especificado -
--stat
: Muestra los commits con sus respectivos cambios
-
-
log
: Muestra los commits del HEAD-
--oneline
: Te los muestra en una línea -
--graph
: Te los muestra en un un gráfico -
--all
,-a
: Muestra los commits de todos las ramas
-
-
diff
: Muestra las diferencias entre los archivos modificados en local y staging-
<hash-1 hash-2
>: Muestra las diferencias entre dos commits
-
-
reflog:
Te permite ver TODO EL HISTORIAL DE COMMITS , con el fin de poder rebobinar (reset
) desde cualquier punto
Búsqueda
-
grip
-
<texto>
: Busca entre los archivos del repo y señala los lugares en donde se utilizó dicho texto -
-n
: Muestra la línea donde se utilizó -
-c
: Muestra la cantidad de veces que fue utilizado
-
-
log -S <"texto">
: Busca entre los commits y muestra aquellos en el que se usó dicho texto
Revertir y Regresar
ADVERTENCIA
- Si deseas aplicar un
commit --amend
al commit más reciente de un repo alojado, ejecuta en seguidapush --force-with-lease
. No recomendado. Utilizar solo si se requiere hacer lo previamente descrito, cambiar el mensaje de algun commit.- Si se requiere deshacer commits de un repo hosteado, (e.g. por temas de privacidad) contacta a soporte técnico de GitHub, GitLab…
-
restore
: Restaura los archivos trackeados que han sido modificados y que no se encuentran en staging-
staged
: Restaura los archivos en staging al working
-
-
reset
:-
<hash>
: Revierte los commits hasta el commit indicado, eliminando los commits posteriores a este, es decir, rebobinar-
--hard
: Elimina los archivos de staging y local -
--soft
: Preserva los archivos de staging (reset
=reset --soft
)
-
-
-
checkout
-
<hash>
: Restaura los archivos (o archivo especificado) de un commit en staging sin borrar commits -
<branch>
: Cambio de rama
-
-
revert
: Utilizado cuando el commit a revertir ya se encuentra alojado-
<hash>
: Crea un commit el cual revierte los commits hasta el commit indicado, sin eliminarlos
-
Stash
-
stash
: Mueve las modificaciones de working y staging en un área temporal llamada stash permitiendo recuperarlas (justo en las áreas que se encontraban). Esto permite guardar cambios que no están listos para un commit-
<nombre>
: -
list
: Muestra los stash -
pop
: Restaura el stash en el HEAD -
drop
: Elimina el stash -
branch <nombre>
: Crea una rama y mueve el stash
-
Ramificaciones (Branches)
-
branch
: muestra las ramas del repo (marca con un*
el HEAD)-
<nombre>
: Se crea una rama con dicho nombre -
switch
: Te mueves a una rama -
-m <nuevo-nombre>
: Renombrar la rama -
-r
: Muestra las ramas alojadas en el servidor -
-a
: Muestra las ramas locales y del servidor
-
-
show-branch
: Muestra lars ramas y su historia-
--all
: Muestra más datos
-
Cambio de Ramas
NOTA
Para cambiar de rama usamos
checkout <nombre-de-rama>
(se recomienda remplazarcheckout
porswitch
para evitar errores humanos)Si tienes archivos en local o staging, tendrás que aplicarles un
stash
, uncommit
o, en su defecto, unrm
para poder cambiar de rama
Merge
NOTA
En ocasiones se pueden generar conflictos al fusionar dos ramas. Veáse Conflictos en Merge
-
merge
:-
<rama>
: Fusiona el HEAD con la rama -
--abort
: Aborta el merge
-
Alojamiento (Github, GitLab…)
NOTA
Si quieres aplicar un
push
, es importante siempre aplicar antes unpull
antes de hacer cualquier commit
-
clone
:-
<url-del-repo>
: Permite clonar repos públicos -
<url-SSH-del-repo
: Permite repos públicos y privados por medio de las llaves SSH
-
IMPORTANTE
El origen remoto es necesario para los comandos de alojamiento. Se suele nombrar origin al ser propietario o colaborador o, en su defecto, upstream
-
remote
: Muestra los orígenes remotos-
add <nombre url>
: Agrega el origen remoto del directorio -
remove <nombre>
: Elimina el origen remoto -
-v
: Muestra los orígenes remotos con sus respectivos url’s
-
-
fetch
:-
<remote> <nombre-del-branch>
: Respecto a la rama, descarga sus commits alojados en el servidor que no están localmente
-
-
pull
:-
<remote> <nombre-del-branch>
:fetch
+merge
-
-
push
-
<remote>
:-
<nombre-del-branch>
: Sube al servidor los commits de la rama -
--tags
: Sube los tags -
:refs/tags/<nombre-del-tag>
: Una vez eliminado el tag localemente, lo elimina del servidor
-
-
Tags y versiones
-
tag
: Muestra los tags del HEAD-
-a <nombre-del-tag> -m <"mensaje"> <hash>
: Crea un tag -
d <nombre-del-tag>
: Elimina un tag
-
Git Clean
-
clean
:-
--dry-run
: Muestra los archivos que eliminaría si se ejecutaraclean
-
-d
: Elimina recursivamente no trackeados y no ignorados -
-f
: Fuerza la eliminación de archivos-
-f
: Fuerza la eliminación de archivos no trackeados de subrepertorios.
-
-
-x
: Remueve archivos no trackeados e ignorados. -
-X
: Remueve solo los archivos no trackeados
-
Cherry Pick
-
cherry-pick
:-
hash
: Trae todos los cambios de cierto commit de una rama al HEAD
-
Git Submodule
Un submódulo es un repositorio ubicado dentro de otro repositorio. Al utilizar un submódulo en vez de trackear directamente los subrepositorios, permites que un repositorio principal contenga y gestione el subrepositorio, el submódulo.
-
submodule:
-
add <url-del-repo>
: Agrega un submódulo con el nombre del repo en la carpeta actual-
<ruta>
: Agregra el submódulo en la ruta especificado. La última carpeta tiene que ser inexistente o vacia -
-f
: Fuerza la adición del submódulo. Útil para añadir submódulo de repos existentes en el repo principal. Si es necesario aplica ungit rm --cached
del subrepo a agregar como submódulo.
-
-
init
: Inicializa los submódulos. Necesario cuando recién se clonó el repo principal y este ya contenía sumódulos -
update
: Actualiza los sumódulos a la versión más reciente guardada en el repo principal-
--remote
: Actualiza cada submódulo a su versión más reciente de la rama establecida el.gitmodules
, la configuración del submódulo
-
-
Referencias
-
Vega, F. (mayo 20, 2019). Curso Profesional de Git y GitHub. Platzi. Recuperado el 26 de agosto de 2023 de https://platzi.com/cursos/git-github/
-
Wulfbane (25 octubre, 2012). Archivo local git config - eliminar la configuración. Recuperado el 26 de agosto de 2023 de https://www.enmimaquinafunciona.com/pregunta/25385/archivo-global-git-config---eliminar-la-configuracion
-
Chacon, S. & Straub, B. (s.f.). git_clean. Consultado el 31 de mayo de 2024 de https://git-scm.com/docs/git-clean
-
Chacon, S. & Straub, B. (s.f.). git_revert. Consultado el 31 de mayo de 2024 de https://git-scm.com/docs/git-revert
-
GitHub Docs. (s.f). Changing a commit message. Consultado el 31 de mayo de 2024 de https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message
Enjoy Reading This Article?
Here are some more articles you might like to read next: