<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Nora Gonzalo Ciordia - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Descubre miles de cursos de programación escritos por expertos. Aprende Desarrollo Web, Ciencia de Datos, DevOps, Seguridad y obtén asesoramiento profesional para desarrolladores. ]]>
        </description>
        <link>https://www.freecodecamp.org/espanol/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Nora Gonzalo Ciordia - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 06 Jun 2026 19:41:50 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/author/nora/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Validación Básica de Formularios en JavaScript ]]>
                </title>
                <description>
                    <![CDATA[ En el pasado, la validación de formularios solía ocurrir en el servidor, después de que una persona hubiera introducido toda su información y hubiera presionado el botón de envío. Si la información era incorrecta o faltaba algo, el servidor tenía que enviar todo de vuelta junto con un mensaje indicando ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/validacion-basica-de-formularios-en-javascript/</link>
                <guid isPermaLink="false">5fea3cfc8c7cd154bb980e9e</guid>
                
                    <category>
                        <![CDATA[ Formulario Validaciones ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Nora Gonzalo Ciordia ]]>
                </dc:creator>
                <pubDate>Wed, 27 Jan 2021 13:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/01/photo-1554224155-1696413565d3-1-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>En el pasado, la validación de formularios solía ocurrir en el servidor, después de que una persona hubiera introducido toda su información y hubiera presionado el botón de envío.</p><p>Si la información era incorrecta o faltaba algo, el servidor tenía que enviar todo de vuelta junto con un mensaje indicando a esa persona que corrigiera el formulario antes de enviarlo de nuevo. </p><p>Era un proceso largo y suponía una gran carga para el servidor. </p><p>Hoy en día, JavaScript proporciona numerosas formas de validación de los datos de un formulario en el navegador antes de ser enviado al servidor. </p><p>Aquí está el código HTML que utilizaremos en los siguientes ejemplos:</p><pre><code class="language-html">&lt;html&gt;
&lt;head&gt;
  &lt;title&gt;Validación de Formularios&lt;/title&gt;
  &lt;script type="text/javascript"&gt;
    // la Validación del Formulario irá aquí
  &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
  &lt;form id="formulario"&gt;
    &lt;table cellspacing="2" cellpadding="2" border="1"&gt;
      &lt;tr&gt;
        &lt;td align="right"&gt;Nombre de Usuario&lt;/td&gt;
        &lt;td&gt;&lt;input type="text" id="usuario" /&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td align="right"&gt;Email&lt;/td&gt;
        &lt;td&gt;&lt;input type="text" id="email" /&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;&lt;/td&gt;
        &lt;td&gt;&lt;input type="submit" value="Submit" id="btn-enviar" /&gt;&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre><h2 id="validaci-n-b-sica"><strong><strong>Valida</strong>c<strong>ión</strong> Básica</strong></h2><p>Este tipo de validación implica chequear todos los campos obligatorios y asegurar que estén correctamente cumplimentados.</p><p>Aquí te dejo un ejemplo básico de una función de <code>validación</code> que &nbsp;muestra una alerta si los campos de nombre de usuario y email están en blanco, de otro modo devuelve true (verdadero): </p><pre><code class="language-js">const btnEnviar = document.getElementById('btn-enviar');

const validación = (e) =&gt; {
  e.preventDefault();
  const nombreDeUsuario = document.getElementById('usuario');
  const direcciónEmail = document.getElementById('email');
  if (usuario.value === "") {
    alert("Por favor, escribe tu nombre de usuario.");
    usuario.focus();
    return false;
  }
  if (email.value === "") {
    alert("Por favor, escribe tu correo electrónico");
    email.focus();
    return false;
  }
  
  return true;
}

submitBtn.addEventListener('click', validate);
</code></pre><p>Pero, ¿qué pasaría si alguien introduce un texto al azar como si fuera su dirección de correo electrónico? Actualmente, la función <code>validación</code> seguiría devolviendo true porque el campo no está vacío aunque no sea una dirección de correo válida. (texto aclaración añadida para que quede claro el concepto) Como puedes imaginar, enviar datos incorrectos al servidor puede generar problemas. </p><p>Es aquí donde entra en el juego la validación del formato de datos.</p><h2 id="validaci-n-del-formato-de-datos"><strong>Validación del Formato de Datos</strong></h2><p>Este tipo de validación mira realmente los valores del formulario y verifica que sean correctos.</p><p>La validación de las direcciones de correo electrónico es sumamente difícil - hay un gran número de direcciones de correo electrónico y alojamientos legítimos, y es imposible averiguar todas las combinaciones de caracteres válidas. </p><p>Dicho esto, hay algunos factores clave que son comunes en todas las direcciones de correo electrónico válidos: </p><ul><li>Un correo debe contener una @ y al menos un punto (.)</li><li>La @ no puede ser el primer carácter del correo</li><li>Él (.) debe ir posicionando al menos un carácter después de la @</li></ul><p>Teniendo esto en mente, posiblemente algunos desarrolladores utilicen el regex para determinar si un correo electrónico es válido o no. </p><pre><code class="language-js">const emailVálido = email =&gt; {
  return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
}

emailVálido('free@code@camp.org') // false
emailVálido('quincy@freecodecamp.org') // true</code></pre><p>Añadido al código del último ejemplo, quedaría así: </p><pre><code class="language-js">const btnEnviar = document.getElementById('btn-enviar');

const validación = (e) =&gt; {
  e.preventDefault();
  const nombreDeUsuario = document.getElementById('usuario');
  const direcciónEmail = document.getElementById('email');
  if (usuario.value === "") {
    alert("Por favor, escribe tu nombre de usuario.");
    usuario.focus();
    return false;
  }
    
  if (email.value === "") {
    alert("Por favor, escribe tu correo electrónico");
    email.focus();
    return false;
  }

  if (!emailVálido(email.value)) {
    alert("Por favor, escribe un correo electrónico válido");
    emailAddress.focus();
    return false;
  }
  
  return true; //Se pueden enviar los datos del formulario al servidor
}

const emailVálido = email =&gt; {
  return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
}

submitBtn.addEventListener('click', validate);
</code></pre><h2 id="restricciones-de-formulario-de-html5"><strong>Restricciones de Formulario de <strong>HTML5 </strong></strong></h2><p>Algunas de las restricciones comúnmente usadas por HTML5 &nbsp;para <code>&lt;input&gt;</code> son los atributos <code>type</code> &nbsp;(p.ej. <code>type="password"</code>), <code>maxlength</code>, <code>required</code> y <code>disabled</code>.</p><p>Una restricción de uso menos común es el atributo <code>pattern</code> quien toma una expresión regular de JavaScript.</p><h2 id="m-s-informaci-n"><strong><strong>Má</strong>s<strong> Informa</strong>c<strong>ión</strong></strong></h2><ul><li><a href="https://developer.mozilla.org/es/docs/Learn/HTML/Forms/Validacion_formulario_datos">Validación de formularios de datos | MDN</a></li><li><a href="https://developer.mozilla.org/es/docs/HTML/HTML5/Validacion_de_restricciones">Validación de restricciones | MDN</a></li></ul><p>Traducido del artículo - <strong><a href="https://www.freecodecamp.org/news/basic-form-validation-in-javascript/">Basic Form Validation in JavaScript</a></strong></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ JavaScript Date Now – Cómo obtener la fecha actual con JavaScript ]]>
                </title>
                <description>
                    <![CDATA[ Muchas de las aplicaciones que construirás tendrán algún componente del tipo fecha, ya sea por la creación de la fecha de un recurso, o por una marca temporal (timestamp) de alguna actividad. Tratar con formatos de fechas y marcas de tiempo puede resultar agotador. En esta guía encontrarás cómo obtener ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/javascript-date-now-como-obtener-la-fecha-actual-con-javascript/</link>
                <guid isPermaLink="false">5fe713aa8c7cd154bb97e9b7</guid>
                
                    <category>
                        <![CDATA[ JavaScript ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Nora Gonzalo Ciordia ]]>
                </dc:creator>
                <pubDate>Fri, 22 Jan 2021 14:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/01/photo-1506784365847-bbad939e9335-1-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Muchas de las aplicaciones que construirás tendrán algún componente del tipo fecha, ya sea por la creación de la fecha de un recurso, o por una marca temporal (timestamp) de alguna actividad.</p><p>Tratar con formatos de fechas y marcas de tiempo puede resultar agotador. En esta guía encontrarás cómo obtener la fecha de hoy en varios formatos con JavaScript. </p><h2 id="objeto-date-fecha-de-javascript"><strong>Objeto Date (fecha) de <strong>JavaScript</strong></strong></h2><p>JavaScript tiene un objeto &nbsp;<code>Date</code> &nbsp;integrado que almacena la fecha y la hora y provee de métodos para manejarlos.</p><p>Para crear una nueva instancia del objeto <code>Date</code>, utiliza la palabra clave <code>new</code> :</p><pre><code class="language-js">const fecha = new Date();</code></pre><p>El objeto <code>Date</code> contiene un <code>Number</code>(número) que representa los milisegundos pasados desde el Epoch (fecha de referencia), que es el 1 de enero de 1970. &nbsp;</p><p>Puedes convertir una string al constructor <code>Date</code> para crear un objeto con una fecha específica:</p><pre><code class="language-js">const fecha = new Date('Jul 12 2011');</code></pre><p>Para obtener el año actual, utiliza el método de instancia <code>getFullYear()</code> del objeto <code>Date</code> . El método <code>getFullYear()</code> devuelve el año de la fecha especificada en el constructor &nbsp;<code>Date</code></p><pre><code class="language-js">const añoActual = fecha.getFullYear();
console.log(añoActual); //2020</code></pre><p>Así mismo, existen métodos para obtener el día y el mes en los que estamos actualmente: </p><pre><code class="language-js">const hoy = fecha.getDate();
const mesActual = fecha.getMonth() + 1; </code></pre><p>El método <code>getDate()</code> devuelve el día del mes en el que estamos (1-31).</p><p>El método <code>getMonth()</code> devuelve el mes de la fecha especificada. Un punto a tener en cuenta acerca del método <code>getMonth()</code> es que devuelve valores indexados (0-11) donde el 0 es enero y el 11 es diciembre. Por tanto, añadiéndole 1 normalizamos el valor del mes.</p><h2 id="date-now"><strong><strong>Date now</strong></strong></h2><p><code>now()</code> es un método estático del objeto <code>Date</code> . Devuelve el valor en milisegundos que representa el tiempo transcurrido desde el Epoch. Puedes pasar los milisegundos devueltos del método <code>now()</code> dentro del constructor <code>Date</code> para crear una instancia de un nuevo objeto <code>Date</code>: </p><pre><code class="language-js">const tiempoTranscurrido = Date.now();
const hoy = new Date(tempoTranscurrido);</code></pre><h2 id="formateando-date"><strong><strong>Format</strong>eando<strong> Date</strong></strong></h2><p>Puedes formatear la fecha en múltiples formatos (GMT, ISO, y demás) utilizando los métodos del objeto <code>Date</code>. </p><p>El método <code>toDateString()</code> devuelve la fecha en un formato legible por un humano: </p><pre><code class="language-js">hoy.toDateString(); // "Sun Jun 14 2020"</code></pre><p>El método <code>toISOString()</code> devuelve la fecha siguiendo con el Formato Extendido de ISO 8601:</p><pre><code class="language-js">hoy.toISOString(); // "2020-06-13T18:30:00.000Z"</code></pre><p>El método <code>toUTCString()</code> devuelve la fecha en el formato según la zona horaria UTC:</p><pre><code class="language-js">hoy.toUTCString(); // "Sat, 13 Jun 2020 18:30:00 GMT"</code></pre><p>El método <code>toLocaleDateString()</code> devuelve la fecha en un formato sensible a la localización, adaptándose así al idioma y formato del lugar donde te encuentres: </p><pre><code class="language-js">hoy.toLocaleDateString(); // "14/6/2020"</code></pre><p>Puedes encontrar una referencia completa de los métodos de <code>Date</code> en la <a href="https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Date">documentación oficial de MDN</a>. </p><h2 id="funci-n-para-formatear-a-medida-la-fecha"><strong>Función para formatear a medida la fecha </strong></h2><p>Aparte de los formatos ya mencionados en la sección de más arriba, tu aplicación puede tener un formato diferente de datos. Puede ser en el formato <code>yy-dd-mm</code>, <code>yyyy-dd-mm</code>, <code>dd-mm-yy</code> o de cualquier otro. &nbsp;</p><p>Para abordar este problema, conviene crear una función reutilizable que podremos usar en función de que la necesitemos en todos nuestros proyectos.</p><p>Por tanto, en esta sección, vamos a crear una función de utilidad que nos devuelva la fecha en el formato que le indiquemos en el argumento:</p><pre><code class="language-js">const hoy = new Date();

function formatoFecha(fecha, formato) {
	//
}

formatoFecha(hoy, 'dd/mm/yy');</code></pre><p>Necesitas reemplazar las strings "dd", "mm" y "yy" con los respectivos valores del día, mes y año del formato pasado en la string que pasamos en el argumento.</p><p>Para hacer eso puedes usar el método <code>replace()</code> como te muestro aquí abajo: </p><pre><code class="language-js">formato.replace('mm', fecha.getMonth() + 1);</code></pre><p> &nbsp;Pero esto dará lugar a un encadenamiento de métodos y dificultará el mantenimiento a medida que intentas hacer que la función sea más flexible:</p><pre><code class="language-js">formato.replace('mm', fecha.getMonth() + 1)
    .replace('yy', fecha.getFullYear())
	.replace('dd', fecha.getDate());</code></pre><p>En lugar de usar métodos de encadenamiento, puedes hacer uso de expresiones regulares con el método <code>replace()</code>.</p><p>Primero, crea un objeto que represente un par clave-valor del substring con su respectivo valor: </p><pre><code class="language-js">const formatoMap = {
    dd: fecha.getDate(),
    mm: fecha.getMonth() + 1,
    yy: fecha.getFullYear().toString().slice(-2),
    yyyy: fecha.getFullYear()
};</code></pre><p>Después, usa una expresión regular para hacer coincidir y reemplazar las strings: </p><pre><code class="language-js">fechaFormateada = formato.replace(/mm|dd|yy|yyy/gi, matched =&gt; map[matched]);</code></pre><p>La función completa se ve así: </p><pre><code class="language-js">function formatoFecha(fecha, formato) {
    const map = {
        dd: fecha.getDate(),
        mm: fecha.getMonth() + 1,
        yy: fecha.getFullYear().toString().slice(-2),
        yyyy: fecha.getFullYear()
    }

    return formato.replace(/dd|mm|yy|yyy/gi, matched =&gt; map[matched])
}</code></pre><p>Puedes también añadir la habilidad de formatear las marcas de tiempo a la función.</p><h2 id="conclusi-n"><strong><strong>Conclusión</strong></strong></h2><p>Espero que ahora entiendas mejor el objeto <code>Date</code> de JavaScript. Puedes usar también librerías externas como <code>datejs</code> y &nbsp;<code>moment</code> para manejar fechas en tu aplicación. </p><p>Hasta la siguiente, cuídate y a por ello.</p><p>Traducido del artículo de <a href="https://www.freecodecamp.org/news/author/vijit/"><strong>Vijit Ail</strong></a>- <a href="https://www.freecodecamp.org/news/javascript-date-now-how-to-get-the-current-date-in-javascript/"><strong>https://www.freecodecamp.org/news/javascript-date-now-how-to-get-the-current-date-in-javascript/</strong></a></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ 10 Comandos de Git Que Todo Desarrollador Debería Saber ]]>
                </title>
                <description>
                    <![CDATA[ Git es una parte importante de quien programa a diario (especialmente si estás trabajando con un equipo) y se usa extensamente en la industria de software.  Desde que existe una gran variedad de comandos que puedes utilizar, dominar Git requiere tiempo. Pero algunos comandos se utilizan más frecuentemente (algunos ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/10-comandos-de-git-que-todo-desarrollador-deberia-saber/</link>
                <guid isPermaLink="false">5fe4b8688c7cd154bb97d989</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Nora Gonzalo Ciordia ]]>
                </dc:creator>
                <pubDate>Mon, 11 Jan 2021 15:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/01/Ekran-Resmi-2020-01-12-21.59.37-1-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Git es una parte importante de quien programa a diario (especialmente si estás trabajando con un equipo) y se usa extensamente en la industria de software. </p><p>Desde que existe una gran variedad de comandos que puedes utilizar, dominar Git requiere tiempo. Pero algunos comandos se utilizan más frecuentemente (algunos hasta a diario varias veces). Por tanto, en este artículo, les compartiré y explicaré los 10 comandos de Git más usados que todo desarrollador debería de conocer. &nbsp;</p><p><strong><strong>Not</strong>a<strong>: </strong>Para entender este artículo, tienes que conocer lo básico acerca de Git.</strong></p><h2 id="1-git-clone"><strong><strong>1. Git clone</strong></strong></h2><p>Git clone es un comando para descargarte el código fuente existente desde un repositorio remoto (como Github, por ejemplo). En otras palabras, Git clone básicamente realiza una copia idéntica de la última versión de un proyecto en un repositorio y la guarda en tu ordenador.</p><p>Hay un par de formas de descargar el código fuente, pero principalmente yo prefiero <strong>clonar de la forma con https</strong>: </p><pre><code>git clone &lt;https://link-con-nombre-del-repositorio&gt;</code></pre><p>Por ejemplo, si queremos descargar un proyecto desde Github, todo lo que necesitamos es hacer clic sobre el botón verde (clonar o descargar), copiar la URL de la caja y pegarla después del comando git clone que he mostrado más arriba. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2020/12/bootstrap-github-1.png" class="kg-image" alt="bootstrap-github-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2020/12/bootstrap-github-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2020/12/bootstrap-github-1.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2020/12/bootstrap-github-1.png 1478w" sizes="(min-width: 720px) 720px" width="1478" height="452" loading="lazy"><figcaption>Código fuente de Bootstrap en Github</figcaption></figure><p>Esto hará una copia del proyecto en tu espacio de trabajo local y así podrás empezar a trabajar con él.</p><h2 id="2-git-branch"><strong><strong>2. Git branch</strong></strong></h2><p>Las ramas (branch) son altamente importantes en el mundo de Git. Usando ramas, varios desarrolladores pueden trabajar en paralelo en el mismo proyecto simultáneamente. Podemos usar el comando git branch para crearlas, listarlas y eliminarlas. </p><p><strong><strong>Crea</strong>ndo una nueva rama: </strong></p><pre><code>git branch &lt;nombre-de-la-rama&gt;</code></pre><p>Este comando creará una rama en local. Para enviar (push) la nueva rama al repositorio remoto, necesitarás usar el siguiente comando:</p><pre><code>git push &lt;nombre-remoto&gt; &lt;nombre-rama&gt;</code></pre><p><strong><strong>Vi</strong>sualización de<strong> </strong>ramas:</strong></p><pre><code>git branch</code></pre><pre><code>git branch --list</code></pre><p><strong>Borrar una rama<strong>:</strong></strong></p><pre><code>git branch -d &lt;nombre-de-la-rama&gt;</code></pre><h2 id="3-git-checkout"><strong><strong>3. Git checkout</strong></strong></h2><p>Este es también uno de los comandos más utilizados en Git. Para trabajar en una rama, primero tienes que cambiarte a ella. Usaremos <strong>git checkout</strong> principalmente para cambiarte de una rama a otra. También lo podemos usar para chequear archivos y commits.</p><pre><code>git checkout &lt;nombre-de-la-rama&gt;</code></pre><p>Hay algunos pasos que debes seguir para cambiarte exitosamente entre ramas: </p><ul><li>Los cambios en tu rama actual tienen que ser confirmados o almacenados en el guardado rápido (stash) antes de que cambies de rama.</li><li>La rama a la que te quieras cambiar debe existir en local. </li></ul><p><strong>Hay también un comando de acceso directo que te permite crear y cambiarte a esa rama al mismo tiempo: </strong></p><pre><code>git checkout -b &lt;nombre-de-tu-rama&gt;</code></pre><p>Este comando crea una nueva rama en local (-b viene de rama (branch)) y te cambia a la rama que acabas de crear. </p><h2 id="4-git-status"><strong><strong>4. Git status</strong></strong></h2><p>El comando de git status nos da toda la información necesaria sobre la rama actual. </p><pre><code>git status</code></pre><p>Podemos encontrar información como: </p><ul><li>Si la rama actual está actualizada</li><li>Si hay algo para confirmar, enviar o recibir (pull).</li><li>Si hay archivos en preparación (staged), sin preparación(unstaged) o que no están recibiendo seguimiento (untracked)</li><li>Si hay archivos creados, modificados o eliminados </li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2020/12/git-status-1.png" class="kg-image" alt="git-status-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2020/12/git-status-1.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2020/12/git-status-1.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2020/12/git-status-1.png 1476w" sizes="(min-width: 720px) 720px" width="1476" height="568" loading="lazy"><figcaption>git status nos da información acerca del archivo y las ramas</figcaption></figure><h2 id="5-git-add"><strong><strong>5. Git add</strong></strong></h2><p>Cuando creamos, modificamos o eliminamos un archivo, estos cambios suceden en local y no se incluirán en el siguiente commit (a menos que cambiemos la configuración). </p><p>Necesitamos usar el comando git add para incluir los cambios del o de los archivos en tu siguiente commit.</p><p><strong>Añadir un único archivo: </strong></p><pre><code>git add &lt;archivo&gt;</code></pre><p><strong>Añadir todo de una vez: </strong></p><pre><code>git add -A</code></pre><p>Si revisas la captura de pantalla que he dejado en la sección 4, verás que hay nombres de archivos en rojo - esto significa que los archivos sin preparación. Estos archivos no serán incluidos en tus commits hasta que no los añadas. </p><p><strong>Para añadirlos, necesitas usar el git add: </strong></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2020/12/git-add.png" class="kg-image" alt="git-add" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2020/12/git-add.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2020/12/git-add.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2020/12/git-add.png 1480w" sizes="(min-width: 720px) 720px" width="1480" height="380" loading="lazy"><figcaption>Los archivos en verde han sido añadidos a la preparación gracias al git add</figcaption></figure><p></p><p><strong><strong>Important</strong>e<strong>: </strong>El comando git add no cambia el repositorio y los cambios que no han sido guardados hasta que no utilicemos el comando de confirmación git commit. </strong></p><h2 id="6-git-commit"><strong><strong>6. Git commit</strong></strong></h2><p>Este sea quizás el comando más utilizado de Git. Una vez que se llega a cierto punto en el desarrollo, queremos guardar nuestros cambios (quizás después de una tarea o asunto específico). &nbsp;</p><p>Git commit es como establecer un punto de control en el proceso de desarrollo al cual puedes volver más tarde si es necesario. </p><p>También necesitamos escribir un mensaje corto para explicar qué hemos desarrollado o modificado en el código fuente.</p><pre><code>git commit -m "mensaje de confirmación"</code></pre><p><strong><strong>Important</strong>e<strong>: Git commit </strong>guarda tus cambios únicamente en local.</strong></p><h2 id="7-git-push"><strong><strong>7. Git push</strong></strong></h2><p>Después de haber confirmado tus cambios, el siguiente paso que quieres dar es enviar tus cambios al servidor remoto. Git push envía tus commits al repositorio remoto.</p><pre><code>git push &lt;nombre-remoto&gt; &lt;nombre-de-tu-rama&gt;</code></pre><p>De todas formas, si tu rama ha sido creada recientemente, puede que tengas que cargar y subir tu rama con el siguiente comando: </p><pre><code>git push --set-upstream &lt;nombre-remoto&gt; &lt;nombre-de-tu-rama&gt;</code></pre><p>or</p><pre><code>git push -u origin &lt;nombre-de-tu-rama&gt;</code></pre><p><strong><strong>Important</strong>e<strong>: Git push </strong>solamente carga los cambios que han sido confirmados. </strong></p><h2 id="8-git-pull"><strong><strong>8. Git pull</strong></strong></h2><p>El comando <strong><strong>git pull </strong></strong>se utiliza para recibir actualizaciones del repositorio remoto. Este comando es una combinación del <strong><strong>git fetch</strong></strong> y del <strong><strong>git merge</strong></strong> lo cual significa que cundo usemos el git pull recogeremos actualizaciones del repositorio remoto (git fetch) e inmediatamente aplicamos estos últimos cambios en local (git merge).</p><pre><code>git pull &lt;nombre-remoto&gt;</code></pre><p><strong>Esta operación puede generar conflictos que tengamos que resolver manualmente. </strong></p><h2 id="9-git-revert"><strong><strong>9. Git revert</strong></strong></h2><p>A veces, necesitaremos deshacer los cambios que hemos hecho. Hay varias maneras para deshacer nuestros cambios en local y/o en remoto (dependiendo de lo que necesitemos), pero necesitaremos utilizar cuidadosamente estos comandos para evitar borrados no deseados. </p><p>Una manera segura para deshacer nuestras commits es utilizar <strong>git revert</strong>. Para ver nuestro historial de commits, primero necesitamos utilizar el &nbsp;<strong><strong>git log -- oneline:</strong></strong></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2020/12/histo-rico-git.png" class="kg-image" alt="histo-rico-git" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2020/12/histo-rico-git.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2020/12/histo-rico-git.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2020/12/histo-rico-git.png 1484w" sizes="(min-width: 720px) 720px" width="1484" height="136" loading="lazy"><figcaption>histórico de git en mi rama master</figcaption></figure><p>Entonces, solo necesitamos especificar el código de comprobación que encontrarás junto al commit que queremos deshacer:</p><pre><code>git revert 3321844</code></pre><p>Después de esto, verás una pantalla como la de abajo -tan solo presiona <strong><strong>shift + q</strong></strong> para salir:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2020/01/resim-2.png" class="kg-image" alt="resim-2" width="600" height="400" loading="lazy"></figure><p>El comando git revert deshará el commit que le hemos indicado, pero creará un nuevo commit deshaciendo la anterior: </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2020/12/git-revert.png" class="kg-image" alt="git-revert" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2020/12/git-revert.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2020/12/git-revert.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2020/12/git-revert.png 1484w" sizes="(min-width: 720px) 720px" width="1484" height="192" loading="lazy"><figcaption>commit generado con el git revert</figcaption></figure><p>La ventaja de utilizar <strong><strong>git revert</strong></strong> es que no afecta al commit histórico. Esto significa que puedes seguir viendo todos los commits en tu histórico, incluso los revertidos. </p><p>Otra medida de seguridad es que todo sucede en local a no ser que los enviemos al repositorio remoto. Por esto es que git revert es más seguro de usar y es la manera preferida para deshacer los commits. </p><h2 id="10-git-merge"><strong><strong>10. Git merge</strong></strong></h2><p>Cuando ya hayas completado el desarrollo de tu proyecto en tu rama y todo funcione correctamente, el último paso es fusionar la rama con su rama padre (dev o master). Esto se hace con el comando <code>git merge</code>.</p><p>Git merge básicamente integra las características de tu rama con todos los commits realizados a las ramas dev (o master). &nbsp;Es importante que recuerdes que tienes que estar en esa rama específica que quieres fusionar &nbsp;con tu rama de características. </p><p>Por ejemplo, cuando quieres fusionar tu rama de características en la rama dev: </p><p><strong>Primero, debes cambiarte a la rama dev: </strong></p><pre><code>git checkout dev</code></pre><p><strong>Antes de fusionar, debes actualizar tu rama dev local: </strong></p><pre><code>git fetch</code></pre><p><strong>Por último, puedes fusionar tu rama de características en la rama dev: </strong></p><pre><code>git merge &lt;nombre-de-la-rama&gt;</code></pre><p><strong>Pista<strong>: </strong>Asegúrate de que tu rama dev tiene la última versión antes de fusionar otras ramas, si no, te enfrentarás a conflictos u otros problemas no deseados. </strong></p><p>Aquí están mis 10 comandos de git más usados cuando me enfrento a la programación en mi día a día. Hay muchas más cosas que aprender sobre Git y las explicaré más adelante en oros artículos. </p><p><strong>Si quieres aprender más sobre el desarrollo web, ¡<a href="https://www.youtube.com/channel/UC1EgYPCvKCXFn8HlpoJwY3Q">puedes seguirme en Youtube</a>! </strong></p><p>¡Gracias por leerme!</p><p>Traducido del artículo de <a href="https://www.freecodecamp.org/news/author/cemeygi/"><strong>Cem Eygi</strong></a><strong> - <a href="https://www.freecodecamp.org/news/10-important-git-commands-that-every-developer-should-know/">10 Git Commands Every Developer Should Know</a></strong></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Cómo entender Git: una introducción a los comandos básicos, consejos y trucos ]]>
                </title>
                <description>
                    <![CDATA[ Recientemente me he convertido en mentor de un compañero de trabajo.  Y mi mentorando me ha preguntado sobre Git en varias ocasiones. ¡Esto es por ti compañero! P.D. Debería de haber escrito este artículo cuando comenzamos pero, ¡espero que también ayude ahora! Y recuerda: La mejor manera de aprender algo ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/git-comandos-basicos-como-entender-git/</link>
                <guid isPermaLink="false">5fde12688c7cd154bb97aa6e</guid>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Nora Gonzalo Ciordia ]]>
                </dc:creator>
                <pubDate>Mon, 04 Jan 2021 13:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/01/brandon-green-321795-unsplash-1-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Recientemente me he convertido en mentor de un compañero de trabajo. &nbsp;Y mi mentorando me ha preguntado sobre Git en varias ocasiones. ¡Esto es por ti compañero! P.D. Debería de haber escrito este artículo cuando comenzamos pero, ¡espero que también ayude ahora!</p><p><em>Y recuerda<em>: </em>La mejor manera de aprender algo es haciéndolo por ti mismo. Y como mi mentor siempre me decía:<em> Udaraj!</em></em></p><h2 id="b-sicos"><strong><strong>Básic</strong>o<strong>s</strong></strong></h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2019/08/0-2GkM1pvDmnI2ksUM.png" class="kg-image" alt="0-2GkM1pvDmnI2ksUM" width="600" height="400" loading="lazy"></figure><h3 id="entonces-por-qu-git-es-tan-importante"><strong>Entonces, ¿por qué Git es tan importante?</strong></h3><p>Vamos a empezar primero citando la primera línea de la página sobre Git en Wikipedia: </p><blockquote>“<strong><strong><em><em>Git</em></em></strong></strong><em><em> (<a href="https://es.wikipedia.org/wiki/Ayuda:AFI/Ingl%C3%A9s">/ɡɪt/</a>) </em>es un software de <a href="https://es.wikipedia.org/wiki/Control_de_versiones">control de versiones</a> para llevar el registro de los cambios en los <a href="https://es.wikipedia.org/wiki/Archivo_(inform%C3%A1tica)">archivos</a> de tu ordenador y</em> coordinar el trabajo que varias personas realizan sobre archivos compartidos.<em>". </em></blockquote><p>Esto significa que la función más básica e importante de Git es permitir a grupos de personas añadir (y fusionar) código al mismo tiempo en el mismo proyecto. Añadiendo esta opción a los proyectos, hace a los grupos más eficientes y les otorga la habilidad de trabajar en proyectos más grandes y en problemas más complejos. </p><p>Existen muchas otras cosas que Git hace realmente bien: nos permite revertir cambios, crear nuevas ramas para añadir nuevas características, resolver conflictos de fusión, y muchas más.</p><h3 id="c-mo-funciona"><strong>Cómo funciona</strong></h3><p>Git almacena los proyectos en <strong>repositorios</strong>. Se hacen las <strong>confirmaciones (commits) </strong>al proyecto y le informas a Git de que estás satisfecho con los archivos nuevos o modificados que has has creado.</p><p>El código creado como nuevo/con cambios se confirman en las ramas. La mayoría del trabajo es confirmado en otras ramas y fusionado con la rama master. Todo esto es almacenado en el mismo directorio que el proyecto pero en una sub carpeta llamada <strong><strong>.git</strong></strong>.</p><p>Para compartir el código con tus compañeros tienes que <strong>enviar (push) </strong>los cambios al repositorio. Para añadir el código nuevo de tus compañeros, tienes que <strong>traer (pull) </strong>los cambios del repositorio. </p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/espanol/news/content/images/2020/12/git-hosting-services-1.jpg" class="kg-image" alt="git-hosting-services-1" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2020/12/git-hosting-services-1.jpg 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2020/12/git-hosting-services-1.jpg 1000w, https://www.freecodecamp.org/espanol/news/content/images/2020/12/git-hosting-services-1.jpg 1080w" sizes="(min-width: 720px) 720px" width="1080" height="1080" loading="lazy"></figure><h3 id="entonces-qu-son-github-gitlab-y-bitbucket"><strong>Entonces, qué son <strong>GitHub, GitLab </strong>y<strong> Bitbucket?</strong></strong></h3><p>Bien, ¡me alegro de que lo preguntes! Este tipo de aplicaciones se llaman servicios de gestión de repositorios. Juegan un papel crucial en el desarrollo de software moderno. </p><p>Pese a que Git y Github son la mejor opción en cuanto a sistemas de control de versiones, GitHub tiene fuertes competidores como GitLab y Bitbucket. No obstante, si sabes utilizar GitHub, no tendrás ningún problema en trabajar con GitLab o Bitbucket.</p><p><em>Por tanto, para dejarlo claro: Git es la herramienta, y GitHub es el servicio para los proyectos que usa Git.</em></p><h4 id="-d-nde-puedo-descubrir-proyectos-interesantes-y-conectar-con-otros-desarrolladores"><strong>¿Dónde puedo descubrir proyectos interesantes y conectar con otros desarrolladores?</strong></h4><p>GitHub, GitLab y Bitbucket tienen opciones de búsqueda de repositorios públicos y la posibilidad de seguir a otros usuarios.</p><p>¿Puedes ver por qué es importante saber manejar Git y Github (GitLab/Bitbucket)? Lo único que nos queda por hablar sobre los comandos, es darte unas simples reglas que tendrás que seguir cuando uses Git: </p><ul><li><strong><strong>R</strong>egla<strong> 1:</strong></strong> Crea un repositorio Git para cada proyecto nuevo </li><li><strong><strong>R</strong>egla<strong> 2:</strong></strong> Crea una nueva rama para cada característica </li></ul><h2 id="comandos"><strong><strong>Comand</strong>o<strong>s</strong></strong></h2><p>Para empezar con Git lo tienes que tener instalado en tu ordenador. Si todavía no lo tienes, puedes visitar su página y seguir las instrucciones para obtenerlo.</p><h3 id="inicializar-un-nuevo-repositorio-git-init"><strong><strong>Ini</strong>cializar un nuevo repositorio:<strong> Git init</strong></strong></h3><p>Todo tu código será rastreado y rastreable en el repositorio. Para inicializar un repositorio en git, ejecuta este comando mientras estés en la carpeta del proyecto. Éste creará un archivo .git. </p><pre><code>git init</code></pre><h3 id="git-add"><strong><strong>Git add</strong></strong></h3><p>Este comando añade uno o todos los archivos cambiados en el área de preparación.</p><p>Para añadir un solo archivo a la preparación:</p><pre><code>git add nombredelarchivo.py</code></pre><p>Para preparar archivos nuevos, modificados o eliminados: </p><pre><code>git add -A</code></pre><p>Para preparar archivos nuevos y modificados: </p><pre><code>git add .</code></pre><p>Para preparar archivos modificados y borrados: </p><pre><code>git add -u</code></pre><h3 id="git-commit"><strong><strong>Git commit</strong></strong></h3><p>Este comando guarda el archivo en versión histórico. El -m significa que le acompaña un mensaje de confirmación. Este mensaje es personalizable y lo debes de usar para indicar a tus compañeros o a tu yo del futuro que ha sido realizado, añadido o modificado en ese commit. </p><pre><code>git commit -m "tu mensaje"</code></pre><h3 id="git-status"><strong><strong>Git status</strong></strong></h3><p>Este comando te informa del estado de los archivos de tu proyecto y listará los archivos en verde o en rojo. Los archivos en verde se han añadido a la preparación pero no se han confirmado todavía. Los archivos marcados en rojo son aquellos que no han sido añadidos a la preparación. </p><pre><code>git status</code></pre><h2 id="trabajando-con-ramas"><strong>Trabajando con ramas</strong></h2><p></p><h3 id="git-branch-nombre_de_rama"><strong><strong>Git branch </strong>nombre_de_rama</strong></h3><p>Este comando creará una nueva rama</p><pre><code>git branch nombre_de_rama</code></pre><h3 id="git-checkout-nombre_de_rama"><strong><strong>Git checkout </strong>nombre_de_rama </strong></h3><p>Para cambiar de una rama a otra:</p><pre><code>git checkout nombre_de_rama</code></pre><h4 id="git-checkout-b-nombre_de_rama"><strong><strong>Git checkout -b </strong>nombre_de_rama</strong></h4><p>Para crear una nueva rama y cambiar a ésta automáticamente: (comprobar que se puede hacer sin commit de la rama en la que estás, porque creo que no se puede cambiar de rama sin hacer commit en la que estás)</p><pre><code>git checkout -b nombre_de_rama</code></pre><p>Es la forma abreviada de hacer:</p><pre><code>git branch nombre_de_rama
git checkout nombre_de_rama</code></pre><h3 id="git-branch"><strong><strong>Git branch</strong></strong></h3><p>Para listar todas las ramas y ver en qué rama estás trabajando en ese momento: </p><pre><code>git branch</code></pre><h3 id="git-log"><strong><strong>Git log</strong></strong></h3><p>Este comando listará el histórico de las versiones de la rama en la que estás trabajando: </p><pre><code>git log</code></pre><hr><h2 id="push-pull"><strong><strong>Push &amp; Pull</strong></strong></h2><h3 id="git-push"><strong><strong>Git push</strong></strong></h3><p>Este comando envía los cambios confirmados a un repositorio remoto:</p><pre><code>git push</code></pre><h3 id="git-pull"><strong><strong>Git pull</strong></strong></h3><p>Para descargar los cambios realizados en el servidor remoto en tu ordenador: </p><pre><code>git pull</code></pre><h2 id="consejos-y-trucos"><strong>Consejos y Trucos</strong></h2><h3 id="desecha-tus-cambios-sin-confirmar"><strong>Desecha tus cambios sin confirmar </strong></h3><p>Tal y como se indica, este comando descartará todos los cambios sin confirmar:</p><pre><code>git reset --hard</code></pre><h3 id="elimina-un-archivo-de-git-sin-eliminarlo-de-tu-ordenador"><strong>Elimina un archivo de git sin eliminarlo de tu ordenador </strong></h3><p>A veces, cuando utilizas el comando "git add", puedes añadir archivos que no querías añadir. </p><p>Si no eres cuidadoso durante un "git add", puedes acabar añadiendo archivos que no querías añadir. Debes eliminar el archivo de la versión de preparación, para añadirlo al archivo .gitignore para evitar cometer el mismo error una segunda vez: </p><pre><code>git reset nombre_del_archivo
echo filename &gt;&gt; .gitignore</code></pre><h3 id="editar-un-mensaje-de-confirmaci-n"><strong>Editar un mensaje de confirmación</strong></h3><p>Es muy fácil arreglar un mensaje de confirmación: </p><pre><code>git commit --amend -m "nuevo mensaje"</code></pre><p>¡Gracias por tu lectura!</p><p>Traducido del artículo de <strong><a href="https://www.freecodecamp.org/news/author/goran/">Goran Aviani</a></strong> - <strong><a href="https://www.freecodecamp.org/news/understanding-git-basics-commands-tips-tricks/">How to understand Git: an intro to basic commands, tips, and tricks</a></strong></p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
