Primeros pasos: de cero a tu proyecto en GitHub
Una guía completa para hacer en orden, en Windows. Al terminar vas a tener Git instalado y configurado, un proyecto con historial y una copia en GitHub que podés clonar desde cualquier computadora. Cada comando viene con lo que hace y con la salida que deberías ver.
Términos de esta página
Si alguno no te suena, mirá también Conceptos.
- Terminal
- La ventana donde escribís comandos de texto. En Windows usamos PowerShell (o la pestaña Terminal de VS Code, que abre lo mismo).
- Comando
- Una instrucción que escribís en la terminal y ejecutás con Enter, por ejemplo
git status. - Carpeta actual
- La carpeta en la que “está parada” la terminal. Git actúa sobre el repositorio de esa carpeta. Se cambia con
cd. - winget
- El instalador de programas por línea de comandos que viene con Windows 10/11.
- Configuración global
- Ajustes de Git que valen para todos tus proyectos (se guardan en el archivo
.gitconfigde tu usuario). - Repositorio (repo)
- Carpeta con historial de Git (tiene una subcarpeta oculta
.git). - Commit
- Una foto guardada del proyecto con un mensaje.
- .gitignore
- Un archivo de texto con la lista de cosas que Git debe ignorar (dependencias, contraseñas, archivos temporales).
- Remoto / origin
- La copia del repo en GitHub.
origines el nombre que se le da por convención. - Git Credential Manager
- Un ayudante que viene con Git para Windows: cuando GitHub te pide iniciar sesión, abre el navegador y después recuerda la sesión.
- Upstream
- La rama del remoto con la que se “empareja” tu rama local, para que
git pushygit pullsepan adónde ir sin aclararlo.
Antes de empezar: la terminal y cómo leer esta guía
Abrir una terminal en una carpeta
- Desde el Explorador de Windows: abrí la carpeta, clic derecho en un espacio vacío → Abrir en Terminal.
- Desde VS Code: menú Terminal → Nueva terminal. Se abre ya parada en la carpeta del proyecto.
- Desde el menú Inicio: buscá PowerShell o Terminal.
cd E:\Developmentcd = “cambiar de carpeta”. Después de esto, los comandos actúan sobre E:\Development.lsdir).Cómo leer los bloques de esta guía
- Los bloques oscuros son comandos: se escriben (o se copian con el botón de la derecha) y se ejecutan con Enter. Si hay varias líneas, van de a una.
- Lo que está entre
<y>se reemplaza por tu valor, sin los signos. Ej.:<usuario>→mataguirre7. - Lo que empieza con
#es un comentario: explica, no se ejecuta. - Los bloques grises que dicen “salida” muestran lo que responde la terminal. Sirven para comparar, no se escriben.
git version 2.50.1.windows.1
Instalar Git
Una sola vez por computadora.
Con winget (recomendado)
winget install --id Git.Git -e --source winget-e pide la coincidencia exacta del nombre. Si te pregunta, aceptá los términos con Y.Cerrá la terminal y abrí una nueva después de instalar: las terminales abiertas no ven el programa nuevo hasta que se reinician.
También podés bajar el instalador desde git-scm.com y dejar todas las opciones por defecto.
Verificar
git --versiongit version 2.50.1.windows.1
Si dice “git no se reconoce como nombre de un cmdlet”, la terminal es anterior a la instalación (abrí una nueva) o la instalación no terminó.
El instalador trae también Git Bash (otra terminal) y el Git Credential Manager, que vas a usar en el paso 7 para iniciar sesión en GitHub.
Configurar tu identidad y preferencias
Una sola vez por computadora. --global significa “para todos mis repositorios”.
Quién sos (obligatorio)
Cada commit guarda nombre y email del autor. Sin esto, Git no te deja hacer commits. Usá el mismo email que tu cuenta de GitHub, así GitHub asocia los commits con tu perfil.
git config --global user.name "<Tu Nombre>"
git config --global user.email "<tu-email@ejemplo.com>"--global = para todos los proyectos de esta PC). Las comillas son necesarias si el nombre tiene espacios. Se configura una sola vez.Preferencias recomendadas
git config --global init.defaultBranch mainmain (el estándar actual de GitHub).git config --global core.autocrlf truegit config --global core.editor "code --wait"Revisar lo configurado
git config --global --listuser.name=…, user.email=…). Sirve para comprobar que quedó bien. Si la lista es larga, q sale.user.name=Tu Nombre
user.email=tu-email@ejemplo.com
init.defaultbranch=main
core.autocrlf=true
Crear un repositorio
Convertir una carpeta en un proyecto con historial.
Carpeta nueva
mkdir mi-proyecto
cd mi-proyecto
git initmkdir crea la carpeta, cd entra en ella y git init crea el repositorio vacío (la carpeta oculta .git).Initialized empty Git repository in E:/Development/mi-proyecto/.git/
Proyecto que ya existe
Si ya tenés una carpeta con código, no hace falta crear nada: entrá a la carpeta y corré git init ahí. Los archivos no se tocan; solo se agrega .git.
cd <ruta-de-tu-proyecto>
git initNo borres la carpeta .git: ahí está todo el historial. Si la borrás, la carpeta vuelve a ser una carpeta común.
Tu primer commit
El ciclo básico: crear o editar → status → add → commit.
a) Crear un archivo
Creá un archivo README.md con tu editor (es el texto que GitHub muestra en la portada del repo). Por ejemplo, con este contenido:
# Mi proyecto
Un proyecto para practicar Git.
code README.mdnotepad README.md.Evitá echo "texto" > archivo en Windows PowerShell 5.1: guarda el archivo en UTF-16 y en GitHub se ve con caracteres raros. Usá el editor.
b) Ver el estado
git statusOn branch main
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md
Untracked = Git ve el archivo pero todavía no lo sigue.
c) Prepararlo (add)
git add README.mdgit add . (el punto significa “esta carpeta”).git statusChanges to be committed:
(use "git rm --cached <file>..." to unstage)
new file: README.md
d) Guardarlo (commit)
git commit -m "Primer commit: agrega README"-m = el mensaje del commit, entre comillas. Describí qué cambia.[main (root-commit) a1f3c9e] Primer commit: agrega README
1 file changed, 3 insertions(+)
create mode 100644 README.md
a1f3c9e es el hash de tu commit (el tuyo va a ser otro). root-commit significa que es el primero del repo.
git log --onelinea1f3c9e (HEAD -> main) Primer commit: agrega README
Decirle a Git qué ignorar (.gitignore)
Hacelo antes del primer git add . en un proyecto real.
Qué no hay que subir nunca
- Dependencias descargadas (
node_modules/,.terraform/): se regeneran connpm installoterraform inity pesan mucho. - Secretos (
.env, contraseñas, claves,*.tfstate): si llegan a GitHub, hay que considerarlos expuestos. - Archivos generados (
dist/,build/, logs). - Basura del sistema o del editor (
Thumbs.db,.DS_Store,.vscode/).
El archivo .gitignore
Creá un archivo llamado exactamente .gitignore (con el punto adelante, sin extensión) en la raíz del proyecto:
# dependencias
node_modules/
# secretos
.env
# generados
dist/
*.log
# sistema
Thumbs.db
.DS_Store
Una línea por patrón. carpeta/ ignora una carpeta entera; *.log ignora todos los archivos que terminan en .log; # es un comentario.
git add .gitignore
git commit -m "Agrega .gitignore".gitignore sí se sube: así todos los que clonen ignoran lo mismo.Crear el repositorio en GitHub
En el navegador. Si no tenés cuenta, creala gratis en github.com.
- Entrá a
github.comcon tu cuenta y tocá el botón + (arriba a la derecha) → New repository. - Repository name: el nombre del proyecto, por ejemplo
mi-proyecto(sin espacios). - Public (cualquiera lo ve) o Private (solo vos y quienes invites).
- No marques “Add a README”, “.gitignore” ni “license”: tu repo local ya tiene historial y un repo de GitHub con archivos propios generaría un conflicto al subir.
- Tocá Create repository. GitHub te muestra una página con la URL del repo, del estilo
https://github.com/<usuario>/mi-proyecto.git. Copiala.
Conectar y subir tu proyecto
De vuelta en la terminal, en la carpeta del proyecto.
Los tres comandos
git remote add origin https://github.com/<usuario>/mi-proyecto.gitorigin. Se hace una sola vez por repo.git branch -M mainmain (por si se creó como master). Si ya se llama así, no hace nada.git push -u origin mainmain a origin. -u guarda la relación (el upstream): desde ahora alcanza con git push y git pull.Enumerating objects: 6, done.
Writing objects: 100% (6/6), 540 bytes | 540.00 KiB/s, done.
To https://github.com/<usuario>/mi-proyecto.git
* [new branch] main -> main
branch 'main' set up to track 'origin/main'.
El inicio de sesión (solo la primera vez)
Al hacer el primer push, el Git Credential Manager abre una ventana para iniciar sesión en GitHub:
- Elegí Sign in with your browser.
- Se abre GitHub en el navegador: iniciá sesión y tocá Authorize.
- Volvé a la terminal: el push continúa solo.
La sesión queda guardada en el Administrador de credenciales de Windows, así que las próximas veces no pregunta.
GitHub no acepta tu contraseña en la terminal. Si alguna herramienta te pide usuario y contraseña, usá el login por navegador o un token personal (ver Problemas).
Recargá la página del repo en GitHub: tienen que aparecer tus archivos y el README.
El ciclo de todos los días
Desde ahora, trabajar con Git es repetir esto.
Guardar y subir un cambio
git pull# ...editás archivos en el editor...
git status
git add .
git commit -m "<qué cambiaste>"
git pushConsejos
- Hacé commits chicos y seguidos: es más fácil entender y deshacer un cambio chico.
- Antes de
git add ., mirágit statuspara no subir algo por error. git diffmuestra exactamente qué líneas cambiaste (ver Uso diario).- VS Code tiene un panel Control de código fuente (ícono de ramita) que hace lo mismo con botones: es Git por detrás.
Clonar: traer un repositorio a otra computadora
git clone
cd E:\Development
git clone https://github.com/<usuario>/mi-proyecto.gitmi-proyecto con todos los archivos y el historial completo, y ya queda conectada a origin. No hace falta git init ni remote add.Cloning into 'mi-proyecto'...
remote: Enumerating objects: 6, done.
Receiving objects: 100% (6/6), done.
cd mi-proyecto
git log --onelinegit clone. Ya es un repositorio completo: git log muestra el mismo historial que en la otra computadora y git remote -v confirma que está conectado a GitHub.Resumen: ¿init o clone?
| Situación | Comando |
|---|---|
| Empiezo un proyecto nuevo en mi PC | git init + remote add + push -u |
| El proyecto ya está en GitHub | git clone <url> |
| Quiero las novedades de un repo que ya cloné | git pull |
Siguiente paso: Ramas, para trabajar en algo nuevo sin tocar lo que funciona.