GitHub es una plataforma de alojamiento de código que utiliza Git para control de versiones. Puedes usar GitHub para almacenar, gestionar y colaborar en proyectos de software. A continuación te guío en el uso básico de GitHub.
1. Crear una cuenta en GitHub
- Si aún no tienes una cuenta, ve a GitHub.com y regístrate.
2. Instalar Git
Git es el sistema de control de versiones que GitHub usa. Necesitas tenerlo instalado en tu sistema para poder interactuar con GitHub desde la terminal.
- Para instalar Git, visita Git SCM y sigue las instrucciones de instalación para tu sistema operativo.
3. Configurar Git
Una vez que tengas Git instalado, debes configurarlo con tu nombre y correo electrónico (este correo debe ser el que usaste para crear tu cuenta en GitHub).
Abre una terminal y ejecuta los siguientes comandos:
4. Crear un repositorio en GitHub
- Ve a GitHub.com, inicia sesión y haz clic en el botón "New repository" (Nuevo repositorio).
- Elige un nombre para tu repositorio.
- Decide si quieres que sea público o privado.
- Marca la opción "Initialize this repository with a README" si deseas iniciar con un archivo README.
- Haz clic en "Create repository".
5. Clonar un repositorio a tu computadora
Para trabajar localmente con tu repositorio de GitHub, puedes clonar el repositorio en tu máquina.
- Ve al repositorio en GitHub que quieras clonar.
- Haz clic en el botón verde "Code" y copia la URL.
- Abre tu terminal y navega hasta el directorio donde quieres clonar el repositorio.
- Ejecuta:
Esto creará una copia local del repositorio en tu máquina.
6. Hacer cambios y subirlos a GitHub
Ahora que has clonado el repositorio, puedes hacer cambios y subirlos a GitHub. Aquí están los pasos básicos:
- Haz cambios en tu proyecto local (edita, crea o elimina archivos).
- Abre la terminal y navega al directorio del repositorio clonado.
- Agrega los cambios al área de preparación:
- Haz un commit de los cambios:
- Sube los cambios a GitHub:
7. Crear una rama y trabajar en ella
En lugar de trabajar directamente en la rama principal (main
), es una buena práctica crear ramas para nuevas características o cambios.
- Crea una nueva rama:
- Haz cambios y sigue los pasos de agregar, hacer commit y subir (
add
,commit
,push
). - Para subir tu rama al repositorio remoto:
8. Hacer un Pull Request
Después de trabajar en tu rama, puedes hacer un Pull Request para solicitar la incorporación de tus cambios a la rama principal.
- Ve a tu repositorio en GitHub.
- Haz clic en la pestaña Pull Requests y luego en New Pull Request.
- Selecciona la rama con los cambios y compárala con la rama principal.
- Proporciona una descripción detallada y envía el Pull Request.
9. Colaborar en proyectos existentes
Puedes colaborar en otros proyectos de GitHub clonando sus repositorios o haciendo un fork de ellos para trabajar en tu propia copia del proyecto.
- Fork: Copia el repositorio de otra persona a tu cuenta.
- Pull Request: Solicita que los cambios que hiciste en tu fork sean incluidos en el proyecto original.
10. Ver historial de cambios
Para ver el historial de commits en tu proyecto:
Comados mas usados en github
Los comandos más utilizados en Git y GitHub suelen estar enfocados en la administración básica del flujo de trabajo con ramas, sincronización con el repositorio remoto y la colaboración entre desarrolladores. Aquí te dejo una lista de los comandos más usados:
1. Clonar un repositorio
- Clonar un repositorio de GitHub a tu máquina local:
2. Agregar y confirmar cambios
Ver el estado del repositorio (archivos modificados, no rastreados, etc.):
Añadir archivos al área de preparación:
- Para un archivo específico:
- Para todos los archivos modificados:
- Para un archivo específico:
Hacer un commit (guardar los cambios de los archivos en el repositorio):
3. Subir cambios al repositorio remoto
- Enviar los cambios confirmados al repositorio remoto:
Donde
origin
es el nombre del remoto (por defecto), ymain
es la rama principal.
4. Obtener cambios del repositorio remoto
- Actualizar la rama local con los últimos cambios del repositorio remoto:
5. Trabajar con ramas
Crear una nueva rama:
Cambiar a una rama existente:
Fusionar una rama en la rama actual:
6. Gestionar ramas remotas
Listar todas las ramas (locales y remotas):
Subir una nueva rama al repositorio remoto:
Eliminar una rama en el repositorio remoto:
7. Ver el historial de commits
- Ver el historial de commits de la rama actual:
8. Resolución de conflictos de fusión
- Cuando hay un conflicto al hacer merge:
Ver qué archivos tienen conflictos:
Editar los archivos en conflicto, resolver los conflictos y luego añadirlos de nuevo:
Terminar la fusión:
9. Revertir cambios
Descartar cambios no confirmados en un archivo:
Eliminar archivos del área de preparación:
10. Gestionar el remoto
Agregar un remoto nuevo:
Ver los remotos configurados:
11. Stashing (almacenar temporalmente cambios)
Guardar cambios sin confirmarlos:
Aplicar cambios guardados en el stash:
12. Etiquetas (Tags)
Crear una etiqueta:
Subir la etiqueta al repositorio remoto:
13. Revertir cambios: git reset
, git revert
, git checkout
git reset
: Este comando se usa para mover el punteroHEAD
a un commit anterior, deshaciendo los cambios que se hicieron después de ese commit. Hay varios tipos dereset
:--soft
: Deshace los commits, pero mantiene los archivos en el área de preparación (staging).Deshace el último commit pero mantiene los cambios en el área de preparación.
--mixed
(predeterminado): Deshace los commits y elimina los archivos del área de preparación, pero los mantiene modificados en el directorio de trabajo.--hard
: Deshace los commits y elimina todos los cambios del área de trabajo, devolviendo el repositorio a un estado limpio.
git revert
: Crea un nuevo commit que deshace los cambios de un commit anterior sin alterar el historial de commits, ideal cuando necesitas mantener un historial limpio:git checkout
(para restaurar archivos): Cambia al contenido de un archivo específico desde cualquier commit o rama:
14. Trabajar con stash
: Guardar y restaurar cambios no confirmados
El stash te permite guardar temporalmente los cambios no confirmados para limpiar el área de trabajo sin hacer un commit. Ideal cuando necesitas cambiar de rama sin perder el trabajo en curso.
Guardar cambios en el stash:
Restaurar los cambios guardados:
Listar todas las entradas guardadas en el stash:
Eliminar el stash después de aplicarlo:
Eliminar una entrada específica del stash:
15. Rebase: git rebase
El rebase es una técnica avanzada para reescribir el historial de commits, útil para mantener un historial más limpio.
Rebase interactivo: Permite modificar, reordenar, combinar o eliminar commits. Se ejecuta especificando cuántos commits atrás deseas reescribir:
Esto abre un editor donde puedes modificar los commits previos.
Rebase de una rama en otra: Mueve la rama actual para que se base en una rama diferente (en lugar de hacer un merge):
Esto "repliega" tus cambios sobre la rama indicada, eliminando los merge commits.
16. Cherry-pick: git cherry-pick
Este comando te permite aplicar un commit específico de una rama o historial a otra rama. Es útil cuando quieres llevar un cambio específico a otra rama sin hacer un merge completo.
- Aplicar un commit específico:
17. Refactorizar historial: git filter-branch
o git filter-repo
Para realizar cambios masivos en el historial de commits, como cambiar la estructura de los directorios o eliminar archivos confidenciales, puedes usar filter-branch
(deprecated) o filter-repo
(más moderno).
Modificar el historial de commits (filter-repo):
Este comando refactoriza los commits para mover todos los archivos dentro de
old-directory/
anew-directory/
.
18. Reflog: git reflog
Git mantiene un registro de todos los movimientos del HEAD
, incluidos los commits eliminados. Con git reflog
, puedes recuperar commits que parecían perdidos.
Ver el historial del HEAD:
Recuperar un commit perdido: Si accidentalmente haces un
reset --hard
, puedes recuperar el commit con:
19. Submódulos: git submodule
Los submódulos permiten incluir un repositorio dentro de otro repositorio, lo que es útil para gestionar dependencias.
Añadir un submódulo:
Clonar un repositorio con submódulos: Después de clonar un repositorio que contiene submódulos, debes inicializarlos y actualizarlos:
Actualizar submódulos: Si hay cambios en el submódulo, puedes actualizarlos:
20. Squash: Combinar varios commits en uno solo
El squash es una técnica que combina varios commits en uno solo, ayudando a limpiar el historial antes de fusionar cambios.
Combinar varios commits:
En la pantalla interactiva, cambia
pick
porsquash
en los commits que quieres combinar.
21. Fetch vs. Pull: git fetch
y git pull
git fetch
: Trae los cambios del repositorio remoto sin mezclarlos en tu rama actual. Te permite revisar los cambios antes de fusionarlos.git pull
: Combinafetch
+merge
en un solo paso. Trae los cambios remotos y los fusiona automáticamente con tu rama actual:
22. Ramas remotas: git remote prune
A veces, las ramas remotas eliminadas siguen apareciendo en tu repositorio local. Con el siguiente comando, puedes limpiar esas ramas remotas inactivas:
- Limpiar ramas remotas eliminadas:
23. Bundles: git bundle
Un bundle es un archivo que contiene todos los objetos y commits de un repositorio, lo que permite compartir un repositorio completo sin necesidad de usar un servidor remoto.
Crear un bundle:
Clonar desde un bundle: