Hoja de trucos de comandos de Git: los comandos que realmente usas, con ejemplos

  1. Inicio
  2. Blog
  3. Desarrollo de software

Desarrollo de software

Hoja de referencia de comandos de Git: Los comandos que realmente usas, con ejemplos

Una referencia práctica de Git agrupada por lo que estás intentando hacer, desde tu primer compromiso hasta deshacer un error. Mantenlo abierto mientras trabajas y utiliza la guía para deshacer antes de intentar algo arriesgado.

8 min de lectura
Hoja de trucos de comandos de Git: los comandos que realmente usas, con ejemplos

Puntos clave

  • Un cambio se mueve a través de tres áreas: directorio de trabajo, área de preparación y repositorio.
  • git status es el comando más seguro que tienes, así que ejecútalo constantemente.
  • Utilice git revert para deshacer confirmaciones compartidas y mantenga git reset --hard para el trabajo local del que esté seguro.
  • git reflog normalmente puede rescatar confirmaciones que creías perdidas.

Nadie recuerda todos los comandos de Git y usted no es necesario. Esta hoja de trucos de comandos de Git se centra en el pequeño conjunto que cubre casi todo el trabajo diario, agrupado por el trabajo que estás intentando realizar.

Probamos los comandos locales en un repositorio de demostración desechable usando Git para Windows, y el resultado que se muestra proviene de esa ejecución, sin las advertencias de final de línea. Sus hashes de confirmación serán diferentes. Los comandos remotos necesitan un servidor, por lo que no los ejecutamos. ¿Nuevo en el control de versiones? Comience con nuestro tutorial de Git para principiantes.

Cómo piensa Git: tres áreas

La mayor parte de la confusión desaparece una vez que sabes dónde reside el cambio:

Área lo que contiene Se mudó allí por
Directorio de trabajo Tus archivos mientras los editas Edición
Área de preparación (índice) Cambios seleccionados para la próxima confirmación agregar git
repositorio local Tu historial de confirmaciones guardado git comprometerse
repositorio remoto La copia compartida, como en GitHub. git empujar

Configurar e iniciar un proyecto

Comando que hace
git config --global nombre.usuario "Asha" Establece tu nombre en las confirmaciones
git config --global usuario.correo electrónico "a@b.com" Establece tu correo electrónico en confirmaciones
git config --global init.defaultBranch principal Nombra nuevas ramas predeterminadas main
inicio de git Crea un repositorio en la carpeta actual.
git clon <url> Descarga un repositorio existente
configuración de git --lista Muestra tu configuración actual

Guarda tu trabajo

Comando que hace
estado de git Muestra lo que ha cambiado
git agregar archivo.txt Etapas de un archivo
git agregar. Organiza todos los cambios en esta carpeta
git agregar -p Etapas de partes seleccionadas de un archivo
diferencia git Muestra cambios sin etapas
git diff --en etapas Muestra lo que se comprometerá.
git commit -m "Mensaje" Guarda los cambios preparados como una confirmación.
git commit -am "Mensaje" Organiza archivos rastreados y los confirma

Así es como cambia la vista de estado breve a medida que avanza un nuevo archivo:

$ echo "hello" > app.txt
$ git status --short
?? app.txt

$ git add app.txt
$ git status --short
A  app.txt

$ git commit -m "Add app file"

?? significa sin seguimiento y A significa agregado a la preparación. En el formato de dos columnas, la columna de la izquierda es el área de preparación y la columna de la derecha es su directorio de trabajo. Tenga en cuenta que git commit -am omite archivos nuevos, por lo que primero debe agregarlos explícitamente.

Sucursales

Comando que hace
rama git Listas de sucursales locales
rama git -a Incluye sucursales remotas
función de cambio de git/iniciar sesión Se muda a una sucursal
git switch -c función/iniciar sesión Crea una rama y se mueve hacia ella.
función de combinación de git/iniciar sesión Fusiona esa rama con la actual.
git rebase principal Reproduce tus confirmaciones además de main
git rama -d característica/iniciar sesión Elimina una rama fusionada
git rama -D función/iniciar sesión Forzar la eliminación de una rama no fusionada

Aquí hay una pequeña rama de funciones de principio a fin:

