A pesar de lo que nos dicen la televisión y las películas, la vida como desarrollador de software no incluye sentarse en una habitación oscura, nuestro teclado iluminado solo por el brillo del monitor, la idea de interactuar con otro ser humano es repulsiva. No, la vida como desarrollador de software es social y colaborativa, a veces hasta el punto de la frustración. Es por eso que tenemos git y Github.
Git es un software de control de versiones que hace que la colaboración con los compañeros de equipo sea muy simple… una vez que haya superado la curva de aprendizaje inicial. Puede ser intimidante, ¡pero es por eso que estoy aquí!
Bueno, no es solo la forma en que los sureños espantamos a las alimañas de nuestros porches, te lo aseguro.
Como dije anteriormente, Git es un software de control de versiones. Fue creado por Linus Torvalds, el tipo que inventó Linux. No es necesario que esté ejecutando Linux para usar git; también puede usarlo en Windows y Mac.
Git le permite realizar fácilmente un seguimiento de cada revisión que usted y su equipo realicen durante el desarrollo de su software. Todos comparten un repositorio de código en el que se trabaja de forma independiente y luego se fusionan nuevamente. Tampoco necesita estar conectado todo el tiempo porque el proyecto se guarda localmente en cada máquina y de forma remota (probablemente en Github).
Git es especial (y bastante obligatorio) porque puede volver a cualquier versión anterior de su código, bifurcarse y desarrollar una función específica sin afectar a nada ni a nadie más, y mantener la seguridad de la corrupción de datos debido a su naturaleza distribuida.
También proporciona cifrado de fácil implementación y compatibilidad entre sistemas operativos, así como flujos de trabajo asincrónicos y no lineales para que, sin importar dónde se encuentre, pueda trabajar en algún aspecto de su proyecto.
Básicamente, si no estás usando git, estás codificando con una mano atada a la espalda.
Vocabulario requerido
Cuando empiezas a usar git por primera vez, puede ser intimidante. Los comandos y conceptos pueden parecer totalmente extraños si nunca ha utilizado ninguna forma de control de versiones en el pasado. Sin embargo, los recogerás súper rápido.
Repositorio:
A menudo se denomina repositorio . Un repositorio es la colección de archivos y carpetas que está usando git para rastrear. El repositorio consiste en el historial completo de los cambios de su equipo en el proyecto. Es la gran caja en la que usted y su equipo lanzan su código.
GitHub:
La solución de almacenamiento remoto más popular para repositorios git. También le permite establecer permisos de acceso para proyectos, rastrear y enviar errores, aceptar solicitudes de funciones, suscribirse a notificaciones del repositorio y utilizar una interfaz gráfica, en lugar de usar la línea de comandos. Los repositorios son públicos por defecto, pero las cuentas pagas pueden tener cuentas privadas.
Comprometerse:
Piense en esto como guardar su trabajo. Cuando te comprometes con un repositorio, es como si estuvieras reuniendo los archivos tal como existen en ese momento y colocándolos en una cápsula del tiempo. La confirmación solo existirá en su máquina local hasta que se envíe a un repositorio remoto.
Empujar:
Empujar es el pan para cometer la mantequilla. Confirmar arroja sus archivos a la cápsula del tiempo, y empujar es lo que lanza la cápsula al espacio. Empujar es esencialmente sincronizar tus compromisos con la nube (nuevamente, probablemente Github). También puede enviar varias confirmaciones a la vez. Puedes trabajar sin conexión, comprometer mucho trabajo y luego subirlo todo a Github cuando estés de vuelta en la civilización con ese dulce, dulce wifi.
Rama:
Puedes pensar en tu repositorio git como un árbol. El tronco del árbol, el software que se pone en marcha, se llama Master Branch. Ese es el que va en vivo. Las ramas de ese árbol se llaman, bueno, ramas. Estas son instancias separadas del código que se deriva del código base principal. Puede optar por una sola función o un parche experimental. Al ramificar, puede preservar la integridad del software y tener una forma de revertir si hace algo totalmente loco. También le permite trabajar en su tarea sin tropezar con su equipo (o ellos con el suyo).
Unir:
Cuando una rama está pulida, libre de errores (al menos hasta donde puede ver) y lista para convertirse en parte del código base principal, se fusionará con la rama maestra. Fusionar es exactamente lo que parece: integrar dos ramas juntas. Cualquier código nuevo o actualizado se convertirá en una parte oficial de la base de código. Cualquiera que se bifurque desde el punto de fusión también tendrá este código en su rama.
Clon:
Clonar un repositorio es exactamente lo que parece. Toma todo el repositorio en línea y hace una copia exacta en su máquina local. Tendrá que hacer esto por varias razones, una de las cuales es comenzar en medio de un proyecto con un nuevo equipo, intercambiar estaciones de trabajo o comenzar de nuevo desde un repositorio corrupto.
Tenedor:
La bifurcación es muy parecida a la clonación, solo que en lugar de hacer un duplicado de un repositorio existente en su máquina local, obtiene un repositorio completamente nuevo de ese código con su propio nombre. Esta característica se usa principalmente para tomar una base de código existente y tomar una dirección completamente nueva, lo que sucede mucho en el software de código abierto; los desarrolladores ven una idea base que funciona, pero quieren seguir un camino diferente con ella. La bifurcación permite que eso suceda. También puede jugar en el repositorio de otro desarrollador como si fuera su propia caja de arena personal. Y si hace algo que cree que les puede gustar, puede hacer una solicitud de extracción para que se fusione.
Solicitud de extracción:
Una solicitud de extracción es cuando envía una solicitud para que los cambios que ha realizado (ya sea en una rama o en una bifurcación) se extraigan (o fusionen) en la rama principal del repositorio. Este es el gran momento. Aquí es donde ocurre la magia. Si se aprueba la solicitud de extracción, habrá contribuido oficialmente al software y Github siempre mostrará exactamente lo que hizo. Sin embargo, si se deniega la solicitud de incorporación de cambios por algún motivo, el denegador podrá dar su opinión sobre por qué se rechazó la solicitud y qué puede hacer para que se acepte.
Primeros pasos y comandos necesarios
Eso no estuvo tan mal, ¿verdad?
Bien. Ahora que tiene una idea clara de lo que es git, es hora de profundizar y ensuciarse las manos.
Debo aprovechar esta oportunidad para notar, sin embargo, que voy a asumir que estás usando la línea de comando para interactuar con git. Claro que hay clientes gráficos de git (y Github incluso te permite hacer casi todo a través de su interfaz web), pero para los propósitos de esta publicación no nos vamos a molestar con ellos. Harás un puñado de cosas fuera de la terminal, pero la línea de comandos será tu nueva mejor amiga. Así que eso es con lo que vamos, también.
Cómo instalar Git
Git (probablemente) no vino instalado en su computadora, así que tenemos que llevarlo allí. Afortunadamente, instalar git es muy fácil, ya sea que esté en Linux, Mac o Windows.
Para Linux, abra la terminal y escriba sudo apt-get install git-all (si está en Ubuntu. De lo contrario, hay una lista de todos los comandos de instalación de paquetes de Linux para cualquier otra distribución en la que se encuentre).
En Windows, es igual de simple. Descargas el instalador y lo ejecutas.
En Mac, solo necesita abrir la terminal y escribir git . Si git no está instalado, verás esto:
Una vez que haga clic en Instalar, estará listo para comenzar.
¿Ver? ¡Muy facil!
Usando Git
Aquí es donde comienza la diversión. Ahora que tienes instalado git, es hora de… ¡hacer git-r-done! ¡Ja! Pero realmente es hora de profundizar y aprender a usar esta increíble pieza de magia de la línea de comandos. ¿Y qué mejor lugar para comenzar que Github?
Así que diríjase y regístrese para obtener su nueva cuenta de Github (o inicie sesión si ya tiene una, y estaré con usted en un segundo).
Github es gratuito para repositorios públicos y puedes tener repositorios privados por un precio. (FYI: puede obtener repositorios privados gratuitos en Bitbucket , que es un lugar menos conocido pero increíble). En su mayor parte, la opción gratuita en Github está bien para la mayoría de las personas (¡y también funciona como un currículum vitae!), pero algunos clientes y empleadores requerirán privacidad y seguridad, por lo que es bueno tener opciones.
¡Después de eso, estará listo para configurar su primer repositorio! Después de verificar tu correo electrónico y todas esas cosas divertidas.
Primero querrá configurar el repositorio en Github. Puede hacerlo en su computadora y luego cargarlo también, pero es más simple hacerlo primero en la web.
Tenga en cuenta que no me preocupa una licencia o .gitignore en este repositorio. Debido a que este no es un software real, no tengo que preocuparme por eso, pero en casos de producción, .gitignore le permite, obviamente, ignorar archivos dentro del directorio de su repositorio. Y puede leer sobre qué licencia necesita su software aquí .
Sin embargo, estoy inicializando el repositorio con un archivo README, que debe usar para mantener la documentación básica del proyecto. Tiendo a usarlos como un rastreador de cambios importantes, listas de tareas pendientes y diferentes tipos de notas mientras trabajo. Pero eso es en proyectos personales. Diferentes líderes de equipo tendrán diferentes expectativas.
Ahora que el repositorio existe en Github, es hora de llevarlo a su máquina local a través de la clonación. A la derecha de su repositorio, justo encima de la lista de archivos, verá un botón verde que dice «Clonar o descargar». Haz clic y verás esto:
Ya que estamos clonando, podemos ignorar todo excepto la parte sobre la Clonación con HTTPS . No tendrás que configurar nada. Solo tendrá que ingresar su nombre de usuario y contraseña cuando presione.
Sin embargo, primero debe configurar dónde desea que viva su repositorio en su máquina local. Abre tu terminal. (Usuarios de Windows, busque y abra un programa llamado Windows Powershell. También le sugiero que haga clic con el botón derecho y seleccione «Ejecutar como administrador»).
El primer comando que necesita aprender es ls . Esto listará todo en el directorio actual. Para simplificar las cosas, hagamos que nuestra carpeta dev viva en el directorio de inicio de la computadora. Puede usar mkdir dev para crear un directorio llamado dev . Bastante sencillo, ¿verdad? Si vuelve a pulsar ls , verá la nueva carpeta en la lista.
Luego desea pasar a su nuevo directorio utilizando cd dev , que es el comando para cambiar de directorio . ¡Mira, la línea de comando no da miedo en absoluto! Si necesita volver al directorio anterior, simplemente use cd .. .
Una vez que esté dentro de su nueva carpeta de desarrollo , es hora de comenzar esta fiesta. Je, je, je.
Comience copiando la URL que aparece después de hacer clic en el botón verde «Clonar o descargar» en Github. Se verá así: https://github.com/bjk1337/myfirstrepo.git
Comandos para clonar un repositorio Git desde Github
- clon de git https://github.com/bjk1337/myfirstrepo.git
- ls
- cd myfirstrepo – o como sea que hayas llamado tu repositorio
- ls
Después de eso, su terminal debería ser algo como esto, mostrando su archivo README que configuró en Github. ¡Felicitaciones! Acaba de usar Git por primera vez y ahora está listo para comenzar a desarrollar.
el meolloGittyArenoso
Ahora que tiene un repositorio en su máquina, necesita aprender a usarlo. Entonces, avancemos un poco y digamos que ha estado trabajando un tiempo en un proyecto interesante y tiene algunos archivos en el directorio. Es hora de comprometerse y enviarlos a Github.
Agregar y comprometerse con un repositorio de Git
- git status : este comando le mostrará qué archivos no se agregaron a la lista para la próxima confirmación. En la mayoría de las aplicaciones de terminal, los archivos no agregados/agregados serán de color rojo/verde, respectivamente.
- agrega git – agregando un . al final del comando, le estás diciendo a git que incluya todo en el directorio. Si desea agregar un solo archivo, simplemente use su nombre de archivo. Como funciones.php .
- estado de git : dependiendo de si usó el archivo . o el nombre del archivo, lo que haya agregado debería ser verde ahora.
- git commit -m «agregar tres archivos vacíos» : cuando confirma estos archivos, también debe dejar un mensaje rápido para que sus compañeros de equipo (o su yo futuro) sepan exactamente qué había en ese compromiso. Las convenciones estándar de git dicen que debe ser lo más conciso y específico posible, y comenzar el mensaje usando el tiempo presente del verbo.
Su terminal tendrá una gran cantidad de texto ahora, y debería verse así. ¡Pero ahora sabes lo que significa todo esto!
Empujando a un Repositorio Git Remoto como Github
Empujar a un repositorio es aún más fácil que eso.
- estado de git : siempre debe verificar cómo se ven las cosas y asegurarse de estar en la rama correcta.
- empujar git
- Ingrese su nombre de usuario y contraseña para Github . Tenga en cuenta que el campo de contraseña permanecerá vacío, incluso mientras escribe. Está bien. Simplemente escríbalo y presione enter. Si usó SSH, omitirá este paso.
¡Puedes ir a tu cuenta de Github y revisar el repositorio, y tus archivos estarán allí, enviar mensajes y todo!
Ramificación y fusión
Los dos últimos comandos con los que deberá familiarizarse se relacionan con la ramificación y la fusión. Como dije anteriormente, trabajar en una rama mantiene segura la base de código principal, y una vez que todos los cambios sean excelentes, puede fusionarlo todo nuevamente.
Pueden ser un poco complicados, por lo que puede ser necesario presionarlos para que jueguen bien.
- git checkout -b «branch1» : este comando creará una nueva rama que titulas y te cambiará a ella como tu rama de trabajo. Combina los comandos git checkout y git branch en una práctica línea de código.
- toque impresionante.html : este es solo un comando de relleno para crear un nuevo archivo html que fusionaré nuevamente en el maestro.
- Y como antes, git status, git add awesome.html, git commit -m “create awesome.html”
- git status nuevamente te permitirá ver que todo está como debería ser.
Si intenta presionarlo antes de fusionarlo, recibirá un mensaje de que necesita establecer el origen del repositorio. Origin es una convención de nomenclatura extraña para lo que su computadora considera el repositorio remoto. Básicamente, solo le estás diciendo que sí, está bien enviar esta rama a Github como lo hizo con el maestro. Aquí hay un buen hilo sobre el origen de git de Stack Overflow.
Con eso fuera del camino, le dirá que fue a branch1 -> branch1.
Puede volver a la rama maestra con git checkout master (no hay checkout -b esta vez porque solo lo usa en la creación de una nueva rama, no en el intercambio. Confundí mis comandos en la captura de pantalla a continuación y probé git branch master No tuvo éxito porque el maestro ya existía.
- estado de git – Como siempre.
- git merge branch1 : dado que todo en esa rama está bien, podemos continuar y fusionarnos.
- Si git status nuevamente, veremos que estamos por delante de origin/master por 1 confirmación. Eso significa que no hemos impulsado todos los cambios que hemos realizado en Github.
- git push para sincronizar las cosas!
Verifique su cuenta de Github; verá que todo lo que ha hecho se refleja allí. Puede ver los diferentes mensajes de confirmación, la cantidad de ramas y confirmaciones que hemos realizado, así como también los contribuyentes al repositorio y lo que hicieron.
¡Y eso es! ¡Felicidades! Acabas de sacudir tu flujo de trabajo básico de git. Puedes hacer cosas mucho, mucho, mucho más complejas que esto con git, pero esto es bastante parecido a lo que probablemente usarás a diario cuando estés… empezando .
¡Ay, una cosa más!
El Github Repo, myfirstrepo , que he usado para este artículo todavía está activo . Siéntase libre de revisarlo, jugar con él, bifurcarlo, clonarlo o lo que crea que lo acostumbrará a usar git. ¡Divertirse! (Y gracias por aguantarme y todos mis juegos de palabras).
Imagen en miniatura del artículo por MchlSkhrv / shutterstock.com