{"id":42,"date":"2025-03-08T11:58:47","date_gmt":"2025-03-08T15:58:47","guid":{"rendered":"https:\/\/blog.jure.org.ve\/?p=42"},"modified":"2025-03-08T11:59:39","modified_gmt":"2025-03-08T15:59:39","slug":"primeros-pasos-con-git-lo-esencial-para-sobrevivir-en-un-repositorio","status":"publish","type":"post","link":"https:\/\/juredev.com\/blog\/2025\/03\/primeros-pasos-con-git-lo-esencial-para-sobrevivir-en-un-repositorio\/","title":{"rendered":"Primeros Pasos con Git: Lo Esencial para Sobrevivir en un Repositorio"},"content":{"rendered":"\n<p>Cuando empiezas a trabajar en proyectos con c\u00f3digo, solo o en equipo, pronto te encuentras con un detalle: \u00bfc\u00f3mo sigues el rastro de los cambios sin que todo sea un caos? Aqu\u00ed entra <a href=\"https:\/\/git-scm.com\/\">Git<\/a>, tu salvavidas. Piensa en Git como un rompecabezas gigante (<strong>el repo<\/strong>) donde cada uno arma su parte (<strong>rama<\/strong>) sin desordenar el dise\u00f1o principal. Cuando tus piezas est\u00e1n listas (<strong>commit<\/strong>), las sumas al tablero compartido (<strong>push<\/strong>), Git se encarga de encajar las piezas sin que haya conflictos, y si los hay, te avisa para que los ajustes manualmente. Es un sistema de control de versiones que te deja rastrear cada cambio, trabajar junto a otros sin imponerse al trabajo de los dem\u00e1s y hasta retroceder si algo falla.<\/p>\n\n\n\n<p>Antes de iniciar en los comandos, aqu\u00ed van los conceptos clave para que no te pierdas:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Repositorio (o repo):<\/strong> Donde se guarda todo el historial del proyecto.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Rama:<\/strong> Un espacio aparte para probar o crear sin tocar el historial principal.<\/li>\n\n\n\n<li><strong>Commit:<\/strong> Guardar tus cambios con un mensaje que dice qu\u00e9 hiciste.<\/li>\n\n\n\n<li><strong>\u00c1rea de preparaci\u00f3n (staging area):<\/strong> Donde preparas lo que vas a guardar.<\/li>\n<\/ul>\n\n\n\n<p>Recuerda que Git lo usas en tu computadora de manera local, pero en sitios como <a href=\"https:\/\/github.com\/\">GitHub<\/a> o <a href=\"https:\/\/about.gitlab.com\/\">GitLab<\/a>, que son como un deposito online repositorios, los usas para compartir tu trabajo y colaborar con otros.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Configuraci\u00f3n Inicial<\/h2>\n\n\n\n<p>Antes de comenzar a trabajar con Git, es fundamental configurarlo con tus datos de usuario. Esto garantiza que cada commit est\u00e9 asociado a la persona que realiz\u00f3 el cambio. Adem\u00e1s, se recomienda verificar que Git est\u00e9 correctamente instalado.<\/p>\n\n\n\n<p>Para configurar tu nombre y correo, ejecuta:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit config --global user.name \"Tu Nombre\"\ngit config --global user.email \"tuemail@ejemplo.com\"\n<\/code><\/pre>\n\n\n\n<p>Verifica la instalaci\u00f3n de Git con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit --version\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">2. Comandos B\u00e1sicos de Git<\/h2>\n\n\n\n<p><strong>2.1 Clonaci\u00f3n de Repositorios<\/strong><\/p>\n\n\n\n<p>Si te interes\u00f3 un proyecto desde un sitio como GitHub, para bajarlo a tu computador, usa <strong>git clone<\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit clone https:\/\/github.com\/usuario\/repositorio.git\n<\/code><\/pre>\n\n\n\n<p><strong>2.2 Gesti\u00f3n de Ramas<\/strong><\/p>\n\n\n\n<p>Las ramas te permiten trabajar en un espacio separado sin afectar la versi\u00f3n principal del proyecto.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Crear una nueva rama:<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit branch nueva-rama\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cambiar de rama:<\/strong><\/li>\n<\/ul>\n\n\n\n<p>En documentaci\u00f3n reciente, ver\u00e1s <strong>git switch<\/strong> como la forma sugerida de saltar entre ramas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit switch nueva-rama\n<\/code><\/pre>\n\n\n\n<p>Yo sigo usando <strong>git checkout<\/strong> por costumbre:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit checkout nueva-rama\n<\/code><\/pre>\n\n\n\n<p>Ambos comandos funcionan bien, <em>switch<\/em> es m\u00e1s claro e intuitivo, pero no hay problema si prefieres seguir usando el cl\u00e1sico <em>checkout<\/em>.<\/p>\n\n\n\n<p><strong>2.3 Estado del Repositorio<\/strong><\/p>\n\n\n\n<p>Para ver el estado de los archivos y detectar cambios pendientes, o si es el caso, tambi\u00e9n indica si hay archivos sin seguimiento. Se utiliza:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit status\n<\/code><\/pre>\n\n\n\n<p><strong>2.4 Preparar Cambios<\/strong><\/p>\n\n\n\n<p>Antes de guardar, indica qu\u00e9 cambios van al \u00e1rea de preparaci\u00f3n:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para a\u00f1adir un archivo espec\u00edfico:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit add archivo.txt\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para a\u00f1adir todos los archivos modificados:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit add .\n<\/code><\/pre>\n\n\n\n<p><strong>2.5 Deshacer cambios antes de confirmar<\/strong><\/p>\n\n\n\n<p>Te diste cuenta que necesitas revertir un cambio en tu espacio de trabajo, sin borrar cambios en el archivo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit restore --staged archivo.txt\n<\/code><\/pre>\n\n\n\n<p>O en otro caso quieres descartar completamente los cambios en el archivo, puedes usar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit restore archivo.txt\n<\/code><\/pre>\n\n\n\n<p><strong>2.6 Confirmar Cambios<\/strong><\/p>\n\n\n\n<p>Una vez preparados los cambios, se confirma el <em>commit<\/em> con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit commit -m \"Descripci\u00f3n del cambio\"\n<\/code><\/pre>\n\n\n\n<p><strong>2.7 Sincronizaci\u00f3n con Repositorios Remotos<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Subir cambios al repositorio remoto:<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit push origin main\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Descargar e integrar cambios remotos:<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit pull origin main\n<\/code><\/pre>\n\n\n\n<p>Toma en cuenta que <strong>git pull<\/strong> fusiona autom\u00e1ticamente los cambios remotos. Si solo deseas descargarlos para revisarlos antes, puedes usar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit fetch origin\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3. Comandos Avanzados<\/h2>\n\n\n\n<p><strong>3.1 Revertir Cambios<\/strong><\/p>\n\n\n\n<p>Si necesitas deshacer un <em>commit<\/em>, Git ofrece la opci\u00f3n de revertir los cambios:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit revert &lt;commit-hash>\n<\/code><\/pre>\n\n\n\n<p>Toma en cuenta que <em>revert<\/em> crea un nuevo <em>commit<\/em> que revierte el anterior en lugar de modificar el historial.<\/p>\n\n\n\n<p><strong>3.2 Fusi\u00f3n de Ramas<\/strong><\/p>\n\n\n\n<p>Para integrar los cambios de una rama en otra, puedes utilizar la fusi\u00f3n (<em>merge<\/em>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit merge feature-rama\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4. Caso Pr\u00e1ctico: Resoluci\u00f3n de Conflictos en un Merge<\/h2>\n\n\n\n<p><strong>4.1 Escenario<\/strong><\/p>\n\n\n\n<p>Imagina que tienes dos ramas: main y feature-navbar. Ambas ramas contienen cambios en el mismo archivo, por ejemplo, index.html.<\/p>\n\n\n\n<p><strong>4.2 Generaci\u00f3n del Conflicto<\/strong><\/p>\n\n\n\n<p>Al intentar fusionar feature-navbar en main:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit checkout main\ngit merge feature-navbar\n<\/code><\/pre>\n\n\n\n<p>Git detectar\u00e1 las diferencias que tienen conflicto y detendr\u00e1 la fusi\u00f3n, indicando que existen conflictos.<\/p>\n\n\n\n<p><strong>4.3 Identificaci\u00f3n del Conflicto<\/strong><\/p>\n\n\n\n<p>Para identificar los archivos en conflicto, utiliza:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit status\n<\/code><\/pre>\n\n\n\n<p>Luego, al abrir index.html, encontrar\u00e1s secciones marcadas de la siguiente manera:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD\n&lt;!-- Cambios en main -->\n=======\n&lt;!-- Cambios en feature-navbar -->\n>>>>>>> feature-navbar\n<\/code><\/pre>\n\n\n\n<p><strong>4.4 Resoluci\u00f3n del Conflicto<\/strong><\/p>\n\n\n\n<p>Para resolver el conflicto, edita manualmente el archivo combinando los cambios que deseas conservar. Una vez resuelto, elimina los marcadores conflictivos (&lt;&lt;&lt;&lt;&lt;&lt;&lt;, =======, >>>>>>), guarda el archivo y a\u00f1ade la versi\u00f3n corregida al \u00e1rea de preparaci\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit add index.html\n<\/code><\/pre>\n\n\n\n<p>Finaliza la fusi\u00f3n confirmando los cambios:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\ngit commit -m \"Resuelve conflictos entre main y feature-navbar\"\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">5. Conclusi\u00f3n<\/h2>\n\n\n\n<p>Con esta gu\u00eda ya manejas lo esencial de Git: configurarlo, trabajar con repos, ramas y commits, y hasta resolver conflictos como experto. Saber manejar esos enredos es fundamental para que todo fluya, sobre todo en equipo.<\/p>\n\n\n\n<p>Si quieres ir m\u00e1s all\u00e1, la <a href=\"https:\/\/git-scm.com\/doc\">documentaci\u00f3n oficial<\/a> y recursos online est\u00e1n llenos de trucos para seguir aprendiendo.<\/p>\n\n\n\n<p>Conocer Git te da control de tu c\u00f3digo y simplifica trabajar en equipo. Practica un poco m\u00e1s y ver\u00e1s c\u00f3mo todo fluye f\u00e1cil; dejar\u00e1s de solo sobrevivir para convertirte en el rey de tus repos. \u00a1Sigue codificando y explorando la potencia de GIT!. Sigamos codificando.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando empiezas a trabajar en proyectos con c\u00f3digo, solo o en equipo, pronto te encuentras con un detalle: \u00bfc\u00f3mo sigues el rastro de los cambios sin que todo sea un caos? Aqu\u00ed entra Git, tu salvavidas. Piensa en Git como un rompecabezas gigante (el repo) donde cada uno arma su parte (rama) sin desordenar el [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[16],"class_list":["post-42","post","type-post","status-publish","format-standard","hentry","category-desarrollo","tag-git"],"_links":{"self":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts\/42","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/comments?post=42"}],"version-history":[{"count":0,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/posts\/42\/revisions"}],"wp:attachment":[{"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/media?parent=42"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/categories?post=42"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/juredev.com\/blog\/wp-json\/wp\/v2\/tags?post=42"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}