$ git switch -c feature/login
$ echo "login" >> app.txt
$ git commit -am "Add login"
$ git switch main
$ git merge --no-edit feature/login
$ git log --oneline --graph
* d0450b6 Add login
* 676b684 Add app file

$ git branch -d feature/login
Deleted branch feature/login (was d0450b6).

El historial es una línea recta porque main no se había movido, por lo que Git realizó una fusión rápida. Aún verás git checkout en guías más antiguas. Funciona, pero los comandos más nuevos switch y restore dividen sus muchas tareas en otras más claras. Para elegir entre fusionar y rebase, lea Git merge vs rebase.

Trabajar con controles remotos

Comando que hace
git remoto -v Enumera los controles remotos y sus URL
git remoto agregar origen <url> Conecta un control remoto
git buscar Descarga cambios sin fusionar
git tirar Obtiene y luego se integra en su rama
git empujar Sube tus confirmaciones
git push -u función de origen/inicio de sesión Empuja una nueva rama y la rastrea
git push origin --eliminar función/iniciar sesión Elimina una rama remota
git push --force-con-arrendamiento La fuerza empuja, pero sólo si nadie más ha empujado

fetch siempre es seguro porque nunca cambia tus archivos. Si necesita sobrescribir una rama después de una rebase, prefiera --force-with-lease a simple --force, ya que se niega a borrar las nuevas confirmaciones de un colega.

Reserva: deja el trabajo a un lado

Stash es útil cuando necesitas cambiar de tarea pero no estás listo para comprometerte:

$ echo "wip" >> app.txt
$ git stash
$ git status --short
                       # clean, the change is put away
$ git stash pop
$ git status --short
 M app.txt
Comando que hace
alijo de git Guarda los cambios y limpia su directorio de trabajo.
git alijo -u Incluye archivos sin seguimiento
lista de alijo de git Muestra alijos guardados
git alijo pop Restaura el último alijo y lo elimina
aplicar git stash Lo restaura pero lo mantiene guardado.

Ver historial

Comando que hace
registro de git --una línea Muestra una línea por confirmación
git log --oneline --graph --all Dibuja todas las ramas
git log -p archivo.txt Muestra los cambios de un archivo a lo largo del tiempo.
git mostrar <hash> Muestra un compromiso en detalle
git culpa archivo.txt Muestra quién cambió por última vez cada línea.
git reflog Muestra todos los lugares donde HEAD ha estado
git bisectar Búsquedas binarias de la confirmación que agregó un error

Deshacer errores: “Quiero…”

Esta es la parte que la mayoría de la gente busca. Encuentra tu situación:

Situación Comando
Descartar ediciones no preparadas en un archivo git restaurar archivo.txt
Eliminar un archivo pero conservar las ediciones git restaurar --archivo preparado.txt
Reparar el mensaje o los archivos de la última confirmación. git confirmar --enmendar
Deshacer la última confirmación y mantener los cambios preparados git reset --soft HEAD~1
Deshacer la última confirmación y mantener los cambios sin realizar git restablecer CABEZA ~ 1
Deshacer una confirmación enviada de forma segura git revertir <hash>
Deseche todos los cambios locales reinicio de git --duro
Eliminar archivos sin seguimiento git clean -fd (vista previa con -n)
Recuperar un compromiso “perdido” git reflog, luego git branch rescue <hash>

Consejo: Antes de cualquier riesgo, ejecuta git branch backup. No cuesta nada y te da una etiqueta a la que regresar. git reset --hard y git clean pueden destruir permanentemente el trabajo no comprometido, que ni siquiera reflog puede recuperar.

Restablecer vs revertir vs restaurar

Estos tres nombres causan mucha confusión, pero hacen cosas bastante diferentes:

Comando Actúa sobre ¿Cambia la historia? ¿Seguro en sucursales compartidas?
restaurar git Archivos No Sí, pero descarta las ediciones locales.
git revertir Un compromiso, agregando su opuesto Se suma a ello si
restablecer git El puntero de rama Lo reescribe No

En nuestra demostración, cometimos una línea incorrecta y la revertimos. El archivo volvió a su contenido anterior, mientras que el error permaneció visible en el registro como historial:

$ echo "oops" >> app.txt
$ git commit -am "Bad change"
$ git revert --no-edit HEAD
$ cat app.txt
hello
login

