GIT y GITHUB
Controla las versiones de tu código, organiza tus proyectos y colabora con otros desarrolladores.
Git gestiona versiones. GitHub permite compartirlas.
Crear un repositorio para una carpeta llamada Proyectos Java, registrar los cambios con Git y publicarlos en GitHub usando CMD o GitHub Desktop.
1. Nociones básicas
¿Qué es Git?
Es un sistema de control de versiones distribuido. Registra los cambios del proyecto, permite recuperar versiones, crear ramas y combinar trabajo.
Funciona en local¿Qué es GitHub?
Es una plataforma web que aloja repositorios Git y añade herramientas de colaboración, revisión de código, incidencias y automatización.
Alojamiento y colaboraciónConceptos que debes conocer
| Concepto | Significado |
|---|---|
| Repositorio | Carpeta gestionada por Git, con archivos e historial. |
| Working directory | Archivos actuales que editamos. |
| Staging area | Zona donde seleccionamos los cambios que entrarán en el siguiente commit. |
| Commit | Registro de una versión del proyecto. |
| Branch (rama) | Línea independiente de desarrollo. |
| Merge | Integra cambios de una rama en otra. |
| Remote | Repositorio remoto; normalmente se llama origin. |
| Push | Envía commits al repositorio remoto. |
| Pull | Descarga e integra cambios del repositorio remoto. |
| Clone | Crea una copia local de un repositorio remoto. |
El flujo básico de Git
git addgit commitgit push2. Instalar y configurar en Windows 11
GitHub Desktop y Git
GitHub Desktop incluye Git para sus operaciones. Puedes empezar con la aplicación gráfica y, si quieres utilizar CMD, PowerShell o la terminal de VS Code, instala también Git para Windows.
- Descarga Git para Windows desde la página oficial y ejecuta el instalador.
- Para comenzar, mantén las opciones predeterminadas salvo que tengas una necesidad específica.
- Abre CMD o PowerShell y comprueba que funciona:
git --version
Configurar el autor de los commits
git config --global user.name "Nombre Apellido"
git config --global user.email "Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo."
git config --list
Usa un correo asociado a GitHub si quieres que los commits se vinculen a tu cuenta. No compartas contraseñas ni tokens en los comandos o archivos del proyecto.
3. Comandos esenciales de Git
Los comandos se ejecutan en CMD, PowerShell o Git Bash. En los ejemplos, las palabras entre ángulos como URL o RAMA deben sustituirse por valores reales.
git init crea un repositorio Git en la carpeta actual.
mkdir "Proyectos Java"
cd "Proyectos Java"
git init
git branch -M main
git clone URL descarga una copia de un repositorio remoto con su historial.
git clone https://github.com/USUARIO/Proyectos-Java.git
git status muestra los cambios y archivos no rastreados.
git status
git status --short
git log muestra el historial de commits.
git log
git log --oneline
git log --oneline --graph --all
git diff muestra diferencias en archivos modificados. --staged muestra lo que está preparado para el próximo commit.
git diff
git diff --staged
git add selecciona los cambios que se incluirán en el siguiente commit.
git add Main.java
git add .
git commit guarda los cambios preparados en el historial local.
git commit -m "Añadir clase principal"
git add prepara los cambios; git commit crea una versión local; git push publica los commits en el remoto.git remote -v muestra los repositorios remotos configurados.
git remote -v
git remote add origin https://github.com/USUARIO/Proyectos-Java.git
git push envía commits al remoto.
git push -u origin main
git push
git pull descarga e integra cambios remotos; git fetch los descarga sin integrarlos automáticamente.
git pull origin main
git fetch origin
origin ya existe, no vuelvas a añadirlo. Comprueba la URL con git remote -v. Si GitHub contiene commits que no están en local, puede ser necesario integrar esos cambios antes de hacer push.Las ramas permiten desarrollar funcionalidades separadas de la rama principal.
git branch
git branch feature/login
git switch feature/login
git switch -c feature/nueva
git switch main
git merge feature/nueva
git branch -d feature/nueva
git switch -c crea una rama y cambia a ella. git merge integra la rama indicada en la rama actual. Antes de borrar una rama, asegúrate de que ya no necesitas sus cambios.
git restore puede descartar modificaciones locales; úsalo con cuidado.
git restore Main.java
git restore --staged Main.java
El primer comando descarta cambios no preparados de ese archivo; el segundo lo retira del área de preparación, pero conserva las modificaciones en el archivo.
git revert crea un nuevo commit que revierte otro commit.
git revert HASH_DEL_COMMIT
git reset --soft HEAD~1 deshace el último commit conservando los cambios preparados.
git reset --soft HEAD~1
git stash guarda temporalmente cambios locales; git stash pop intenta recuperarlos y retirar esa entrada del stash.
git stash
git stash pop
git reset --hard HEAD elimina cambios locales no confirmados. No lo uses si no estás seguro de que puedes perderlos.4. Organizar la carpeta Proyectos Java
Si los proyectos forman parte de un mismo conjunto didáctico, puedes utilizar un único repositorio para toda la carpeta. Si son aplicaciones independientes con historiales o permisos distintos, puede ser mejor separarlas.
Proyectos Java/
├── 01-TiposDatos/
├── 02-EstructurasControl/
├── 03-ClasesObjetos/
├── 04-Herencia/
├── 05-Colecciones/
├── 06-JDBC-MySQL/
├── README.md
└── .gitignore
¿Qué conviene guardar?
| Archivo o carpeta | Recomendación |
|---|---|
Archivos .java |
Sí Código fuente. |
README.md |
Sí Documentación. |
pom.xml / build.gradle |
Sí Configuración de dependencias y compilación. |
.project / .classpath |
Versionar si son útiles para importar o configurar Eclipse. |
*.class, bin/, target/, build/ |
Normalmente no Archivos generados. |
| Contraseñas, tokens, credenciales | Nunca No subir secretos al repositorio. |
Ejemplo de archivo .gitignore
# Java compilado
*.class
# Directorios de compilación
bin/
target/
build/
out/
# Temporales
*.log
.DS_Store
Thumbs.db
# Metadatos del workspace de Eclipse
.metadata/
# Configuración local y secretos
.env
*.local.properties
Ajusta el archivo según el tipo de proyecto. No ignores archivos de configuración que sean necesarios para reproducir la compilación.
5. Caso práctico: crear y publicar el repositorio
Abrir CMD en la carpeta correcta
cd /d "C:\Users\TuUsuario\Documents\Proyectos Java"
dir
Cambia la ruta por la ubicación real. Comprueba con dir que aparecen tus proyectos.
Inicializar Git
git init
git branch -M main
Ejecuta git init una sola vez en la raíz de este repositorio. Si ya estaba inicializado, no hace falta repetirlo.
Revisar los archivos detectados
git status
Si no aparecen archivos, comprueba que estás en la carpeta correcta y que no están ignorados por .gitignore.
Añadir y registrar la primera versión
git add .
git status
git commit -m "Version inicial de Proyectos Java"
Antes de git add ., revisa el .gitignore y evita incluir compilados o secretos.
Crear el repositorio remoto
En GitHub: New repository, crea Proyectos-Java. Si ya tienes commits locales, es más sencillo crear el remoto vacío, sin README ni otros archivos iniciales.
Conectar y publicar
git remote add origin https://github.com/USUARIO/Proyectos-Java.git
git push -u origin main
Sustituye la URL por la de tu repositorio. Si origin ya existe, consulta git remote -v en lugar de volver a añadirlo.
git init ni a añadir otro remoto sin comprobarlo. Abre la carpeta desde Repository → Show in Explorer y verifica con git status.6. Rutina de trabajo diaria
Cada vez que termines una parte de un ejercicio o una funcionalidad:
git status
git diff
git add .
git commit -m "Añadir ejercicios de herencia"
git push
Trabaja
Edita y prueba el código en Eclipse o VS Code.
Registra
Revisa, prepara y guarda los cambios con Git.
Comparte
Envía los commits a GitHub con git push.
git clone URL la primera vez. En las sesiones siguientes, ejecuta git pull antes de empezar a editar, y git push al terminar.7. Otros comandos útiles
| Comando | Función | Ejemplo |
|---|---|---|
git show |
Detalles de un commit. | git show HEAD |
git blame |
Autor y commit asociado a cada línea. | git blame Main.java |
git ls-files |
Lista archivos rastreados por Git. | git ls-files |
git diff --stat |
Resumen de archivos y líneas cambiadas. | git diff --stat |
git tag |
Consulta etiquetas de versiones. | git tag v1.0 |
git push origin v1.0 |
Publica una etiqueta concreta. | git push origin v1.0 |
git rm |
Elimina un archivo del proyecto y registra su eliminación. | git rm archivo.txt |
git mv |
Renombra o mueve un archivo con seguimiento de Git. | git mv antiguo.java nuevo.java |
git clean -n |
Previsualiza archivos no rastreados que se borrarían. | git clean -n |
git clean -n solo simula. No ejecutes git clean -f sin revisar primero, ya que elimina archivos no rastreados.8. Funciones principales de GitHub
Repositories
Alojan código, historial y documentación; pueden ser públicos o privados.
Pull Requests
Proponen integrar cambios y permiten revisar el código antes de fusionarlo.
Issues
Registran errores, mejoras, tareas y preguntas del proyecto.
README.md
Explica el objetivo, los requisitos y cómo ejecutar el proyecto.
GitHub Actions
Automatiza pruebas, comprobaciones y despliegues mediante flujos de trabajo.
Colaboración
Facilita trabajar en equipo, revisar cambios y mantener un historial común.
9. Repaso interactivo
Selecciona una respuesta para comprobar tus conocimientos.
10. Chuleta rápida
| Quiero... | Comando |
|---|---|
| Inicializar un repositorio | git init |
| Ver el estado | git status |
| Preparar cambios | git add . |
| Crear un commit | git commit -m "Mensaje" |
| Consultar historial resumido | git log --oneline |
| Ver diferencias | git diff |
| Publicar cambios | git push |
| Obtener e integrar cambios | git pull |
| Crear y cambiar de rama | git switch -c nombre |
| Fusionar una rama | git merge nombre |
