Un confuso lío de ramas. Foto de . Brandon Green → Entendiendo Git (parte 3) — Resolviendo conflictos (¡estén atentos!) Entendiendo Git (parte 1) — Explícalo como si fuera cinco Entendiendo Git (parte 2) — Contribuyendo a un equipo Git es una herramienta poderosa, pero tiene la reputación de desconcertar a los recién llegados. No ayuda que la mayoría de las personas simplemente sean arrojadas al fondo y se espere que naden. Con el conocimiento adecuado, cualquiera puede dominar git. Una vez que empieces a entenderlo, la terminología tendrá más sentido y (eventualmente) aprenderás a amarlo. Mantente fuerte 🙏 ¿Por qué otra guía? Ya existen muchos "tutoriales de git", pero la mayoría de ellos simplemente le dicen que copie y pegue cosas específicas para realizar tareas únicas. Cualquiera que tenga un teclado puede copiar/pegar; para comprender realmente cómo funciona git y qué puede hacer por usted, necesita una comprensión un poco más profunda. También tienden a arrojarte vocabulario sin explicar lo que realmente significan las palabras. Esta guía tiene como objetivo brindarle una comprensión viable de las frases y comandos básicos que usará con frecuencia. Es imposible aprender una herramienta tan poderosa y compleja en una sola sesión, así que te animo a que te tomes tu tiempo y disfrutes el viaje. ¿Qué es git? En primer lugar, es git. Mucha gente comprensiblemente confunde los dos. es un sitio web para albergar proyectos que git. GitHub no GitHub usan Git es un tipo de de de versiones (VCS) que facilita el seguimiento de los cambios en los archivos. Por ejemplo, cuando editas un archivo, git puede ayudarte a determinar exactamente cambió, lo cambió y . sistema control qué quién por qué Es útil para coordinar el trabajo entre varias personas en un proyecto y para realizar un seguimiento del progreso a lo largo del tiempo al guardar "puntos de control". Puede usarlo mientras escribe un ensayo o para realizar un seguimiento de los cambios en las ilustraciones y los archivos de diseño. Git no es el único sistema de control de versiones que existe, pero es, con mucho, el más popular. Muchos desarrolladores de software usan git a diario, y entender cómo usarlo puede darle un gran impulso a su currículum. En proyectos complejos, donde varias personas pueden realizar cambios en los mismos archivos simultáneamente, es fácil entrar en un estado extraño. Cualquiera que haya lidiado con "conflictos de combinación" y esos símbolos desconcertantes pueden atestiguar esto. >>>>>>> ======= <<<<<<< Si comienza a comprender cómo funciona git, verá por qué ocurren los conflictos y cómo recuperarse fácilmente de estas situaciones. como obtener git Git viene instalado por defecto en muchos sistemas. Si aún no lo tienes: Puede descargar la . Lo recomendé tanto para principiantes como para usuarios avanzados. interfaz de línea de comandos (CLI) de git aquí Si prefiere usar una elegante interfaz gráfica de usuario (GUI), pruebe (para Windows y Mac). Esto será más simple de usar, pero hará que sea más difícil ver realmente lo que está pasando. GitHub Desktop Todos los ejemplos a continuación asumen que está utilizando la CLI. ℹ️ Usas la interfaz de línea de comandos escribiendo en una . Si no está familiarizado con las terminales, está bien; intente primero (o busque ayuda en Google). terminal esto Comandos comunes A continuación se muestra una serie de comandos básicos con descripciones de lo que hace cada uno. Esta sección pretende ser interactiva. Mientras lee, siéntase libre de probar los comandos usted mismo antes de continuar. Al final también habrá un ejemplo de la "vida real" con una lista de comandos que puede probar todos a la vez. Notas: Cualquier se resaltará en negrita la primera vez que se describa. Siéntase libre de buscar esos términos en el o en la para obtener más detalles. jerga glosario oficial de git guía de referencia Esta es una guía simplificada. Intenta ser lo más preciso posible mientras evita algunos de los detalles más complicados. Hay enlaces al final para más profundidad. ✨ Habrá algunas ideas nuevas en las descripciones, así que asegúrate de seguir leyendo. Estos son algunos de los comandos más comunes, aproximadamente en el orden en que los encontrará: Inicie su propio desde cero (en cualquier carpeta existente en su computadora): repositorio iniciar git Esto creará una carpeta oculta dentro de su carpeta actual: este es el "repositorio" (o ) donde git almacena todos sus datos de seguimiento internos. Ahora será posible realizar un seguimiento de cualquier cambio que realice en cualquier archivo dentro de la carpeta original. .git repositorio ✨ La carpeta original ahora se conoce como su , a diferencia del repositorio (la carpeta ) que rastrea sus cambios. en el directorio de trabajo. ¡Simple! directorio de trabajo .git Trabajas un repositorio existente: Clonar clon de git https://github.com/cooperka/emoji-commit-messages.git Esto descargará un repositorio de Internet (GitHub) a su computadora y extraerá la última del repositorio (todos los archivos) a su directorio de trabajo. De forma predeterminada, todo se guardará en una carpeta con el mismo nombre que el repositorio (en este caso ). .git instantánea emoji-commit-messages ✨ La URL que especifica aquí se denomina (el lugar desde donde se descargaron los archivos _origin_ally). Este término se utilizará más adelante. origen remoto Ver el actual de su proyecto: estado estado de Git Esto imprimirá información básica, como qué archivos se han modificado recientemente. Debe verificar su estado cada vez que esté confundido. Git imprimirá información adicional según lo que esté sucediendo actualmente para ayudarte. Cree un nuevo nombre de : sucursal rama git <nuevo-nombre-de-la-rama> Puede pensar en esto como crear un "punto de control" local (técnicamente llamado ) y darle un nombre. Es similar a hacer en un editor de texto; la nueva rama que se crea es una referencia al estado actual de su repositorio. El nombre de la rama se puede usar en varios otros comandos, como verá pronto. referencia Archivo > Guardar como… De manera similar a la bifurcación, más comúnmente guardará cada punto de control a medida que avanza en forma de (vea a continuación más adelante). confirmaciones git commit Las confirmaciones son un tipo particular de punto de control llamado . El nombre será un de números y letras de aspecto aleatorio, como . Este hash se puede usar en varios otros comandos, al igual que los nombres de las sucursales. revisión hash e093542 ✨ Esa es realmente la función central de git: guardar puntos de control (revisiones) y compartirlos con otras personas. Todo gira en torno a este concepto. Si alguna vez ha creado un punto de control para algo, podrá volver a él más tarde siempre que su carpeta esté intacta. Es mágico. Consulte si está interesado en obtener más información. .git [git reflog](https://git-scm.com/docs/git-reflog) La ramificación es un tema enorme y complejo. Escribiré más sobre esto pronto; por ahora puedes leer más si quieres. aquí una sucursal en particular: Echa un vistazo a git checkout <nombre-de-sucursal-existente> Puede pensar en esto como "reanudar" desde un punto de control existente. Todos sus archivos se restablecerán al estado en el que se encontraban en esa rama en particular. ⚠️ Tenga en cuenta que cualquier cambio en su directorio de trabajo se mantendrá. Consulte si está interesado en una forma sencilla de evitar dolores de cabeza. [git stash](https://git-scm.com/docs/git-stash) 😎 Puede usar el indicador como acceso directo para una nueva rama y luego todo en un solo paso. Esto es bastante común: -b crear comprobarlo git checkout -b <nuevo-nombre-de-sucursal> Ver las entre los puntos de control: diferencias git diff <nombre-de-sucursal> <nombre-de-otra-sucursal> Después de editar algunos archivos, simplemente puede escribir para ver una lista de los cambios que ha realizado. Esta es una buena manera de verificar dos veces su trabajo antes de confirmarlo. git diff Para cada grupo de cambios, verá el aspecto el archivo (con el prefijo y de color rojo), seguido de cómo se ve ahora (con el prefijo y de color verde). que solía tener - + Consulte más abajo para obtener ejemplos más avanzados de este comando. sus cambios para prepararse para confirmarlos: Organice git agregar <archivos> Después de editar algunos archivos, este comando marcará cualquier cambio que haya realizado como "preparado" (o "listo para confirmar"). ⚠️ Si luego va y realiza más cambios, esos nuevos cambios se organizarán automáticamente, incluso si ha cambiado los mismos archivos que antes. Esto es útil para controlar exactamente lo que comete, pero también es una gran fuente de confusión para los recién llegados. no Si alguna vez no está seguro, simplemente escriba nuevamente para ver qué está pasando. Verá "Cambios por confirmar:" seguido de los nombres de los archivos en verde. Debajo verá "Cambios no preparados para la confirmación:" seguido de los nombres de los archivos en rojo. Estos aún no están escenificados. git status 😎 Como atajo, puede usar como con cualquier otro comando de terminal. Por ejemplo: comodines git agregar README.md app/*.txt Esto agregará el archivo , así como todos los archivos en la carpeta de la que terminen en . Por lo general, solo puede escribir para agregar todo lo que ha cambiado. README.md app .txt git add --all sus cambios por etapas: Confirme git cometer Esto abrirá su editor de texto de línea de comandos predeterminado y le pedirá que escriba un . Tan pronto como guarde y salga, su confirmación se guardará localmente. mensaje de confirmación El mensaje de confirmación es importante para ayudar a otras personas a comprender qué se cambió y por qué lo cambió. Hay una breve guía que explica cómo escribir mensajes de confirmación útiles. aquí 😎 Puede usar la marca como acceso directo para escribir un mensaje. Por ejemplo: -m git commit -m "Agregar una nueva característica" su rama para cargarlo en otro lugar: Empuje git push origin <nombre-de-sucursal> Esto cargará su sucursal en el llamado (recuerde, esa es la URL definida inicialmente durante la ). remoto **origin** clone Después de un exitoso, sus compañeros de equipo podrán su rama para ver sus confirmaciones (consulte continuación). push pull git pull 😎 Como atajo, puede escribir la palabra en lugar de para usar automáticamente la rama en la que se encuentra actualmente. siempre se refiere a su último punto de control, es decir, la última confirmación en su rama actual. HEAD branch-name HEAD ✨ Como se mencionó anteriormente, todo en git se puede considerar como un punto de control. Aquí hay una lista de los tipos de puntos de control que conoce ahora (nuevamente, estos se denominan técnicamente "referencias" y "revisiones"): HEAD , por ejemplo, <branch-name> master , por ejemplo, (o para abreviar) <commit-hash> e093542d01d11c917c316bfaffd6c4e5633aba58 e093542 También hay: , por ejemplo, <tag-name> v1.0.0 stash Finalmente, los caracteres especiales como , y se pueden usar para modificar las referencias. Son bastante útiles; Obtenga más información . ^ ~ @{} aquí la información más reciente sobre un repositorio: Obtener buscar Esto descargará la información más reciente sobre el repositorio desde el (como todas las diferentes sucursales almacenadas en GitHub). origin No cambia ninguno de sus archivos locales, solo actualiza los datos de seguimiento almacenados en la carpeta . .git cambios de otra persona: Fusionar git merge <otro-nombre-de-la-rama> Esto tomará todas las confirmaciones que existen en la y las integrará en su propia rama actual. other-branch-name ⚠️ Esto utiliza cualquier dato de rama almacenado localmente, así que asegúrese de haber ejecutado primero para descargar la información más reciente. git fetch Por ejemplo, si alguien más agrega algunas confirmaciones a la rama de , puede hacer lo siguiente para descargar sus cambios y actualizar su propia rama local: master origin master git checkout master # Asegúrate de estar en la rama correcta. ✨ El nombre aquí literalmente significa el punto de control de en su computadora. Git usa esta notación para diferenciar ramas del mismo nombre (p. ej., ) ubicadas en diferentes lugares (p. ej., sus propias sucursales frente a las sucursales de ). origin/master origin/master master origin 😎 Como atajo, puede usar el comando de para y todo en un solo paso. Esto es más común que fusionar manualmente como arriba: extracción buscar fusionar maestro de origen git pull Aquí separamos las palabras y (sin una barra como arriba). No queremos usar el punto de control de en nuestra propia computadora, porque está almacenado sin conexión y probablemente esté desactualizado. En su lugar, queremos buscar directamente desde la rama del punto final remoto llamado . Estar atento; la diferencia es importante! origin master origin/master master origin Para una comprensión más profunda de cómo funciona la fusión y cómo se resuelven los (con imágenes y gráficos divertidos), consulte los . Esto también se cubrirá extensamente en la parte 3 de esta serie. conflictos documentos oficiales de fusión ejemplo de la vida real Aquí hay una serie de comandos que hipotéticamente podrían ejecutarse mientras se desarrolla una característica real. Vea si puede averiguar qué haría cada uno, luego pruébelo usted mismo y compruébelo. git clone https://github.com/cooperka/emoji-commit-messages.gitcd emoji-commit-messagesgit statusgit checkout -b my-new-featureecho "Este es un nuevo archivo genial" > my-file.txtgit statusgit add - -allgit statusgit diff HEADgit commit -m “Agregar mi-archivo.txt”git statusgit loggit push origin HEADgit checkout mastergit pull La mayoría de estos comandos tienen parámetros adicionales que puede pasar para personalizarlos y versiones abreviadas para abreviar, todo lo cual hace que todo sea más interesante (léase: confuso). Por lo general, hay más de una forma de realizar una tarea determinada. ¿Ahora que? ¡Ahora sabes todo lo que hay que saber sobre git! …es broma, esto es solo la punta del iceberg. Hay mucho más que debe comprender antes de poder afirmar que es un experto, pero por ahora, al menos tiene los conceptos básicos para poder trabajar con un equipo y comprender la jerga. Una vez que comprenda estos comandos básicos, puede y debe continuar aprendiendo más en o en esta . el sitio web de git guía más avanzada Si encuentra esto útil, ayúdenos otros también puedan encontrarlo. tocando el botón 👏 tantas veces como desee para que Gracias, y estén atentos a la . Déjame saber en los comentarios si hay algún tema específico que te interese. segunda parte