Luego git reset --soft HEAD~1 eliminó esa última confirmación pero mantuvo sus cambios preparados, lo que git status --short mostró como M app.txt.

Etiquetas

Comando que hace
etiqueta git Listas de etiquetas
etiqueta git v1.0 Crea una etiqueta ligera
etiqueta git -a v1.0 -m "Lanzamiento" Crea una etiqueta anotada, ideal para lanzamientos.
origen de git push v1.0 Empuja una etiqueta (las etiquetas no se envían de forma predeterminada)

Las etiquetas a menudo desencadenan canales de lanzamiento, como explica nuestra guía de CI/CD de GitHub Actions.

Un flujo de trabajo diario sencillo

git switch main
git pull
git switch -c feature/search
# edit files
git status
git add -p
git commit -m "Add search by product name"
git push -u origin feature/search
# open a pull request, get a review, then merge

Escriba mensajes de confirmación que expliquen el cambio en el imperativo, como “Reparar redireccionamiento de inicio de sesión”. Te lo agradecerás cuando leas el registro dentro de seis meses.

Errores comunes

  • Confirmar secretos. Eliminar un archivo en una confirmación posterior no lo elimina del historial. Gire el secreto inmediatamente y use .gitignore.
  • Reescribir el historial compartido. No restablezca ni cambie la base de confirmaciones que otros ya hayan realizado.
  • Usar git add . a ciegas. Marque git status primero, para que los archivos de compilación y los registros queden fuera.
  • Usando simple --force. Prefiero --force-with-lease.
  • Hacer grandes compromisos. Los pequeños son más fáciles de revisar, revertir y dividir.

Conclusión

Aprenda las tres áreas y una docena de comandos, y Git dejará de dar miedo. Tenga a mano la tabla de deshacer y recuerde que git status y git reflog son ​​su red de seguridad. Para generar confianza, cree un repositorio desechable y rómpalo y repárelo deliberadamente, ya que ese es el lugar más barato para cometer errores.

Preguntas frecuentes

¿Cuáles son los comandos de Git más utilizados?

El conjunto cotidiano es git status, agregar, confirmar, enviar, extraer, cambiar, bifurcar, fusionar y registrar. Esos pocos comandos cubren la mayor parte de un día laboral típico.

¿Cómo deshago mi última confirmación en Git?

Si es local, use git reset –soft HEAD~1 para mantener los cambios preparados. Si ya lo ha activado, utilice git revert para que el historial permanezca intacto para los demás.

¿Cuál es la diferencia entre git fetch y git pull?

git fetch solo descarga datos nuevos y deja sus archivos en paz. git pull recupera y luego fusiona o modifica esos cambios en su rama actual.

¿Cuál es la diferencia entre git reset y git revert?

git reset mueve el puntero de la rama y puede reescribir el historial. git revert agrega una nueva confirmación que deshace una anterior, lo que la hace segura en ramas compartidas.

¿Puedo recuperar una rama eliminada en Git?

Generalmente sí. Encuentre su última confirmación con git reflog, luego vuelva a crear la rama con el nombre de la rama git seguido del hash, siempre que Git aún no la haya limpiado.

sigue aprendiendo

Trabajar con Stack Quora

¿Necesitas ayuda con pruebas, WordPress o SEO?

Ayudamos a los equipos a enviar mejor software y hacer crecer sus sitios. Cuéntenos en qué está trabajando y le sugeriremos un siguiente paso claro.

Sigue leyendo

Más guías sobre testing, IA y desarrollo moderno

¿Te gustó este artículo? Elige un tema y salta directo a nuestros tutoriales más recientes.

Inteligencia artificial

Explicación de las alucinaciones de la IA: por qué los modelos de lenguaje inventan cosas y cómo reducirlas

Se explicaron las alucinaciones de la IA: qué son, por qué los modelos de lenguaje las producen, tipos comunes, cómo reducirlas con conexión a tierr…

Leer artículo →
DevOps

Explicación de las variables de entorno: archivos .env, secretos y configuración bien hechos

Variables de entorno explicadas con ejemplos de Python que ejecutamos: leerlas y configurarlas, por qué cada valor es una cadena, archivos .env, her…

Leer artículo →
Desarrollo de software

Explicación de la limitación de velocidad de API: algoritmos, encabezados y manejo de errores 429

