Comandos de Git
IMPORTANTE
- Todos los comandos comienzan con
git. Omitirégiten la definición de los comandos (e.g.git initporinit)- 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 enlacehttpcomo 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-
.: Implementaadda todos los archivos recursivamente de la carpeta actual.
-
-
commit: Guarda los archivos de staging en el repo-
-a: Aplicaadda 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 elrmsin 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>: Aplicashowal 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 --amendal 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 remplazarcheckoutporswitchpara evitar errores humanos)Si tienes archivos en local o staging, tendrás que aplicarles un
stash, uncommito, en su defecto, unrmpara 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 unpullantes 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 --cacheddel 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: