Saltar al contenido principal

Git y GitHub

Usuario y correo

Estos datos se reflejan en los commits, independientemente del correo con el que se suban los cambios a GitHub.

Solo repositorio actual

git config user.email "[email protected]"
git config user.name "Work Name"

# Ver información asignada
git config user.name
git config user.email

Global (todos los repositorios)

git config --global user.email "[email protected]"
git config --global user.name "Personal Name"

# Ver información asignada
git config --global user.name
git config --global user.email

Doble cuenta

Configuración para tener dos cuentas de GitHub en la misma computadora.

  • En la primer cuenta se inicia sesión desde Visual Studio Code.
  • En la segunda cuenta se utiliza GitHub Desktop

Configuración inicial

  1. Descargar GitHub Desktop
  2. Iniciar sesión
  3. Al preguntar por la cuenta, elegir Personalizada o Local para que los commits en todo el sistema no tengan los datos de la segunda cuenta por defecto

Ya trabajando

  1. Clonar/crear repositorio
  2. Cambiar los ajustes locales del repositorio: Repository settings -> Git config -> Use a local git config y utilizar los datos reales de la segunda cuenta
  3. Para hacer commits se puede desde VSCode ya que tomará la configuración local del repositorio
  4. Para sincronizar el repositorio con GitHub es necesario hacerlo desde GitHub Desktop

Comunes

git init                               # Inicializar Git en la carpeta actual
git add . # Preparar archivos y cambios para commit
git commit -m "message" # Guardar cambios
git push [origin <branch>] # Subir cambios a GitHub
git log [--oneline] # Historial de commits
git log --pretty=format:"%an <%ae>" # Usuario y correo del commit
git status [--short | -s] # Archivos en el stage
git rm --cached <file> <path/file.ext> # Quitar achivos del stage
git restore # Revertir cambios no guardados

Comandos en desuso o con alternativas modernas

# Revertir cambios no guardados (git restore)
git checkout -- . # Todos los archivos
git checkout -- index.html archivo2.txt # Uno o mas archivos

Borrar commit

  1. Borra permanentemente todos los commits que estén después del punto al que se desea volver
git reset --hard <codigoCommit>
  1. Enviar cambios a GitHub. Reemplaza el repositorio en GitHub con el repositorio local.
git push --force [origin <branch>]

Agregar cambios al ultimo commit

  • Reescribe el historial (el ultimo commit)
  • Util cuando no se ha sincronizado con el repositorio en GitHub

Si no se han enviado los cambios (push)

  1. Agregar cambios al stage
git add .
  1. Agregar los cambios al último commit
git commit --amend
  • Se puede cambiar el mensaje o dejarlo igual
  1. Guardar y cerrar el editor del mensaje si se abre uno

Si ya se enviaron los cambios

  1. Actualizar el commit en el repositorio remoto

Verifica primero que nadie más haya subido nuevos commits a esa rama antes de sobrescribir.

git push --force-with-lease

git push --force sobrescribe el historial remoto con el nuevo commit, lo cual puede causar problemas si otras personas están trabajando en la misma rama.

git push --force

Ejemplos para mensajes de commit

Estructura básica

<tipo>(opcional: alcance): <mensaje breve>

[opcional cuerpo]

[opcional pie de mensaje]

Tipos comunes

  • feat: Nueva funcionalidad
  • fix: Corrección de errores
  • chore: Tareas menores que no afectan la funcionalidad (ej. configs)
  • refactor: Reestructuración del código sin cambio de comportamiento
  • docs: Cambios en documentación
  • test: Cambios relacionados con tests
  • style: Cambios de estilo (espacios, formato, etc.)
  • perf: Mejoras de rendimiento
  • build: Cambios que afectan el sistema de build o dependencias
  • ci: Cambios en configuración de integración continua

Ejemplos

Tipo de cambioEjemplo de feat(<alcance>)
Nueva ruta o recursofeat(users) feat(auth)
Nuevo middlewarefeat(middleware)
Nueva lógica de validaciónfeat(validation)
Setup inicial del servidorfeat(server)
Configuración de base de datosfeat(database)
Controladores o serviciosfeat(posts-controller) o feat(user-service)
Autenticación o autorizaciónfeat(auth)
API versioningfeat(api-v1)
feat(users): add CRUD endpoints for user resource
feat(server): initialize axum server with env config
build(deps): update sqlx from 0.8.5 to 0.8.6