La limitación de la tasa de API se explica con una simulación que ejecutamos: depósito de tokens, ventana fija, ventana deslizante, 429 respuestas, …

Leer artículo →
Automatización de pruebas

Burlarse en Python: unittest.mock, patch y los errores que hacen que las pruebas mientan

Burlarse en Python con unittest.mock, probado: Mock y return_value, side_effect, parches donde se usa un nombre, especificación y autospec, fechas d…

Leer artículo →
Pruebas de software

Explicación de la cobertura del código: cobertura de línea versus sucursal y lo que realmente significa 100%

Cobertura del código explicada con una ejecución real de cobertura.py: cobertura de línea, rama y condición, lectura de un informe, por qué una cobe…

Leer artículo →
Bases de datos y SQL

DELETE vs TRUNCATE vs DROP en SQL: diferencias, reversión y cuándo usar cada uno

DELETE vs TRUNCATE vs DROP explicado con SQL probado: qué elimina cada uno, reversión, activadores, restablecimiento de identidad, velocidad y en qu…

Leer artículo →
Bases de datos y SQL

Vistas SQL explicadas: cree, use y evite los errores, con ejemplos

Vistas SQL explicadas con consultas que ejecutamos: creación de una vista, resultados en vivo, ocultación de columnas, rendimiento, vistas actualiza…

Leer artículo →
Desarrollo de software

Interfaz TypeScript versus tipo: diferencias reales, probadas con el compilador

Interfaz TypeScript versus tipo, verificado con el compilador real: qué pueden hacer ambos, qué puede hacer solo uno, fusión de declaraciones, exten…

Leer artículo →
Desarrollo de software

Python *args y **kwargs explicados: funciones flexibles con ejemplos claros

Python *args y **kwargs explicados con el código que ejecutamos: empaquetado y desempaquetado, orden de parámetros, argumentos solo de palabras clav…

Leer artículo →
Desarrollo de software

Funciones Lambda de Python: sintaxis, usos reales y cuándo no utilizarlas

Funciones lambda de Python explicadas con el código que ejecutamos: sintaxis, clasificación con clave, mapa y filtro, cierres, trampa de enlace tard…

Leer artículo →
Inteligencia artificial

¿Qué son los agentes de IA? Cómo funcionan, con un bucle de agente simple que puedes ejecutar

¿Qué son los agentes de IA? Una guía sencilla sobre el bucle del agente, las herramientas, la memoria y las barreras de seguridad, con un pequeño bu…

Leer artículo →
DevOps

Monitoreo versus observabilidad: la verdadera diferencia, con registros, métricas y seguimientos

Explicación del monitoreo versus observabilidad: fallas conocidas y desconocidas, registros, métricas y seguimientos, un recorrido por incidentes de…

Leer artículo →
DevOps

Docker Volumes versus Bind Mounts: persistir los datos del contenedor de la manera correcta

Se explican los volúmenes de Docker frente a los montajes de enlace: por qué desaparecen los datos del contenedor, volúmenes con nombre, montajes de…

Leer artículo →
Automatización de pruebas

TDD vs BDD: diferencias clave, una función creada en ambos sentidos y cuándo usar cada una

TDD vs BDD explicado con una característica de descuento construida en ambos sentidos: refactor rojo-verde con el código que ejecutamos, escenarios …

Leer artículo →
Pruebas de software

Pruebas de Aceptación de Usuario (UAT): Proceso, Lista de Verificación y Ejemplos Reales

Explicación de las pruebas de aceptación del usuario: quién las ejecuta, en qué se diferencia del control de calidad, un proceso de siete pasos, una…

Leer artículo →
Bases de datos y SQL

Valores NULL de SQL explicados: IS NULL, COALESCE, NULLIF y las trampas que se deben evitar

Los valores NULL de SQL se explican con las consultas que ejecutamos: lógica de tres valores, IS NULL, COALESCE, NULLIF, cómo los agregados, las uni…

Leer artículo →
Bases de datos y SQL

Declaración SQL CASE WHEN: sintaxis, ejemplos reales y errores comunes

CASO SQL CUANDO se explicó con las consultas que ejecutamos: formularios simples y buscados, orden de condiciones, pivotes con SUMA, trucos COUNT, c…

Leer artículo →
Desarrollo de software

¿Qué es JWT? Tokens web JSON explicados con un ejemplo práctico

