Git y Github: una guía para principiantes para novatos completos

Publicado: 2017-08-15

A pesar de lo que nos digan la televisión y el cine, la vida como desarrollador de software no incluye sentarse en una habitación oscura, nuestro teclado iluminado solo por el resplandor del monitor, la idea de interactuar con otro ser humano repulsivo. No, la vida como desarrollador de software es social y colaborativa, a veces hasta el punto de la frustración. Por eso tenemos git y Github.

Git es un software de control de versiones que simplifica enormemente la colaboración con los compañeros de equipo ... una vez que ha superado la curva de aprendizaje inicial. Puede ser intimidante, ¡pero por eso estoy aquí!

¿Qué es Git?

Bueno, no es solo la forma en que los sureños ahuyentamos a las alimañas de nuestros porches, te lo diré.

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 ejecutes Linux para usar git; también puedes usarlo en Windows y Mac.

Git le permite realizar un seguimiento fácil de cada revisión que usted y su equipo hacen durante el desarrollo de su software. Todos comparten un repositorio de código en el que se trabaja de forma independiente y luego se vuelve a fusionar. Tampoco es necesario que esté 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 prácticamente obligatorio) porque puede volver a cualquier versión anterior de su código, ramificarse y desarrollar una función específica sin afectar a nada ni a nadie más, y mantenerse a salvo 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á usando git, está codificando con una mano atada a la espalda.

Vocabulario requerido

Cuando comienzas a usar git, 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úper rápido.

Repositorio:

A menudo denominado repositorio . Un repositorio es la colección de archivos y carpetas que estás usando git para rastrear. El repositorio consta del historial completo de los cambios de su equipo en el proyecto. Es la gran caja en la que tú y tu equipo lanzan tu código.

Github:

La solución de almacenamiento remoto más popular para repositorios de 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 de forma predeterminada, pero las cuentas pagas pueden tener cuentas privadas.

Cometer:

Piense en esto como salvar 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 comprometer la mantequilla. Comprometerse arroja sus archivos a la cápsula del tiempo, y empujar es lo que lanza la cápsula al espacio. Empujar es esencialmente sincronizar sus confirmaciones con la nube (nuevamente, probablemente Github). También puede enviar varias confirmaciones a la vez. Puede trabajar sin conexión, realizar un montón de trabajo y luego llevarlo todo a Github cuando vuelva a la civilización con ese dulce y dulce wifi.

Rama:

Puedes pensar en tu repositorio de git como un árbol. El tronco del árbol, el software que se activa, se llama Master Branch. Ese es el que se activa. Las ramas de ese árbol son, bueno, llamadas ramas. Estas son instancias separadas del código que se deriva de la base de código principal. Puede optar por una única función o un parche experimental. Al ramificarse, puede preservar la integridad del software y tener una manera de revertir si hace algo totalmente loco. También le permite trabajar en su tarea sin tropezar con el camino de su equipo (o ellos con el suyo).

Unir:

Cuando una rama está pulida, libre de errores (por lo que puede decir, al menos) y lista para convertirse en parte de la base de código 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 parte oficial del código base. Cualquiera que se bifurque desde el punto de fusión también tendrá este código en su bifurcación.

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. Deberá hacer esto por varias razones, entre las que se incluyen comenzar en medio de un proyecto con un nuevo equipo, intercambiar estaciones de trabajo o comenzar de nuevo desde un repositorio dañado.

Tenedor:

La bifurcación se parece mucho 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 función se utiliza principalmente para tomar una base de código existente y tomar una dirección completamente nueva con ella, lo que ocurre mucho en el software de código abierto; los desarrolladores ven una idea básica que funciona, pero quieren seguir un camino diferente. La bifurcación permite que eso suceda. También puedes jugar en el repositorio de otro desarrollador como si fuera tu propia caja de arena personal. Y si haces algo que crees que les puede gustar, puedes 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 la solicitud de extracción se rechaza por cualquier motivo, el denegador podrá dar su opinión sobre por qué se rechazó la solicitud y qué puede hacer para que sea aceptada.

Introducción y comandos obligatorios

Eso no estuvo tan mal, ¿verdad?

Derecha. Ahora que tienes una idea clara de lo que es git, es hora de profundizar y ensuciarte las manos.

Debo aprovechar esta oportunidad para señalar, sin embargo, que voy a asumir que estás usando la línea de comando para interactuar con git. Seguro que hay clientes gráficos GIT (y Github incluso le permite hacer casi todo a través de su interfaz web), pero para los propósitos de este post no 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 lo que vamos a hacer también.

Cómo instalar Git

Git (probablemente) no vino instalado en su computadora, así que tenemos que conseguirlo 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 sencillo. Descarga el instalador y lo ejecuta.

En Mac, solo necesita abrir la terminal y escribir git . Si git no está instalado, verá esto:

Una vez que haga clic en Instalar, estará listo.

¿Ver? ¡Muy facil!

Usando Git

Aquí es donde comienza la diversión. Ahora que tiene git instalado, es hora de… ¡ git-r-done! ¡Ja! Pero realmente es hora de profundizar y aprender a comenzar a usar esta increíble pieza de hechicería de línea de comandos. ¿Y qué mejor lugar para comenzar que Github?

