Tu primer repositorio


Hay dos formas en que usualmente terminas aquí. O tienes una carpeta de proyecto ya, una weather-app que has estado construyendo localmente, y quieres que Git comience a registrar su historial. O alguien más ya construyó el proyecto, vive en GitHub, y quieres tu propia copia de trabajo en tu máquina. Ambas comienzan con tres comandos pequeños, y al final de este capítulo habrás usado los tres de verdad. Pero primero, una verificación que toma diez segundos: asegurarse de que Git esté en tu máquina en absoluto.
¿Tienes Git instalado?
Todo en este manual sucede en la terminal, así que la primera parada es abrirla. Una terminal es una aplicación donde escribes comandos como texto y los programas responden en texto. Ya está en tu computadora:
- macOS: la aplicación se llama Terminal. Presiona Cmd+Espacio, escribe "terminal" y presiona Intro.
- Windows: abre PowerShell por ahora (busca "powershell" en el menú Inicio). Instalar Git a continuación también añade Git Bash, una terminal construida exactamente para esto, y cualquiera ejecuta los mismos comandos de Git.
- Linux: busca una aplicación llamada Terminal o Console; Ctrl+Alt+T la abre en muchas distribuciones.
Git en sí es un programa de línea de comandos: no tiene ventana propia, y lo usas escribiendo comandos que comienzan con la palabra git y leyendo lo que imprime. Así es también cómo leer cada bloque de código en este manual: la línea que comienza con $ es el comando que escribes (sin el $ en sí), y las líneas debajo son la respuesta de Git.
Entonces, la verificación. Escribe esto en tu terminal y presiona Intro:
$ git --version
git version 2.45.1Un número de versión de vuelta significa que Git está instalado y estás listo. Tu número probablemente diferirá del mío, y eso está bien. Si en su lugar ves "command not found" o "git is not recognized", Git aún no está en tu máquina, e instalarlo es un trabajo de una sola vez:
- macOS: ejecutar
git --versionusualmente abre un diálogo ofreciendo instalar las Command Line Tools de Apple. Acéptalo, y macOS instala Git para ti. - Windows: descarga Git for Windows desde git-scm.com/downloads y ejecuta el instalador. Los valores predeterminados son todas opciones razonables, e instala Git Bash en el camino.
- Linux: instala el paquete
gitcon el gestor de paquetes de tu distribución, por ejemplosudo apt install giten Ubuntu y Debian.
Una vez que termina la instalación, cierra tu terminal, abre una nueva, y ejecuta git --version de nuevo. Un número de versión significa que estás hecho con la configuración para siempre; nada más en este manual necesita instalar.
git --version te dice si está en tu máquina: un número de versión significa que estás listo, y "command not found" significa instalarlo desde git-scm.com o el instalador de tu sistema. Solo haces esta parte una vez. La configuración es la parte menos divertida de cualquier manual, ¡así que bien hecho llegando hasta aquí! Convirtiendo una carpeta en un repositorio
Abre una terminal y muévete a tu carpeta de proyecto con cd (abreviatura de "change directory"), luego ejecuta un comando, git init:
$ cd weather-app
$ git init
Initialized empty Git repository in /Users/mara/projects/weather-app/.git/Esa carpeta es ahora un repositorio: un proyecto que Git vigila, listo para registrar instantáneas del mismo mientras trabajas. git init hace lo mismo cada vez. Busca una carpeta .git oculta, crea una si falta, y a partir de ese momento la carpeta está bajo la vigilancia de Git.
La rama predeterminada de un nuevo repositorio se llama main. Si caes en un tutorial antiguo, un repositorio antiguo, o un curso grabado hace algunos años, verás master usado para la misma cosa: es la misma primera rama bajo un nombre antiguo. Este manual siempre usa main.
¿Qué es una rama?
Una rama es una línea separada de historial para que tus commits caigan, y main es la que cada nuevo repositorio comienza. Branches cubre crearlas y cambiar entre ellas.
git init convierte cualquier carpeta en un repositorio de Git, listo para que Git comience a rastrearlo. Ejecútalo una vez dentro de una carpeta de proyecto y estás listo, y ejecutarlo de nuevo después no hace daño. Los nuevos repositorios usan por defecto una rama llamada main, aunque los más antiguos que encuentres usualmente se llaman master por la misma cosa. Diciéndole a Git quién eres
Antes de tu primer commit, Git quiere saber quién lo está haciendo. Establece dos valores una vez, y Git los recuerda para cada commit que hagas en esta máquina:
$ git config --global user.name "Carlos Rodríguez"
$ git config --global user.email "[email protected]"Cada commit que creas se marca con ese nombre y correo electrónico. Salta este paso, y Git vuelve a algo adivinado del nombre de usuario y nombre de host de tu computadora, así que tus commits llevan una identidad que nunca elegiste.
Establece tu nombre y correo electrónico antes de tu primer commit. Haz el commit primero y establécelos después, y el error se hornea en el historial de ese commit. Peor aún, algunos hosts (GitHub incluido) coinciden commits con tu cuenta por correo electrónico, así que un commit hecho bajo la dirección equivocada o una adivinada aparece como trabajo de un extraño anónimo en su lugar del tuyo.
git config --global user.name y git config --global user.email establecen el nombre y correo electrónico que Git marca en cada commit que hagas. Establécelos antes de tu primer commit, porque un commit hecho antes de establecer tu correo electrónico se atribuye a una identidad adivinada, y un host como GitHub puede no conectarlo a tu cuenta en absoluto. Hazlo una vez y cada repositorio en tu máquina lo recuerda. Copiando un proyecto existente con git clone
A veces el proyecto ya existe en otro lugar, y quieres una copia de trabajo del mismo en tu máquina. git clone hace eso en un comando:
$ git clone https://github.com/octocat/Hello-World.git
Cloning into 'Hello-World'...
remote: Enumerating objects: 13, done.
remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 13
Receiving objects: 100% (13/13), done.Git crea una nueva carpeta llamada Hello-World, descarga el historial completo del proyecto en ella, y coloca sus archivos en la carpeta para que puedas comenzar a leer o editar de inmediato. No se necesita un paso git init separado. Clonar configura el repositorio para ti como parte de descargarlo.
git clone <url> descarga el repositorio de alguien más, historial completo incluido, en una nueva carpeta llamada según el proyecto. Alcánzalo cuando el proyecto ya existe en algún lado; alcanza git init cuando estás comenzando uno desde cero. Una vez que termina el clonado tienes una copia de trabajo completa, lista para mirar o añadir. Qué hay dentro de la carpeta oculta .git
Cada repositorio, ya sea que llegues allí con git init o git clone, tiene una carpeta oculta llamada .git sentada en su raíz. Está oculta por defecto, así que pide a la terminal el listado completo con ls -a (ls lista los contenidos de una carpeta, y -a incluye entradas ocultas) para verla sentada junto a tus archivos de proyecto normales:
$ ls -a
. .. .git README.md srcEsa carpeta es el repositorio real. Contiene cada commit que has hecho, tus ramas, y la configuración de la sección anterior. Elimina la carpeta .git y el proyecto pierde su historial completo, convirtiéndose atrás en una carpeta ordinaria que Git ya no rastrea. Todo lo demás en el proyecto es una copia de trabajo de lo que .git contiene.
.git en su raíz, y esa carpeta es el repositorio real: tu historial completo y sus configuraciones viven allí. Ejecuta ls -a dentro de un proyecto para verla, ya que está oculta por defecto. Nunca la elimines a menos que realmente quieras borrar el historial completo del proyecto, ya que eliminarla convierte la carpeta atrás en una carpeta plana que Git ya no rastrea. Si los términos repositorio y commit aún se sienten borrosos, What is Git cubre el modelo mental en el que estos comandos se construyen, y el Glossary tiene una definición corta para cada pieza de vocabulario en este capítulo. Una vez que tu identidad está establecida y tienes un repositorio en el que trabajar, The commit loop cubre el ciclo diario de edición, preparación y confirmación que usarás constantemente de aquí en adelante.