¿Qué es JWT? JSON Web Tokens explicó: las tres partes, un token creado y manipulado en el código que ejecutamos, JWT vs sesiones, almacenamiento, to…

Leer artículo →
Desarrollo de software

Explicación del bucle de eventos de JavaScript: pila de llamadas, microtareas y temporizadores con ejemplos

El bucle de eventos de JavaScript explicado con el código que ejecutamos: pila de llamadas, colas de tareas y microtareas, por qué setTimeout 0 no e…

Leer artículo →
Desarrollo de software

Explicación de los generadores y el rendimiento de Python: ahorre memoria con ejemplos reales

Los generadores de Python y el rendimiento se explican con el código que ejecutamos: cómo se pausan y reanudan, midieron el ahorro de memoria, canal…

Leer artículo →
Inteligencia artificial

¿Qué son las incrustaciones? Los vectores y la similitud del coseno se explican de forma sencilla

¿Qué son las incrustaciones? Una guía en lenguaje sencillo sobre vectores, similitud de cosenos y búsqueda semántica, con un pequeño ejemplo que eje…

Leer artículo →
DevOps

Implementación azul-verde versus implementación canaria: diferencias, compensaciones y cómo elegir

Explicación de la implementación azul-verde versus canaria: cómo funciona cada uno, costo, riesgo y reversión, agrupación estable de usuarios que pr…

Leer artículo →
Automatización de pruebas

Pruebas inestables: qué las causa y cómo solucionarlas para siempre

Pruebas inestables explicadas con demostraciones que realizamos: las causas principales, cómo confirmar y diagnosticar una, correcciones adecuadas p…

Leer artículo →
Pruebas de software

Pruebas de carga frente a pruebas de estrés: diferencias, métricas y ejemplos de k6

Explicación de las pruebas de carga frente a las pruebas de estrés: qué prueba cada una, pruebas de picos y de absorción, las métricas que importan,…

Leer artículo →
Pruebas de software

Caso de prueba frente a escenario de prueba: diferencias clave, ejemplos y cuándo utilizar cada uno

Caso de prueba versus escenario de prueba explicado: definiciones claras, una tabla en paralelo, una función de restablecimiento de contraseña tomad…

Leer artículo →
Bases de datos y SQL

Optimización de consultas SQL: lea planes de ejecución y corrija consultas lentas, con tiempos

Optimización de consultas SQL probada en un millón de filas: lea planes de ejecución, agregue los índices correctos, corrija filtros no sargables, u…

Leer artículo →
Bases de datos y SQL

SQL UNION vs UNION ALL: diferencias, ejemplos y rendimiento probado

SQL UNION vs UNION ALL explicado con consultas que ejecutamos: duplicados, las reglas que siguen ambos, un error de datos real, rendimiento medido, …

Leer artículo →
Desarrollo de software

Tutorial de JavaScript Fetch API: GET, POST, manejo de errores y tiempos de espera

Un tutorial de JavaScript Fetch API probado en un servidor local: GET y POST, por qué 404 no arroja, un asistente reutilizable, cadenas de consulta,…

Leer artículo →
Desarrollo de software

Manejo de archivos Python: lectura, escritura, CSV, JSON y pathlib con ejemplos

El manejo de archivos Python se explica con el código que ejecutamos: modos abiertos, lectura de archivos grandes, CSV, JSON, pathlib, archivos bina…

Leer artículo →
Desarrollo de software

Clases y objetos de Python: tutorial de programación orientada a objetos con ejemplos reales

Clases y objetos de Python explicados con el código que ejecutamos: __init__, métodos, atributos de clase versus instancia, herencia, propiedades, m…

Leer artículo →
Inteligencia artificial

¿Qué es un modelo de lenguaje grande? Cómo funcionan los LLM, explicados sin exageraciones

¿Qué es un modelo de lenguaje grande? Los LLM explicados en lenguaje sencillo: tokens, incrustaciones, atención, entrenamiento, ventanas de temperat…

Leer artículo →
DevOps

Comandos de Linux para principiantes: la guía esencial de terminal con ejemplos

Comandos de Linux para principiantes, agrupados por tarea: navegación, archivos, visualización de registros, grep, canalizaciones, permisos, proceso…

Leer artículo →
Automatización de pruebas