Así que dirígete y regístrate para obtener tu nueva cuenta de Github (o inicia sesión si ya tienes una, y estaré contigo en un segundo).

Github es gratuito para los repositorios públicos y puedes tener los privados por un precio. (Para su información: puede obtener repositorios privados gratuitos en Bitbucket, que es un lugar menos conocido pero impresionante). 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 su correo electrónico y todas esas cosas divertidas.

Primero querrás 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 preocupo por una licencia o .gitignore en este repositorio. Debido a que este no es un software real, no tengo que preocuparme por eso, pero en los casos de producción, .gitignore le permite, obviamente, ignorar los 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 debería utilizar para conservar 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. Los 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 mediante 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". Haga clic en él y verá esto:

Ya que estamos clonando, podemos ignorar todo excepto la parte sobre Clonación con HTTPS. No tendrás que configurar nada. Solo necesitará 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, busquen y abran un programa llamado Windows Powershell. También sugiero que hagan clic con el botón derecho y seleccionen "Ejecutar como administrador").

El primer comando que debe aprender es ls . Esto listará todo en el directorio actual. Para simplificar las cosas, hagamos que nuestra carpeta de desarrollo se encuentre en el directorio de inicio de la computadora. Puede usar mkdir dev para crear un directorio llamado dev . Bastante sencillo, ¿verdad? Si LS nuevo, verá la nueva carpeta en la lista.

Luego, desea moverse a su nuevo directorio usando cd dev , que es el comando para cambiar de directorio . ¡Mira, la línea de comandos no da miedo en absoluto! Si necesita volver al directorio anterior, simplemente use cd ...

Una vez que estás dentro de la nueva carpeta dev, que es hora de GIT este partido comenzado. 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 de Git desde Github

  • clon de git https://github.com/bjk1337/myfirstrepo.git
  • ls
  • cd myfirstrepo - o como sea que hayas nombrado 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 nitty Gitty Arenoso

Ahora que tiene un repositorio en su máquina, debe aprender a usarlo. Así que avancemos un poco y digamos que has estado trabajando un tiempo en un proyecto genial y tienes algunos archivos en el directorio. Es hora de comprometerse y enviarlos a Github.

Adición y confirmación de un repositorio de Git

  • git status : este comando le mostrará qué archivos no se han agregado 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.
  • git add. - 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 functions.php .
  • git status : dependiendo de si usó. o el nombre del archivo, lo que sea que agregaste debería ser verde ahora.
  • git commit -m "agregar tres archivos vacíos" : cuando confirme estos archivos, también debe dejar un mensaje rápido para que sus compañeros de equipo (o su yo futuro) sepan exactamente lo que había en ese compromiso. Las convenciones estándar de git dicen que debes ser lo más conciso y específico posible, y comenzar el mensaje usando el tiempo presente del verbo.

Su terminal tendrá mucho texto ahora, y debería verse así. ¡Pero ahora sabes lo que significa todo!

Empujar a un repositorio Git remoto como Github

Empujar a un repositorio es incluso más fácil que eso.

  • git status : siempre debes verificar cómo se ven las cosas y asegurarte de que estás en la rama correcta.
  • git push
  • 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.

¡Puede ir a su cuenta de Github y verificar el repositorio, y sus archivos estarán allí, enviar mensajes y todo!

Ramificación y fusión

Los dos últimos comandos con los que deberá estar familiarizado tratan sobre 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 un poco de insistencia para que jueguen bien.

  • git checkout -b “branch1” - Este comando creará una nueva rama que usted titulará y le cambiará a ella como su rama de trabajo. Combina los comandos git checkout y git branch en una práctica línea de código.
  • touch awesome.html : este es solo un comando de relleno para crear un nuevo archivo html que fusionaré con el maestro.
  • Y como antes, obtendrás 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 fusionar, recibirá un mensaje de que necesita establecer el origen del repositorio. Origin es una extraña convención de nomenclatura para lo que su computadora considera el repositorio remoto. Entonces, básicamente, solo le está 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 (esta vez no hay checkout -b porque solo lo usa en la creación de una nueva rama, no intercambiando. Tengo mis comandos mezclados en la captura de pantalla a continuación y probé git branch master No tuvo éxito porque el maestro ya existía.

  • git status - Como siempre.
  • git merge branch1 : dado que todo en esa rama está bien, podemos continuar y fusionar.
  • Si volvemos a git status , veremos que estamos por delante del origen / maestro en 1 confirmación. Eso significa que no hemos introducido 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, el número de ramas y confirmaciones que hemos realizado, así como los contribuyentes al repositorio y lo que hicieron también.

¡Y eso es! ¡Felicidades! Acabas de sacudir tu flujo de trabajo básico de git. Puedes hacer cosas mucho, mucho más complejas que esto con git, pero esto está bastante cerca de lo que probablemente usarás a diario cuando estés ... empezando .

¡Oh, una cosa más!

El Github Repo, myfirstrepo , que he usado para este artículo todavía está activo . Siéntete libre de comprobarlo, jugar con él, bifurcarlo, clonarlo o lo que creas que te acostumbrará a usar git. ¡Divertirse! (Y gracias por soportarme y todos mis juegos de palabras).

Imagen en miniatura del artículo de MchlSkhrv / shutterstock.com