Selenium vs Playwright: diferencias clave, comparación de códigos y cuál elegir

Comparación de Selenium vs Playwright: arquitectura, espera, soporte de navegador e idioma, depuración, la misma prueba en ambas herramientas, conse…

Leer artículo →
Pruebas de software

Partición de equivalencia: técnica de diseño de pruebas explicada con ejemplos resueltos

Explicación de la partición de equivalencia: cómo encontrar particiones válidas e inválidas, ejemplos prácticos para edades, contraseñas y cupones, …

Leer artículo →
Pruebas de software

Severidad vs Prioridad en Pruebas de Software: Diferencias, Matriz y Ejemplos Reales

Explicación de gravedad versus prioridad en las pruebas de software: definiciones claras, una matriz de cuatro vías con ejemplos, escalas de niveles…

Leer artículo →
Bases de datos y SQL

Tutorial de subconsultas SQL: tipos, subconsultas correlacionadas y EXISTENCIAS con ejemplos

Un tutorial de subconsultas SQL con consultas que ejecutamos: subconsultas escalares, IN, FROM y SELECT, subconsultas correlacionadas, EXISTS, la tr…

Leer artículo →
Bases de datos y SQL

Transacciones SQL y ACID explicados: COMMIT, ROLLBACK y niveles de aislamiento

Transacciones SQL y ACID explicadas con una transferencia bancaria que ejecutamos: COMMIT, ROLLBACK, puntos de guardado, bloqueos, niveles de aislam…

Leer artículo →
Desarrollo de software

Hoja de trucos de comandos de Git: los comandos que realmente usas, con ejemplos

Una hoja de referencia de comandos de Git agrupada por tarea: configuración, preparación, ramas, controles remotos, almacenamiento, historial y desh…

Leer artículo →
Desarrollo de software

Explicación de las promesas de JavaScript: luego, captura, Promise.all y errores comunes

Las promesas de JavaScript se explican con el código que ejecutamos: estados, luego y cadenas de captura, manejo de errores, Promise.all, allSettled…

Leer artículo →
Desarrollo de software

Tutorial del diccionario Python: métodos, ejemplos y patrones comunes

Un tutorial de diccionario de Python con el código que ejecutamos: crear, leer y actualizar dictados, métodos clave, fusión, comprensión, patrones d…

Leer artículo →
Inteligencia artificial

¿Qué es el RAG? Generación de recuperación aumentada explicada con un ejemplo práctico

¿Qué es RAG? Generación de recuperación aumentada explicada paso a paso: indexación, fragmentación, incrustaciones, recuperación, un pequeño ejemplo…

Leer artículo →
DevOps

Tutorial de Terraform para principiantes: infraestructura como código desde el primer archivo hasta los módulos

Un tutorial de Terraform para principiantes: comience sin una cuenta en la nube, aprenda init, planifique y aplique, luego variables, resultados, es…

Leer artículo →
DevOps

Docker vs Kubernetes: diferencias clave, cómo funcionan juntos y cuál necesita

Docker vs Kubernetes explicó: qué hace cada uno, la misma aplicación se ejecuta con ambos, se comparan Docker Compose y Swarm, los Dockershim cambia…

Leer artículo →
Automatización de pruebas

Tutorial de Pytest para principiantes: accesorios, parametrización y ejemplos reales

Un tutorial de pytest para principiantes con pruebas que ejecutamos en pytest 9.2: afirmaciones, accesorios, parametrización, conftest, marcadores, …

Leer artículo →
Pruebas de software

Ciclo de vida de pruebas de software (STLC): 6 fases, criterios de entrada y salida, ejemplo

Se explicó el ciclo de vida de las pruebas de software: seis fases de STLC con criterios de entrada y salida, entregables, un ejemplo de función de …

Leer artículo →
Desarrollo de software

Git merge vs rebase: diferencias, ejemplos y cuándo usar cada uno

Git merge vs rebase explicado con salida real del log, una tabla comparativa, la regla de oro del rebase y un flujo de trabajo seguro para equipos.

Leer artículo →
Desarrollo de software

List comprehension en Python: sintaxis, ejemplos y cuándo evitarla

List comprehension en Python explicada: sintaxis, filtros, if-else, bucles anidados, tiempos medidos y cuándo es mejor un bucle for normal.

Leer artículo →