<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Oswaldo Echeverría</title>
    <description>The latest articles on DEV Community by Oswaldo Echeverría (@oswald_echeverri).</description>
    <link>https://dev.to/oswald_echeverri</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1023635%2F457bd951-d452-4625-8334-cab10a192d00.jpeg</url>
      <title>DEV Community: Oswaldo Echeverría</title>
      <link>https://dev.to/oswald_echeverri</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/oswald_echeverri"/>
    <language>en</language>
    <item>
      <title>Guia rapida servidor Wordpress con Nginx en debian 11</title>
      <dc:creator>Oswaldo Echeverría</dc:creator>
      <pubDate>Fri, 31 Mar 2023 19:51:28 +0000</pubDate>
      <link>https://dev.to/oswald_echeverri/guia-rapida-servidor-wordpress-con-nginx-en-debian-11-395d</link>
      <guid>https://dev.to/oswald_echeverri/guia-rapida-servidor-wordpress-con-nginx-en-debian-11-395d</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Instalacion nginx&lt;/li&gt;
&lt;li&gt;Instalacion PHP y MariaDB Server&lt;/li&gt;
&lt;li&gt;Creacion de la base de datos&lt;/li&gt;
&lt;li&gt;Descargamos e instalamos WordPress&lt;/li&gt;
&lt;li&gt;Creacion de un host virtual Nginx&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Instalacion nginx
&lt;/h2&gt;

&lt;p&gt;Instalamos nginx&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ apt-get install nginx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Habilitamos nginx&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ systemctl start nginx
$ systemctl enable nginx
$ systemctl status nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa50tmihukvmgsvdfez24.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa50tmihukvmgsvdfez24.png" alt="status nginx"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Instalacion PHP y MariaDB Server
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ apt-get install php php-mysql php-fpm php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip mariadb-server mariadb-client

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Iniciamos mariaDB y verificamos el estado&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ systemclt start mariadb 
$ systemctl enable mariadb
$ systemctl status mariadb 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fopuzsjsmit7iydbt8sw6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fopuzsjsmit7iydbt8sw6.png" alt="status de mariadb"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Habilitamos el servicio de PHP-FPM&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ systemctl start php7.4-fpm
$ systemctl enable php7.4-fpm
$ systemctl status php7.4-fpm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1lpx7h9vgc1hoji8tsjw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1lpx7h9vgc1hoji8tsjw.png" alt="status php"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si qestamos en produccion y queremos asegurar la instalacion de mariaDB ejecutamos la configuracion guiada deacuerdo a lo que necesitemos &lt;/p&gt;

&lt;p&gt;&lt;code&gt;mysql_secure_installation&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Creacion de la base de datos
&lt;/h2&gt;

&lt;p&gt;Ejecutamos la BD&lt;br&gt;
&lt;code&gt;$ mysql&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Creamos una nueva base de datos &lt;br&gt;
&lt;code&gt;$  CREATE DATABASE wordpress_db;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;A continuación, creamos una nueva cuenta de usuario MySQL que utilizaremos para operar en la nueva base de datos de WordPress, con el nombre de usuario "wordpress_user".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$  CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'password';

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vincular el usuario y la base de datos concediendo a nuestro usuario acceso a la base de datos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ GRANT ALL PRIVILEGES ON wordpress_db.* to wordpress_user@'localhost';

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vaciar los privilegios para que MySQL conozca los permisos de usuario que acabamos de agregar.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$  FLUSH PRIVILEGES;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Salga del símbolo del sistema de MySQL escribiendo.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$  exit&lt;/code&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Descargamos e instalamos WordPress
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ wget -O /tmp/wordpress.tar.gz https://wordpress.org/latest.tar.gz

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Descomprima el archivo descargado de WordPress.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ tar -xzvf /tmp/wordpress.tar.gz -C /var/www/html&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Cambie el permiso del directorio del sitio y revierta los cambios después de instalar WordPress.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# chown -R www-data.www-data /var/www/html/wordpress
# chmod -R 755 /var/www/html/wordpress
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Creacion de un host virtual Nginx
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;$ nano /etc/nginx/conf.d/wordpress.conf&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Agreguamos el contenido al archivo wordpress.conf.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server {
        listen 80;
        listen [::]:80;
        root /var/www/html/wordpress;
        index index.php index.html index.htm;
        error_log /var/log/nginx/wordpress_error.log;
        access_log /var/log/nginx/wordpres_access.log;
        client_max_body_size 100M;
        location / {
                try_files $uri $uri/ /index.php?$args;
        }
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.4-fpm.sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eliminamos el bloque de servidor predeterminado para habilitar su sitio web de WordPress.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ rm /etc/nginx/sites-enabled/default
$ rm /etc/nginx/sites-available/default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A continuación, pruebamos para asegurarse de que no haya errores de sintaxis en ninguno de sus archivos Nginx.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ nginx -t&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Si no hay ningún problema, reiniciamos Nginx para habilitar sus cambios.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;$ systemctl reload nginx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhwx5vwv3dqmqnhakoj4h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhwx5vwv3dqmqnhakoj4h.png" alt="status wordpress"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;! Felicidades tienes tu servidor wordpress !&lt;/p&gt;

&lt;p&gt;Para probarlo y configurarlo.&lt;br&gt;
Entra al navegador a tu ip del servidor o localhost &lt;/p&gt;

&lt;p&gt;o lo puedes hacer en el archivo wp-config-sample lo copias y le cambias el nombre a wp-config.php&lt;/p&gt;

</description>
      <category>spanish</category>
      <category>debian11</category>
      <category>wordpress</category>
      <category>servidores</category>
    </item>
    <item>
      <title>Notas rápidas de Grid</title>
      <dc:creator>Oswaldo Echeverría</dc:creator>
      <pubDate>Sun, 26 Feb 2023 20:43:15 +0000</pubDate>
      <link>https://dev.to/oswald_echeverri/notas-rapidas-de-grid-4ec1</link>
      <guid>https://dev.to/oswald_echeverri/notas-rapidas-de-grid-4ec1</guid>
      <description>&lt;h2&gt;
  
  
  🏁  Tabla de contenido  🏁
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Idea del post&lt;/li&gt;
&lt;li&gt;Contexto&lt;/li&gt;
&lt;li&gt;
Grid container

&lt;ul&gt;
&lt;li&gt;Flujo de display grid&lt;/li&gt;
&lt;li&gt;Tracks&lt;/li&gt;
&lt;li&gt;
Propiedades para definir un track

&lt;ul&gt;
&lt;li&gt;Valores para las columnas o filas implicitas&lt;/li&gt;
&lt;li&gt;repeat como valor&lt;/li&gt;
&lt;li&gt;patrones con repeat&lt;/li&gt;
&lt;li&gt;Unidad de medida&lt;/li&gt;
&lt;li&gt;min content y max content&lt;/li&gt;
&lt;li&gt;fit content&lt;/li&gt;
&lt;li&gt;minmax&lt;/li&gt;
&lt;li&gt;autofill&lt;/li&gt;
&lt;li&gt;AutoFit&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Alineacion de colums y rows

&lt;ul&gt;
&lt;li&gt;Justify items&lt;/li&gt;
&lt;li&gt;Align items&lt;/li&gt;
&lt;li&gt;Justify content&lt;/li&gt;
&lt;li&gt;Align content&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;li&gt;

Posicionamiento Grid item

&lt;ul&gt;
&lt;li&gt;Grid column start y end&lt;/li&gt;
&lt;li&gt;SPAN&lt;/li&gt;
&lt;li&gt;Numeros negativos&lt;/li&gt;
&lt;li&gt;Gutters o espaciadores&lt;/li&gt;
&lt;li&gt;DENESE&lt;/li&gt;
&lt;li&gt;Grid area&lt;/li&gt;
&lt;li&gt;Grid areas&lt;/li&gt;
&lt;li&gt;Lines Columns y Lines Rows&lt;/li&gt;
&lt;li&gt;Ordenamiento&lt;/li&gt;
&lt;li&gt;Alineacion de un solo elemento en el axis&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

Comandos resumen

&lt;ul&gt;
&lt;li&gt;Grid container&lt;/li&gt;
&lt;li&gt;Grid items&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Idea del post
&lt;/h2&gt;

&lt;p&gt;Esta es una guía rápida de uso de CSS3 GRID con el objetivo que tengas en mano los pasos u anotaciones para usar Grid en tus proyectos &lt;/p&gt;

&lt;p&gt;Por último. Si te gusto este post déjame un ❤️ &lt;/p&gt;

&lt;h2&gt;
  
  
  Contexto
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grid container:&lt;/strong&gt; Es un espacio bidimensional que trabaja con filas y columna&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwzm0efw2a4maexsmosj3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwzm0efw2a4maexsmosj3.png" alt="grid container"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grid items:&lt;/strong&gt; Son los elementos hijos y perteneces a un grid container &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqlgvts66wtyph96f2zm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqlgvts66wtyph96f2zm.png" alt="grid items"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grid cells:&lt;/strong&gt; Es una cuadrícula compuesta de muchas celdas, al principio los grid-items ocupan una celda por cada grid-item&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fov10fp589wdtvyvjoa05.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fov10fp589wdtvyvjoa05.png" alt="grid cells "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cada cuadrado pequeño conforma la grid y a este cuadrado pequeño se llama grid cell &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grid lines:&lt;/strong&gt; Las cuadriculas estan compuestas de lineas verticales y lineas horizontales conocidas como column grid lines y row grid lines &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphteqksa6ynbtl7z3yvr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphteqksa6ynbtl7z3yvr.png" alt="Grid lines 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;veamos un grid de 3x3, es decir 3 filas y 3 columnas; Sin embargo, tiene 4 row grid lines y 4 columns grid line&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3fjhc5zew3pjatvewtk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft3fjhc5zew3pjatvewtk.png" alt="Grid lines 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cada columna o fila tendrá una línea de inicio y una línea de fin.&lt;br&gt;
Siempre habrá una línea más que columnas o filas.&lt;/p&gt;

&lt;p&gt;Estos conceptos son importantes porque con esto podemos posicionar elementos en la grid  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4r1vrve7bzxw4wgne7c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4r1vrve7bzxw4wgne7c.png" alt="Grid lines 3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Supongamos que lo azul es un elemento o una imagen o un contenedor. Para posicionarlo donde está debo saber las líneas y su numeración.&lt;/p&gt;

&lt;p&gt;Por ejemplo, este elemento azul está posicionado en &lt;br&gt;
la row line de la 2 hasta la 4 y la column line de la 1 hasta la 3 &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grid track:&lt;/strong&gt; Es el espacio entre dos grid lines adyacentes, también se las conoce como fila y columna &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fogyqor8zg54l8oes3kh3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fogyqor8zg54l8oes3kh3.png" alt="Track imagen 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grid areas:&lt;/strong&gt; Es el área donde se posicionan varias celdas.
Un grid área puede estar formando por el número que sea de celdas, pero un grid área siempre debe ser rectangular o cuadrado&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9z77r76w1icneawbwkh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9z77r76w1icneawbwkh.png" alt="grid area 1"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Grid container
&lt;/h2&gt;

&lt;p&gt;Para llamar a una grid se lo hace con &lt;code&gt;display: grid;&lt;/code&gt;. El height por defecto de los elementos grid es auto.&lt;br&gt;
Si se aplica display grid inmediatamente rellena los espacios equitativamente.&lt;/p&gt;

&lt;p&gt;Antes de display grid &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62vapwf1ycddpntspzz5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62vapwf1ycddpntspzz5.png" alt="imagen grid 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Después de display grid &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzg9iqvxqq655f6yjpwty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzg9iqvxqq655f6yjpwty.png" alt="Imagen display grid 2"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  Flujo de display grid
&lt;/h3&gt;

&lt;p&gt;El display grid por defecto es en fila, se lo puede referenciar con&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-auto-flow: row;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo5jmv0zwrrnzatctf82q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo5jmv0zwrrnzatctf82q.png" alt="Imagem display row"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si se desea cambiarlo en dirección de columna se lo puede referenciar con&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-auto-flow: column;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Firnehk0k7lkqfgcxfw26.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Firnehk0k7lkqfgcxfw26.png" alt="Imagen grid column"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tracks
&lt;/h3&gt;

&lt;p&gt;Los tracks son filas o columnas.&lt;/p&gt;

&lt;h4&gt;
  
  
  Propiedades para definir un track
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Definición de columnas:
Para definir una columna se hace de forma muy intuitiva.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-columns: 100px 2cm 30%;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;se puede usar cualquier tipo de medida &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9sn3hg62hapl56n1tm37.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9sn3hg62hapl56n1tm37.png" alt="Imagen track 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En el html tenemos 6 ítems es por eso que se nos crea una &lt;strong&gt;fila implícita o automática.&lt;/strong&gt;   &lt;/p&gt;

&lt;p&gt;Para definir filas o rows usamos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-rows: 20px 4cm  20%;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  Valores para las columnas o filas implicitas
&lt;/h5&gt;

&lt;p&gt;Cuando creamos uns fila o una columna y hay mas items de los que hemos definido se crean columnas o filas implicitas, estas columnas y filas no estan definidad por lo tanto estan en &lt;code&gt;auto&lt;/code&gt; y tienen el tamaño de su contenido, pero si queremos controlar ese valor automatico a las filas o columnas lo podemos hacer de la siguiente manera:&lt;/p&gt;

&lt;p&gt;Tenemos este ejemplo. Tenemos la fila 4 creada implicitamente y como vemos esta en auto y s height esta derivado de su contenido&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fch095yhac7djdhh2lapj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fch095yhac7djdhh2lapj.png" alt="Descripcion 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si usamos&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-auto-flow:row; --&amp;gt; direccion grid
grid-auto-rows: 200px;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Le estamos dando un tamaño a las filas implicitas y de esta manera controlamos &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vim29er6koyuq4sbw3h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vim29er6koyuq4sbw3h.png" alt="Descripcion 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si fuera en columna&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-auto-flow: column;
grid-auto-colums:200px;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3scndtwd9tdjfniqt52.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3scndtwd9tdjfniqt52.png" alt="Descripcion 3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  repeat como valor
&lt;/h5&gt;

&lt;p&gt;Podemos crear filas y columanas con repeat de la siguiente manera.&lt;br&gt;
&lt;code&gt;grid-template-row: repeat(5, 20px)&lt;/code&gt; De esta manera le decimos que cree 5 filas de 20px. Asi mimsmo podemos hacer con columnas.&lt;br&gt;
&lt;code&gt;grid-template-column: repeat(5, 20)&lt;/code&gt; De esta manera le decimos que cree 5 columnas de 20px.&lt;/p&gt;
&lt;h5&gt;
  
  
  patrones con repeat
&lt;/h5&gt;

&lt;p&gt;Otra función que nos permite repeat es crear patrones de filas y columnas&lt;br&gt;
 Para crear patrones de columnas podemos usar.&lt;br&gt;
 &lt;code&gt;grid-template-columns: repeat(3, 10px, 20%);&lt;/code&gt; Esto nos creará 3 &lt;br&gt;
 columnas de 10px y 3 columnas de 20% pero intercalándolas. De la &lt;br&gt;
 misma manera podemos usar &lt;code&gt;gris-template-rows: repeat(3, 10%, &lt;br&gt;
 30px);&lt;/code&gt; Esto nos creará 3 filas de 10% y 3 filas de 30px &lt;br&gt;
 intercalándolas   &lt;/p&gt;
&lt;h5&gt;
  
  
  Unidad de medida
&lt;/h5&gt;

&lt;p&gt;En grid puedes usar cualquier medida, pero se recomienda usar la medida de fracción o &lt;code&gt;fr&lt;/code&gt; para que los grids sean felxibles Ejemplo.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;grid-template-colums: 1fr 1fr 1fr&lt;/code&gt;. Lo que hace es dividir el espacio disponible en 3 fracciones.&lt;br&gt;
En este ejemplo tenemos 6 elementos en un contenedor grid aplicando la creacion de 3 columnas de una 1fr equitativamente&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fci37ue4kuldtwy37724e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fci37ue4kuldtwy37724e.png" alt="unidad de medida "&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  min content y max content
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;min-content:&lt;/strong&gt; crea un track con el minimo de contenido posible, es decir su tamaño se definira en base a su minimo contenido posible, la columna crecera en base a la palabra mas grande o contenido mas grande&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;max-content:&lt;/strong&gt; Ocupa el mayor contenido posible, es decir el tamanio de la columna se dara al mayor contenido posible&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-columns: min-content max-content;
grid-template-rows: min-content max-content;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;El azul es min-content, el rojo es max-content&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fie68g2xvn0jsusnsi4gh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fie68g2xvn0jsusnsi4gh.png" alt="Min y max content"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; Esta propiedad se usa mas con columnas &lt;/p&gt;
&lt;h5&gt;
  
  
  fit content
&lt;/h5&gt;

&lt;p&gt;No spermite definir un tamaño maximo para una fila o columna. Ejemplo&lt;/p&gt;

&lt;p&gt;Le decimos que el tamaño minimo o inicial de la columna va a ser el min-content (que es el tamaño minimo del contenido) y cuando llege a 200px se desborde&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-colums: fit-content(200px);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  minmax
&lt;/h5&gt;

&lt;p&gt;Define el valor minimo o maximo de un track&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-column: minmax(valor_minimo, volormaximo);
grid-template-column: minmax(80px, 300px);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vemos que se estira solo hasta los 300px&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fplpdovzhqwx8ct7d71j0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fplpdovzhqwx8ct7d71j0.png" alt="minmax"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  autofill
&lt;/h5&gt;

&lt;p&gt;La definicion es autorelleno. En base a la medida del segundo parametro creara o rellenara cuanto elemento se pueda en el &lt;code&gt;grid-container&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-column: repeat(auto-fill, 10%)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Aunque tenga 4 items creara las columnas que permita el contendedor, cada columna de 10%&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgj8o79cn9w8raagd9mzi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgj8o79cn9w8raagd9mzi.png" alt="autofill 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se puede usar con un valor fijo&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-column: repeat(auto-fill, 300px)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Calcula que el espacio del container solo entran dos columnas de 300 px&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcfpsvytgjtnhuomc91bb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcfpsvytgjtnhuomc91bb.png" alt="autofill 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tambien se puede usar con minmax()&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-column: repeat(auto-fill, minmax(valor_minimo, valor_maximo));
grid-template-column: repeat(auto-fill, minmax(200px, 1fr));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Con esta poropiedad creamos columnas dinamicamente &lt;/p&gt;

&lt;p&gt;Y si vemos con la viewport mas alto y  vamos encogiendo &lt;br&gt;
Autofill dice mientras este el espacio para crear mas columnas lo hara  y cuando llegue al valor minimo se desbordara hasta que llegue a una fraccion o 1fr&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr0fn994lxvcd0i3lgjrl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr0fn994lxvcd0i3lgjrl.png" alt="autofil 3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2vbw6p9uuvlgyevw3i2k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2vbw6p9uuvlgyevw3i2k.png" alt="autofil 4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9m32k5ylsalflcg21pw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9m32k5ylsalflcg21pw.png" alt="autofil 5"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F67fzz0vlzhgdvp9ov389.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F67fzz0vlzhgdvp9ov389.png" alt="autofil 6"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4zmhe7ek0pwr718bd02.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4zmhe7ek0pwr718bd02.png" alt="autofil 7"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  AutoFit
&lt;/h5&gt;

&lt;p&gt;Fit significa ajustar, la diferencia con el autofill es que este valor no va a crear columnas o filas extras si hay espacio solo las que vamos a requerir&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-column: repeat(auto-fit, minmax(valor_minimo, valor_maximo)); 
grid-template-column: repeat(auto-filt, 10%);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Solo las columnas de los items disponibles &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz3edqmnq3q4dfitrnw54.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz3edqmnq3q4dfitrnw54.png" alt="autofit 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Alineacion de colums y rows
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Justify items
&lt;/h5&gt;

&lt;p&gt;Nos permite alinear las filas y columnas axis&lt;br&gt;
&lt;code&gt;grid-row&lt;/code&gt;. Tiene las propiedades &lt;br&gt;
&lt;code&gt;stretch | start | end | center&lt;/code&gt;. Ejemplo&lt;/p&gt;

&lt;p&gt;Creamos una grid&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-column: repeat(2, 1fr);
grid-template-rows: repeat(2, 1fr);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcs9b1dkhg5ou1uetevxg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcs9b1dkhg5ou1uetevxg.png" alt="justify 1"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;justify-items: start;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy9lf7gl2x9yutnctmhzq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy9lf7gl2x9yutnctmhzq.png" alt="justify 2"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;justify-items: end;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7asf560rpgpyxffivgz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff7asf560rpgpyxffivgz.png" alt="justify 3n"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;justify-items: center;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfzkgadqlidh1uqbeg10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfzkgadqlidh1uqbeg10.png" alt="justify 4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Align items
&lt;/h5&gt;

&lt;p&gt;Nos permite alinear las filas y columnas axis&lt;br&gt;
&lt;code&gt;grid-colum&lt;/code&gt;. Tiene las propiedades &lt;br&gt;
&lt;code&gt;stretch | start | end | center&lt;/code&gt;. Ejemplo&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;align-items: start;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffwn32c84b3vcdd995tyc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffwn32c84b3vcdd995tyc.png" alt="align 1"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;align-items: end;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feilncm5bvzxvzxb955ge.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feilncm5bvzxvzxb955ge.png" alt="align 2"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;align-items: center;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ck39ap5sz64rht91hzs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ck39ap5sz64rht91hzs.png" alt="align 3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTA:&lt;/strong&gt; El SHORTCUT para usar &lt;code&gt;justify-items&lt;/code&gt; y &lt;code&gt;align-items&lt;/code&gt; es:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;place-items: valor_align-items valor_justify-items;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  Justify content
&lt;/h5&gt;

&lt;p&gt;Nos permite linear la grid del axis horizontal siempre y cuando la grid o cuadricula sea menor que el contenedor, esto quiere decir que hay espacio disponible. Ejemplo&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-columns: repeat(2, 150px);
grid-template-rows: repeat(2, 150px);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fayvappo4ztgzyqf6s0ta.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fayvappo4ztgzyqf6s0ta.png" alt="justi con 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como vemos en la imagen la grid es mas pequeña que el contenedor grid &lt;/p&gt;

&lt;p&gt;Las propiedades de Justify-content&lt;br&gt;&lt;br&gt;
&lt;code&gt;start | end | Center | space-around | space-evenly | space-between&lt;/code&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  Align content
&lt;/h5&gt;

&lt;p&gt;Nos permite linear la grid del axis vertical siempre y cuando la grid o cuadricula sea menor que el contenedor, esto quiere decir que hay espacio disponible &lt;/p&gt;

&lt;p&gt;Las propiedades de Align-content &lt;br&gt;
&lt;code&gt;start | end | Center | space-around | space-evenly | space-between&lt;/code&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Posicionamiento Grid item
&lt;/h2&gt;

&lt;p&gt;Los grid-items se posicionan naturalmente en el orden del html y ocupan una celda. Para posicionar los items en grid debemos recordar que es un colum grid line y un row grid line. Cuando posicionamos un item debes decirle el inicio de la línea y el fin de la línea sea en row o column como un sistema de coordenadas &lt;/p&gt;
&lt;h3&gt;
  
  
  Grid column start y end
&lt;/h3&gt;

&lt;p&gt;Para posicionar el comienzo de un ítem en la línea de una columna usamos &lt;code&gt;grid-colum-start: ;&lt;/code&gt; y para definir el final de la posición del ítem usamos &lt;code&gt;grid-column-end: ;&lt;/code&gt; Ejemplo.&lt;/p&gt;

&lt;p&gt;Queremos que un ítem comience en la línea de la columna 3.&lt;br&gt;
&lt;code&gt;grid-column-start: 3;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs6pe8hrbjc7nihrmn2ty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs6pe8hrbjc7nihrmn2ty.png" alt="posicion 3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;si no se especifica la línea final, por defecto será la que le sigue, en este caso la línea colum 4&lt;/p&gt;

&lt;p&gt;Si añadimos una columna mas &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fky29xpjshuqrpadhj3do.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fky29xpjshuqrpadhj3do.png" alt="posicion 4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora queremos que el ítem 1 comience en la línea de la columna 3 y termine en la 5.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-column-start: 3;
grid-column-end: 5;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqmd9yi935dqhwtmt3yej.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqmd9yi935dqhwtmt3yej.png" alt="Posicion 5"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Este comando también se usa con rows veamos el siguiente ejemplo.&lt;br&gt;
Que la columna ocupen de la línea 3 a la 5 y en fila ocupen de 3 a 5&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-column-start: 3;
grid-column-end: 5;
grid-row-start: 3;
grid-row-end: 5;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para los comandos anteriores tenemos atajos o shortcuts que son:&lt;br&gt;
&lt;code&gt;grid-column: valor_start / valor_end;&lt;/code&gt; y para filas.&lt;br&gt;
&lt;code&gt;grid-row: valor_start / valor_end;&lt;/code&gt; así que con el ejemplo anterior quedaría así&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-column: 3 / 5;
grid-row: 3 / 5;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwerxe2xcuzqy2g5san1l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwerxe2xcuzqy2g5san1l.png" alt="Posicion 6"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si en el shortcut ponemos solo un valor nos llevará el ítem a esa la línea start y tomará como valor end la siguiente línea. Ejemplo &lt;/p&gt;

&lt;p&gt;tenemos la siguiente grid &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbs606wvn3t8pzkdmbzld.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbs606wvn3t8pzkdmbzld.png" alt="Posicion 7"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;sí ponemos &lt;code&gt;grid-row: 3;&lt;/code&gt; al elemento 3 nos dará lo siguiente &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs99shf39bpb1nel22our.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs99shf39bpb1nel22our.png" alt="Posicion 7"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  SPAN
&lt;/h3&gt;

&lt;p&gt;Sabemos que para posicionar un ítem necesitamos las coordenadas de las líneas de inicio y fin, span nos permite no definir la línea de fin, simplemente abarca la posición que se le ponga en span. Se usa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-column: span valor
grid-row: span valor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;tenemos la siguiente grid &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh75ud8dy4degqlmkpm1e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh75ud8dy4degqlmkpm1e.png" alt="Posicion 8"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Por ejemplo, usamos en el ítem 3 &lt;code&gt;grid-column: span 2&lt;/code&gt;. Con esto estamos diciendo que el ítem 3 abarque 2 líneas column mas de la que actualmente esta &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frw59ivnfuzcnacwlhq39.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frw59ivnfuzcnacwlhq39.png" alt="Posicion 9"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;asi mismo podemos usar para las filas, por ejemplo.&lt;br&gt;
&lt;code&gt;grid-row: span 3;&lt;/code&gt;, Le estamos diciendo que abarque 3 líneas en row más de la que actualmente está.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finfywc94zjbp9dsv8z9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finfywc94zjbp9dsv8z9w.png" alt="Posicion 10"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;también podemos usar la línea start + span &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6rly30trc8vg5q8nnkg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6rly30trc8vg5q8nnkg.png" alt="Posicion 11"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;de la imagen anterior queremos por ejemplo que el ítem 3 se posicione en la columna 2 y abarque 3 columnas o 3 line column.&lt;br&gt;
Usariamos &lt;code&gt;grid-column: 2 / span 3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqfpqexmbu57rxiuhrdhy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqfpqexmbu57rxiuhrdhy.png" alt="Posicion 12"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ahora que se posicione en la línea 1 en row y abarque 4 filas o 4 line row. Usariamos &lt;code&gt;grid-row: 1 / span 4&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7f8i16wfh4z3v5olzc9m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7f8i16wfh4z3v5olzc9m.png" alt="Posicion 13"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Numeros negativos
&lt;/h3&gt;

&lt;p&gt;Para posicionar elementos o ítems también podemos usar números negativos, si vemos en alguna imagen anterior de las grids enumeradas podemos darnos cuenta de los números negativos. Estos referencian a la última posición de la grid. &lt;/p&gt;
&lt;h3&gt;
  
  
  Gutters o espaciadores
&lt;/h3&gt;

&lt;p&gt;Es una propiedad que nos permite dar un espacio entre filas &lt;code&gt;row-gap: ;&lt;/code&gt; y columnas &lt;code&gt;column-gap: ;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Ejemplo creamos la siguiente grid&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(3, 1fr);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgit2sisf38eyua0ziptu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgit2sisf38eyua0ziptu.png" alt="Posicion 16"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;column-gap: 20px;
row-gap: 20px;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;o podriamos aplicar el shortcut &lt;code&gt;gap: 20px 20px&lt;/code&gt; o simplemente &lt;code&gt;gap: 20px&lt;/code&gt; que aplica tanto para filas y columnas &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbf85cs58i781oue1l97.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbf85cs58i781oue1l97.png" alt="Posición 17"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DENESE
&lt;/h3&gt;

&lt;p&gt;Al personalizar el area que ocuparan los items dejamos en la grid espacios vacios &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjoya2x0sizbp4l3o0w41.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjoya2x0sizbp4l3o0w41.png" alt="Posicion 18"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esta propiedad nos permite llenar estos espacios vacions de la forma mas ordenada posible.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-auto-flow: dense;    ---&amp;gt; Para filas
grid-auto-flow: column dense;  ---&amp;gt; Para columnas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Grid area
&lt;/h3&gt;

&lt;p&gt;Este es un shortcut para grid-column y grid-row y se define en el siguiente orden &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;La posición inicial de la fila &lt;/li&gt;
&lt;li&gt;La posición inicial de la columna &lt;/li&gt;
&lt;li&gt;La posición final de la fila&lt;/li&gt;
&lt;li&gt;La posición final de la columna &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8zjyhh0j8i5vhkmdtksa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8zjyhh0j8i5vhkmdtksa.png" alt="Posicion 14"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-area: 2 / 2 / 3 / 5;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Posición inicial line row 2&lt;br&gt;
Posición inicial line column 2&lt;br&gt;
Posición final line row 3&lt;br&gt;
Posición final line column 5&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3swca4krwfj4so5htxg5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3swca4krwfj4so5htxg5.png" alt="Posicion 15"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Grid areas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Es la propiedad que nos permite organizar elementos en base a areas&lt;/li&gt;
&lt;li&gt;Las areas pueden ser de una celda minimo y a partir de ahi pueden ser cuadradas o rectangulares &lt;/li&gt;
&lt;li&gt;Nos permite nombrar areas en la grid, es decir ser mas especifico.&lt;/li&gt;
&lt;li&gt;Define una palantilla refereciando nombres otorgados en la grid&lt;/li&gt;
&lt;li&gt;Cada &lt;code&gt;" "&lt;/code&gt; equivale una fila y dentro de las comillas van a ir los nombres de las columnas, estas columnas son implicitas al no definrlas se crean en automatico. Se la escirbe de la siguiente manera.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;grid-template-areas: "columna1 columna2 columna3"&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Para manejar el tamaño de las columnas implicitas podemos usar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-auto-columns: ;   --&amp;gt; columnas
gris-auto-rows: ;      --&amp;gt; filas 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ejemplo. Supongamos que tenemos esta base&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F87tx8ps7fxxdysm1je58.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F87tx8ps7fxxdysm1je58.png" alt="Areas 1"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/*  CREAMOS */

grid-template-columns: repeat(5, 1fr);
grid-template-rows: repeat(3, 1fr);
gap: 10px;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhknbqpv6ymadh5mcn051.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhknbqpv6ymadh5mcn051.png" alt="Areas 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Por ejemplo quiero que header ocupe de la line column 1 a la 4  y la line row de la 1 a la 3. Tambien queremos que main ocupe la line column 4 a la 6 u line row de 1 a la 3&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-areas:
"header header header main main"
"header header header main main";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzl66zefjwh4pwa3u29po.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzl66zefjwh4pwa3u29po.png" alt="Area 3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Supongamos que no queremos que las dos ultimas celdas de main que se encuentran en la segunda fila no esten nobradas o seleccionadas usamos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-areas:
"header header header main main"
"header header header .    .   ";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgvcsmsi088af7ygwk2ec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgvcsmsi088af7ygwk2ec.png" alt="Area 4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora queremos un sidebar de la line column 1 hasta la 3 y line row de la 3 a la 4 y un footer de la line column de la 3 a la 6 y line row de la 3 a la 4&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-areas:
"header header header main main"
"header header header .    .   "
"sidebar sidebar footer footer footer";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa619fo2dvzx9munxcdgc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa619fo2dvzx9munxcdgc.png" alt="area 5"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora queremos posicionar un elemento basta con usar.&lt;br&gt;
&lt;code&gt;grid-area: nombre_area&lt;/code&gt; Ejemplo &lt;/p&gt;

&lt;p&gt;Sabemos que tenemos en el anterior ejemplo nombradas las areas con el template  supongamos que queremos que html header opcupe el templete de header del area&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.header {
    background: crimson;
    grid-area: header; -&amp;gt;nombre del area en el template
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzqeutseuh90n6zv706x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyzqeutseuh90n6zv706x.png" alt="area 6"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Lines Columns y Lines Rows
&lt;/h3&gt;

&lt;p&gt;A traves de las lines columns y lines rows es otra forma de posicionar los elementos. &lt;br&gt;
Al momento de crear las columnas y filas, tambien podemos darle un nombre especifico a las lineas de columnas y filas que estamos creando de la siguiente manera&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-columns: [linea-inicial] 1fr [linea-final] 1fr [linea-final-grid]; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo044zcex9jlf3f1vxcfd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo044zcex9jlf3f1vxcfd.png" alt="Linwas 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Los nombres de las lineas van en el orden de creacion &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Primero esta el nombre de la linea &lt;/li&gt;
&lt;li&gt;Segundo esta la primera columna&lt;/li&gt;
&lt;li&gt;Tercero esta el nombre de la segunda linea &lt;/li&gt;
&lt;li&gt;Cuarto esta la segunda columna&lt;/li&gt;
&lt;li&gt;Quinto esta el nombre de la ultima linea &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Es decir tenemos dos columnas pero tenemos 3 lines columns y se escriben en codigo en el orden de creacion de izquierda a derecha. &lt;/p&gt;

&lt;p&gt;La lineas pueden tener mas de un nombre como vemos a continuacion&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-columns: [linea-inicial] 1fr [linea-final linea-inicial2] 1fr [linea-final-grid];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnmyoxdhotesojny42dkd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnmyoxdhotesojny42dkd.png" alt="Linea 2 "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Esta misma accion la podemos hacer con filas o rows con:&lt;br&gt;
&lt;code&gt;grid-template-rows:  ;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Asi que de esta manera podemos posicionar los items de la siguiente manera por ejemplo&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.item1{
   background: slateblue;
   grid-column: linea2 / linea4;
   grid-row: lnea-media/linea-final;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bh9kurokmo77qxjcv0n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bh9kurokmo77qxjcv0n.png" alt="Linea 3 "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTA:&lt;/strong&gt; Habalando de mejores parcticas se recomienda las lineas de inicio y final de su elemento a posicionar y despues un sufijo relevante. Supongamos que en la siguiente imagen queremos posicionar el item2 como cabecera en al grid &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9r9ziwal2p64wc43f0l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9r9ziwal2p64wc43f0l.png" alt="Linea 4"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.item2{
   background: crimson;
   grid-area: cabecera;
}

Cabecera es el nombre que le dimos a las lineas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-columns: [cabecera-start] 1fr 1fr 1fr 1fr [cabecera-end];

grid-template-rows: [cabecera-start] 1fr 1fr 1fr [cabecera-end];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmgykv8z6avy311d9b0jz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmgykv8z6avy311d9b0jz.png" alt="Linea 5"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Ordenamiento
&lt;/h3&gt;

&lt;p&gt;Funciona igual que el order de flexbox mientras el valor sea mas alto los elementos se pondran al final &lt;br&gt;
Por defecto todos los grid-item tienen valor 0&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-columns: repeat(4, 1fr);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.grid__item1{
    Padding: 20px 0;
    Font-size: 2rem;
    Color: #ffff;
    Text-align: center;
    Order: 1;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnh8z076j7aso5wqtsld4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnh8z076j7aso5wqtsld4.png" alt="ordenmaiento"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Alineacion de un solo elemento en el axis
&lt;/h3&gt;

&lt;p&gt;Se declaran en elos grid-items&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Align-self: ;&lt;/code&gt;&lt;br&gt;
Cuando quieres alinear solo un elemento en el vertical &lt;/p&gt;

&lt;p&gt;&lt;code&gt;justify-self: ;&lt;/code&gt;&lt;br&gt;
Cuando quieres alinear solo un elemento en le eje horizontal &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shortcut&lt;/strong&gt; &lt;br&gt;
&lt;code&gt;place-self: align justify;&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Comandos resumen
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Grid container
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;GRID&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* Direccion de grid en Horizontal o row*/
grid-auto-flow: row;

/*Direccion de fila en vertical o column */
grid-auto-flow: column;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;TRACK - COLUMNAS Y FILAS&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* Crear filas */
grid-template-rows:

/* Crear columnas*/
grid-template-columns:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* valores para crear columnas o filas con grid-template */

repeat(3, 1fr); | 3 columnas de 1 fracccion

min-content max-content; | tamaño minimo y maximo del contenido

fit-content(valor_maximo); | tamaño minimo del contenido y se desborde en el valor_maximo

minmax(valor_minimo valor_maximo); | tamaño minimo y maximo especifico

repeat(auto-fill, 10%); | Cree todas las columnas o filas de 10% que el tamaño del contenedor le permita 

repeat(auto-fit, 10%); | Cree las filas o columnas deacuerdo a los items existentes

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nombrar las lineas al momento de crear filas y columnas&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-columns: [linea-inicial] 1fr [linea-media] 1fr [linea-final];

Lo mismo aplica para rows 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Grid areas&lt;/strong&gt;&lt;br&gt;
Permite crar filas y columnas a traves de una especia de template o plantilla y al mismo tiempo las podemos nombrar.&lt;/p&gt;

&lt;p&gt;Cada fila esta dentro de &lt;code&gt;""&lt;/code&gt;, comillas y dentro de las comillas estan las columnas.&lt;/p&gt;

&lt;p&gt;Este template tiene que ser uniforme y equilivrado las areas  pueden ser de 1 celda o mas simre y cuando sean de forma cuadrada o rectangulares.&lt;/p&gt;

&lt;p&gt;Si quremos dejar vacio una celda remplazamos el valor por un &lt;code&gt;.&lt;/code&gt;, punto&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-template-areas:
" columna1 columna2 columna3 columna4 columna5"
" header   header   header   main     main    " 
" header   header   header   main     main    ";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si queremos manejar el tamaño de las filas o columnas que fueron creadas en automatico&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-auto-columns: valor;
grid-auto-rows: valor;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Alineacion para las columnas y filas&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* En horizontal */
justify-items: strech | start | end | center;

/* En vertical */
align-items: strech | start | end | center;

/* shortcut */
place-items: valor_align valor_justify;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cuando la grid sea mas pequeña que el tamaño del contenedor&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* En horizontal */
justify-content: strech | start | end | center;

/* En vertical */
align-content: strech | start | end | center;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Grid items
&lt;/h3&gt;

&lt;p&gt;Posicion de grid-items con coordenadas atraves de lineas.&lt;br&gt;
Si las lineas tienen nombre pueden ser llamadas con el mimso nombre&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Posicionamiento simple&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* Posicionamiento en columnas*/
grid-column-start: linea_inicio;
grid-column-end: linea_fin;

/* Posicionamiento en filas*/
grid-row-start: linea_inicio
grid-row-end: linea-fin;

/* shortcut */
grid-column: linea_inicio / linea_fin;

grid-row: linea_inicio / linea_fin;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;SPAN Posicionamiento sin definir la linea final&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;De la linea donde esta declarado el item se toma el numero de espacios de filos o columnas que este en span&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;grid-column: span2;
grid-row: 3 span 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Grid area&lt;/strong&gt;&lt;br&gt;
 Posiciona un item o area por corrdenada de lineas&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Patron en orden de lineas:
1. Posicion inicial fila: 2
2. Posicion inicial columna: 2
3. Posiion final fila:3
4. Posicion final columna: 5

entonces...

grid-area: 2 / 2 / 3 / 5 ;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Gutters o espaciadores de filas  y columnas&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;column-gap: valor
row-gap: valor

/* espaciado tanto para filas y columna*/
gap: valor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Dense o relleno ordenado de items segun su direccion&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* Fila*/
grid-auto-fow: dense; 

/* Columna*/
grid-auto-flow: column dense;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Ordenamiento de items&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* En el item se declara */

/* Por defecto en los items*/
order: 0;

/* Si el numero es menor va primero*/
order: -1;

/* Si el numero es mayor va al final */
order: 1;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Alineacion de un solo grid-item&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* Vertical */
align-self: strech | start | end | center;

/* Horizontal */
justify-self: strech | start | end | center;

/* shortcut */
place-self: valor_align-self  valor_justify-self;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>spanish</category>
      <category>css3</category>
      <category>grid</category>
    </item>
    <item>
      <title>Notas rápidas de Flexbox</title>
      <dc:creator>Oswaldo Echeverría</dc:creator>
      <pubDate>Thu, 23 Feb 2023 03:30:12 +0000</pubDate>
      <link>https://dev.to/oswald_echeverri/notas-rapidas-de-flexbox-51b9</link>
      <guid>https://dev.to/oswald_echeverri/notas-rapidas-de-flexbox-51b9</guid>
      <description>&lt;h2&gt;
  
  
  🏁  Tabla de contenido  🏁
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Idea del post&lt;/li&gt;
&lt;li&gt;Lista de etiquetas por defecto en inline y block&lt;/li&gt;
&lt;li&gt;Contexto flex y flex direction&lt;/li&gt;
&lt;li&gt;Lista de valores de propiedades&lt;/li&gt;
&lt;li&gt;Manejo de contenedores&lt;/li&gt;
&lt;li&gt;Manejo de item o elemento&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Idea del post
&lt;/h2&gt;

&lt;p&gt;Esta es una guía rápida de flexbox y el objetivo es que tengas en mano los pasos u anotaciones para usarlo&lt;/p&gt;

&lt;p&gt;Por último. Si te gusto este post déjame un ❤️ &lt;/p&gt;

&lt;h2&gt;
  
  
  Lista de etiquetas por defecto en inline y block
&lt;/h2&gt;

&lt;p&gt;Por defecto, html5 contiene etiquetas que tienen dirección en línea o en bloque sin necesidad de usar la propiedad flex y conocer las etiquetas nos ayudara con más precisión manipular los ítems en nuestros contenedores. A continuación una lista de las etiquetas más usadas &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Etiquetas en bloque&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Etiquetas en linea&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;address&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;img&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;article&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;span&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;aside&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;button&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;blockquote&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;input&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;div&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;label&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;fieldset&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;select&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;figcaption&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;textarea&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;figure&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;br&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;footer&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;a&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;form&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;sup&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;h1&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;sub&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;header&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;script&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;hgroup&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;q&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;hr&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;object&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;li&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;map&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;main&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;i&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;nav&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;var&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;ol&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;time&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;output&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;strong&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;p&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;em&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;pre&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;code&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;section&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;cite&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;table&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;acronym&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;tfoot&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;small&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;ul&amp;gt;&lt;/td&gt;
&lt;td&gt;&amp;lt;big&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Contexto flex y flex direction
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Básicamente, para usar flexbox necesitamos un elemento contenedor y que su contenedor tenga hijos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Al contenedor se lo conoce &lt;code&gt;flex-container&lt;/code&gt; y a los hijos se los conoce como &lt;code&gt;flex-items&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;display: flex;&lt;/code&gt; es la propiedad para activar flexbox&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Además de activar flexbox con la propiedad &lt;code&gt;display: flex;&lt;/code&gt; se necesita darle una dirección a través de la propiedad &lt;code&gt;flex-direction: ;&lt;/code&gt;. El valor puede ser &lt;code&gt;row&lt;/code&gt; o &lt;code&gt;column&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;La dirección que se defina en el &lt;code&gt;flex-direction&lt;/code&gt; será la 
dirección principal o main axis y la dirección que no sé 
escribió será la dirección secundaria o cross axis &lt;/li&gt;
&lt;li&gt;Usar la propiedad &lt;code&gt;flex-direction&lt;/code&gt; nos da la ventaja de poder 
invertir el main axis usando &lt;code&gt;flex-direction: row-reverse&lt;/code&gt; o 
&lt;code&gt;flex-direccion: column-reverse&lt;/code&gt; como lo vemos en las 
siguinetes imagenes:&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wycW4vBH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jut6kiutk8eu55edis2g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wycW4vBH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jut6kiutk8eu55edis2g.png" alt="row direction" width="516" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nerj6DVu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/01h9xrhxhmdxn9xjvgsl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nerj6DVu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/01h9xrhxhmdxn9xjvgsl.png" alt="row reverse" width="532" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--88-ceT70--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8yu7k9jgpm4ctml53rbz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--88-ceT70--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8yu7k9jgpm4ctml53rbz.png" alt="direction column" width="523" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pufoLwod--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2yjo79pav92dnd8vla22.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pufoLwod--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2yjo79pav92dnd8vla22.png" alt="column reverse" width="520" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Si deseamos activar flexbox y en el mismo valor darle la dirección, podemos usar &lt;code&gt;display: inline&lt;/code&gt; para trabajar en filas, o &lt;code&gt;display: block&lt;/code&gt; para trabajar en columnas &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cuando se trabaja en fila, los items tienen el alto y ancho de su contenido por defecto y no poseen algunas propiedades que, en cambio, trabajando en bloque o columna si se pueden aprovechar como alto, ancho y margenes. Entonces, para solucionar eso, podemos usar display en fila con las propiedades de bloque, a esto lo llamamos &lt;code&gt;display: inline-block&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Lista de valores de propiedades
&lt;/h2&gt;

&lt;p&gt;Primero conoceremos los valores que se pueden usar en las propiedades:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;flex-start&lt;/strong&gt; Envia el o los elementos al comienzo del flex-container&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;flex-end&lt;/strong&gt; Envia el o los elementos al final del flex-container&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;center&lt;/strong&gt; Centra el o los elementos en el flex-container &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;space-between&lt;/strong&gt; Distribuye los espacios de los elementos en el flex-container ponendo el primer y el ultimo elemento al raz del container &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;space-around&lt;/strong&gt; Distribuye los espacios de los elementos en el flex-container sin poner el primer y el ultimo elemento al raz del container, esta opcion añade unos margenes entre item por defecto en algunos casos no parecieran estar distribuidos equitativamente &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;space-evenly&lt;/strong&gt; Distribuye los espacios de los elementos en el flex-container sin poner el primer y el ultimo elemento al raz del container, esta opcion si distribuye equitativamente los espacios &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;baseline&lt;/strong&gt; Los flex-items se alinearán en la dirección de su línea base, esta opción se ejecuta en el contenedor, no en el ítem. Ejemplo &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6wzoh6T3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m15xn19cz7w3esxbv69l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6wzoh6T3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m15xn19cz7w3esxbv69l.png" alt="baseline 1" width="267" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rUlrFR4J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6ainfn7zf6hyw2r5ipgq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rUlrFR4J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6ainfn7zf6hyw2r5ipgq.png" alt="baseline 2" width="246" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KYG-VcGl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z08izr4sarqnoyuuahy8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KYG-VcGl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z08izr4sarqnoyuuahy8.png" alt="baseline 3" width="255" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gOXhkzdZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cn5k453pqbjuzg6zsuq7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gOXhkzdZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cn5k453pqbjuzg6zsuq7.png" alt="baseline 4" width="633" height="649"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;nowrap&lt;/strong&gt; Permite que el contenido se desborde del flex-container&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;wrap&lt;/strong&gt; No permite que el contenido se desborde del flex-container reduciendo el tamaño de los elementos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;wrap-reverse&lt;/strong&gt; No permite que el contenido se desborde del flex-container reduciendo el tamaño de los elementos, además invierte su dirección &lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Manejo de contenedores
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Flex-wrap:&lt;/strong&gt; Maneja el desbordamiento del flex-container. &lt;br&gt;
Sus propiedades son: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nowrap&lt;/li&gt;
&lt;li&gt;wrap&lt;/li&gt;
&lt;li&gt;wrap-reverse &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Justify-content:&lt;/strong&gt; Justifica o maneja la alineación en la dirección principal o main axis del flex-container.&lt;br&gt;
Sus propiedades son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;flex-start&lt;/li&gt;
&lt;li&gt;flex-end&lt;/li&gt;
&lt;li&gt;center&lt;/li&gt;
&lt;li&gt;space-between&lt;/li&gt;
&lt;li&gt;space-around&lt;/li&gt;
&lt;li&gt;space-evenly&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Align-items:&lt;/strong&gt; Alinea el contenido en la dirección secundaria o cross axis.&lt;br&gt;
Sus porpiedades son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;flex-start &lt;/li&gt;
&lt;li&gt;flex-end&lt;/li&gt;
&lt;li&gt;center&lt;/li&gt;
&lt;li&gt;baseline&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Align-content:&lt;/strong&gt; Maneja la alineacion del flex-container siempre y cuando halla más de una fila, en tal caso el flex-direction sea row o halla más de una columna si el flex-direction es column.&lt;br&gt;
Sus propiedades son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;flex-start&lt;/li&gt;
&lt;li&gt;flex-end&lt;/li&gt;
&lt;li&gt;center&lt;/li&gt;
&lt;li&gt;space-between&lt;/li&gt;
&lt;li&gt;space-around&lt;/li&gt;
&lt;li&gt;space-evenly&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Manejo de item o elemento
&lt;/h2&gt;

&lt;p&gt;Las siguientes propiedades sirven para el manejo individual del item o elemento. &lt;br&gt;
Un contenedor también puede ser un ítem si es hijo de un &lt;code&gt;flex-container&lt;/code&gt; padre. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Order:&lt;/strong&gt; Ordena los flex-items en el main axis. 
El ítem que tenga el menor número será el primero. 
Por defecto, los ítems tiene valor de 0.
En el siguiente ejemplo el main axis es de 
izquierda a derecha o row y poniéndole el valor de 
1 lo enviamos al final &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C2n5AtNh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/79n5jseazf1ifpn4hgb7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C2n5AtNh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/79n5jseazf1ifpn4hgb7.png" alt="Imagen order" width="875" height="213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flex-grow:&lt;/strong&gt; Es el factor de crecimiento de los flex-items en relacion con otros, es decir, distribuye los espacios sobrantes afectando solo al main axis. Su valor se representa en forma de porciones en números enteros.
En el siguiente ejemplo vemos que exite un espacio sobrante y luego indicamos que los items se distribuyan en porciones iguales de 1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XU2bL25p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9nhl1mhzz6exds1nuz99.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XU2bL25p--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9nhl1mhzz6exds1nuz99.png" alt="Imagen flex grow1" width="387" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dJHO0dA7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/98k4hnat8ql0t1hb1ys8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dJHO0dA7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/98k4hnat8ql0t1hb1ys8.png" alt="Imagen flex grow 2" width="880" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flex-shrink:&lt;/strong&gt; Determina que tanto se encogen los flex-items con respecto al otro, es decir, maneja los espacios faltantes, recordando que display flex no permite que su contenido se desborde, si no más bien los reduce. Siempre que flex-shrink tenga un valor positivo no se desborda el flex-container. Esta propiedad afecta al main axis. Por defecto su valor es 1 y no acepta valores negativos pero sí el 0. Ejemplo
En la siguiente imagen podemos observar que flex-shrink tiene un valor de 0, esto inmediatamente le quita la propiedad flex-shrink y le da el ancho o el alto que este por defecto en el css para el item &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ewARUMqz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ygv671d291wi871suwg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ewARUMqz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ygv671d291wi871suwg.png" alt="flex-shrink" width="849" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flex-basis:&lt;/strong&gt; Indica el tamaño de un flex-item de forma predominante, inclusive a su width base, flex-grow, o flex-thrink. Si su valor es auto su flex-basis sería su height o width, Afecta al main axis.
Ejemplo: &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si ponemos un &lt;br&gt;
flex-direction: row;&lt;br&gt;
flex-basis: 60px;&lt;br&gt;
width: 100 px;&lt;/p&gt;

&lt;p&gt;Predominará el &lt;code&gt;flex-basis&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Ejemplo2:&lt;br&gt;
Que pasa si un ítem tiene contenido y no tiene width suponiendo que es flex y queremos distribuirlos iguales &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e33kgIYd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/khwszuhh2r234lkpf2x2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e33kgIYd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/khwszuhh2r234lkpf2x2.png" alt="basis 1" width="417" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La solucion &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r9jopEz1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9n2y5h6t2fz1mcyhemkh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r9jopEz1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9n2y5h6t2fz1mcyhemkh.png" alt="Baisis 2 " width="880" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se desborda el contenido, pero se distribuye en partes iguales &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Align-self:&lt;/strong&gt; Permite alinear solo a un elemento en el cross axis o direccion secundaria. Hace lo mismo que align-items y con los mismo valores&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;flex-start &lt;/li&gt;
&lt;li&gt;flex-end&lt;/li&gt;
&lt;li&gt;center&lt;/li&gt;
&lt;li&gt;baseline&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Flex:&lt;/strong&gt; Es el shortcut para ejecutar tres propiedades para ítems al mismo tiempo, las cuales son &lt;code&gt;flex-grow&lt;/code&gt;, &lt;code&gt;flex-shrink&lt;/code&gt; y &lt;code&gt;flex-basis&lt;/code&gt;.&lt;br&gt;&lt;br&gt;
Se la usa de la siguiente manera:&lt;br&gt;&lt;br&gt;
&lt;code&gt;flex: valor_grow valor_shrink valor_basis&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Esta propiedad nos permite distribuir &lt;br&gt;
 equitativamente los ítems de 3 formas &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;flex: 1 1 0;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;flex: auto;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;flex: 1;&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>spanish</category>
      <category>css3</category>
      <category>flexbox</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Prepara tu entorno Django para trabajar con HTML, CSS, javascripts, imágenes y GitHub</title>
      <dc:creator>Oswaldo Echeverría</dc:creator>
      <pubDate>Tue, 21 Feb 2023 13:34:17 +0000</pubDate>
      <link>https://dev.to/oswald_echeverri/prepara-tu-entorno-django-para-trabajar-con-html-css-javascripts-imagenes-y-github-37lo</link>
      <guid>https://dev.to/oswald_echeverri/prepara-tu-entorno-django-para-trabajar-con-html-css-javascripts-imagenes-y-github-37lo</guid>
      <description>&lt;h2&gt;
  
  
  🏁  Tabla de contenido  🏁
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Idea del post&lt;/li&gt;
&lt;li&gt;Creando entorno&lt;/li&gt;
&lt;li&gt;Instalacion Django y configuracion del proyecto&lt;/li&gt;
&lt;li&gt;Configuracion de archivos estaticos&lt;/li&gt;
&lt;li&gt;Configuracion de seguridad basica en django&lt;/li&gt;
&lt;li&gt;Contenido en el html y css&lt;/li&gt;
&lt;li&gt;Creando vista para mostrar index.html&lt;/li&gt;
&lt;li&gt;Ejecutando servidor django para mostrar contenido&lt;/li&gt;
&lt;li&gt;Notas de librerias instaladas&lt;/li&gt;
&lt;li&gt;Subir a github&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Idea del post
&lt;/h2&gt;

&lt;p&gt;Lo primero que quiero decir es que para este post supondré que tienes instalado Python, Git, sabes como manejar tu editor de código y tienes una cuenta en GitHub.&lt;/p&gt;

&lt;p&gt;Lo segundo es que uso entorno Windows y visual studio code. Esto no quiere decir que no puedas seguir el post si usas otro editor u otro sistema operativo&lt;/p&gt;

&lt;p&gt;Esta es una guía rápida de pasos para principiantes en Django y el objetivo es que tengas en mano los pasos u anotaciones para preparar tu entorno hasta qué este aprendido los pasos de memoria &lt;/p&gt;

&lt;p&gt;Por último. Si te gusto este post déjame un ❤️ &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTA:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Enseñar con exactitud para que sirve y como funciona cada cosa no esta contemplado para este post asi que este post es una solucion rapida para ejecutar css, javascript, imagenes y html en un proyecto rapido para probar el framework.&lt;br&gt;
En futuros post explicare en mas profundidad &lt;/p&gt;

&lt;h2&gt;
  
  
  Creando entorno
&lt;/h2&gt;

&lt;p&gt;Crea una carpeta donde se alojara el proyecto, para este ejemplo se llamara 'django-template' (usa siempre minúsculas para nombrar archivos y carpetas)&lt;/p&gt;

&lt;p&gt;Abre la carpeta que creaste desde tu editor favorito en mi caso visual studio code.&lt;/p&gt;

&lt;p&gt;Yo manjeo las terminales tanto de git como cmd para usar django en el visual studio asi que en la parte superio encontraras el menu y hay una opcion que dice terminal, se abrira en la parte inferior una terminal de powershell, pero puedes configurar para tener otra terminal o varias terminales en mi caso tengo dos abiertas la de bash para git y la cmd para django de la siguiente manera. Nótese que estas terminales se abren ya en la ubicación de la carpeta&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl8hdkfrnbfkfcovildwz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl8hdkfrnbfkfcovildwz.png" alt="django visual studio"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;En la consola de git bash comenzaremos inicializando el proyecto con git &lt;code&gt;git init -b main&lt;/code&gt;.&lt;br&gt;
Si tienes dudas sobre git o quieres puedes revisar mi post anterior &lt;a href="https://dev.to/oswald_echeverri/notas-rapidas-git-github-46e8"&gt;Notas rápidas de git y github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdaog10vmnuq5rs57ohni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdaog10vmnuq5rs57ohni.png" alt="git init en proyecto"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora nos movemos a la consola de cmd para crear el entorno virtual para django ejecutamos &lt;code&gt;python -m venv env&lt;/code&gt;, siendo env el nombre del entorno. &lt;/p&gt;

&lt;p&gt;Una vez que creamos el entorno debemos activar el entorno,  para ello entramos al directorio env con &lt;code&gt;cd env&lt;/code&gt;. Dentro de env puedes ejecutar &lt;code&gt;dir&lt;/code&gt; para ver los directorios de env, habrá una carpeta a la cual debemos entrar llamada Scripts, asi que &lt;code&gt;cd Scripts&lt;/code&gt; y si vuelves a ejecutar &lt;code&gt;dir&lt;/code&gt; te mostrará un archivo que necesitamos ejecutar para activar el entorno  así que dentro de Scripts ejecutamos &lt;code&gt;activate&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7c8evw6414ud3rjr3b8g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7c8evw6414ud3rjr3b8g.png" alt="activar entorno virtual"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Para saber si el entorno esta activo puedes ver "(env)" en la consola como en la imagen anterior &lt;/li&gt;
&lt;li&gt;Cada vez que vallas a trabajar con django debes activar el 
entorno env y cada vez que lo dejes de usar al final de tu dia 
de desarrollo debes desactivarlo asi mismo debes ir a la misma 
ubicacion antes mencionada y en vez de activate escribes 
&lt;code&gt;deactivate&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;No olvides luego de activar  o desactivar regresar a la 
carpeta principal del proyecto para ejecutar todos los otros 
comandos. Puedes regresar a la carpeta anterior con &lt;code&gt;cd ..&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Instalacion Django y configuracion del proyecto
&lt;/h2&gt;

&lt;p&gt;Antes de instalar django actualizamos el comando pip en cmd con &lt;code&gt;python -m pip install --upgrade pip&lt;/code&gt;. Una vez actualizado ahora instalamos django con &lt;code&gt;python -m pip install django&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7ufqm9h9voe6jt8hwx2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7ufqm9h9voe6jt8hwx2.png" alt="pip update conf"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2dgy22xfjjxqdbnfqjs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2dgy22xfjjxqdbnfqjs.png" alt="Install django"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora inicializamos el proyecto django con &lt;code&gt;django-admin startproject core .&lt;/code&gt;, Siendo core el nombre que le otorgas.&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Algunos desarrolladores usan el startproject como core ya que 
es la aplicacion principal de django en donde administra el 
setting general e inician una nueva app en django para iniciar 
el desarrollo y dejan a core solo para configuraciones &lt;/li&gt;
&lt;li&gt;Por otro lado puedes usar el mismo startproject para un 
proyecto sensillo como una landing page &lt;/li&gt;
&lt;li&gt;El punto que va despues de la plabra core significa que 
queremos la carpeta startproject en el directorio raiz.
Recordemos que dentro de django no puedes unir palabras con &lt;code&gt;-&lt;/code&gt; 
(guion medio) tienes que hacerlo con &lt;code&gt;_&lt;/code&gt; (sub guion), esto lo 
decimos por el nombre que le daremos al startproject si no lo 
haces con sub guion te saldrá error&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;En este caso, como es un programa sencillo usaremos la web en el mismo startproject la llamaremos 'landing_page' &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuw9l1p0agtbmtkgekqlb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuw9l1p0agtbmtkgekqlb.png" alt="startproject ejemplo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Configuraremos el documento setting de nuestra startproject el cual es este &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlpggqxmqzgmgo73uhhb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvlpggqxmqzgmgo73uhhb.png" alt="setting startproject"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lo primero que haremos es añadir el startproject a las apps.&lt;br&gt;
Buscamos dentro de setting la parte donde diga &lt;strong&gt;INSTALLED_APPS&lt;/strong&gt; y añadimos el nombre de nuestra startproject de la siguiente manera &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sin olvidar ni las comillas &lt;code&gt;''&lt;/code&gt; ni la coma &lt;code&gt;,&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ac6n6ut4nvcc437p08l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ac6n6ut4nvcc437p08l.png" alt="intall app conf"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuracion de archivos estaticos
&lt;/h2&gt;

&lt;p&gt;Ahora configuraremos la ubicacion donde estaran los archivos html el cual se llaman templates en django y los archivos de css, javascripts, imagenes en django se llaman archivos staticos. Dentro del mismo archivo settings buscamos  &lt;strong&gt;STATIC_URL='static/'&lt;/strong&gt; y lo modificamos de la siguiente forma &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8nx5gxoizkpfgx2cqnmy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8nx5gxoizkpfgx2cqnmy.png" alt="archivos staticos "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;luego buscamos &lt;strong&gt;TEMPLATES&lt;/strong&gt; para indexar la carpeta  templates&lt;br&gt;
en donde añadimos &lt;code&gt;os.path.join(BASE_DIR, 'templates')&lt;/code&gt; donde esta señalado por la flecha &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3pnhkc6eh8rxvqt5doil.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3pnhkc6eh8rxvqt5doil.png" alt="html indexacion "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;después de remplazar el &lt;strong&gt;STATIC_URL&lt;/strong&gt; y &lt;strong&gt;TEMPLATES&lt;/strong&gt; por el contenido anterior importamos el &lt;em&gt;os&lt;/em&gt; que nos pide para poder referenciar las carpetas estaticas, esto lo hacemos al principio del archivo setting &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmg0tewhf6rstwgw1aha1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmg0tewhf6rstwgw1aha1.png" alt="Import os "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lo siguiente que vamos a hacer es crear los directorios que faltan. Ahora cambiamos de terminal a la de git bash y creamos en el directorio principal la siguiente estructura. Recordando que usamos &lt;code&gt;mkdir&lt;/code&gt; para crear carpeta y &lt;code&gt;touch&lt;/code&gt; para crear archivos&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0u9cdi7mqxmnfi5gtahm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0u9cdi7mqxmnfi5gtahm.png" alt="estructura"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkb9rj5q7hmz71887j5sz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkb9rj5q7hmz71887j5sz.png" alt="Image 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fva2t0cdrvprvkgu5ulqf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fva2t0cdrvprvkgu5ulqf.png" alt="Image 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;quedando la estructura de la siguiente manera &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp0g7bxs789xj0fu44e5n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp0g7bxs789xj0fu44e5n.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Los nombres de la carpeta static y template pueden ser cambiados pero habria que cambiarlos tambien en el documento setting del startproject, aun asi no se lo recomienda ya que es un estandard&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Por ultimo en la misma altura de static y template creamos un archivo .ignore y un archivo README.md&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94yy1p13vykszc081n4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94yy1p13vykszc081n4m.png" alt="ignore y readme"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuracion de seguridad basica en django
&lt;/h2&gt;

&lt;p&gt;Debemos saber que cuando subimos un proyecto público a GitHub o al servidor debemos de cuidar de subir información relevante que alguien mal intencionado pueda usarlo para vulnerar nuestra web.&lt;/p&gt;

&lt;p&gt;Primero: Modificamos .ignore&lt;br&gt;
Vamos a &lt;a href="https://www.toptal.com/developers/gitignore" rel="noopener noreferrer"&gt;https://www.toptal.com/developers/gitignore&lt;/a&gt; y ponemos django en el buscador para que nos genere el contenido sugerido o estandard de seguridad que debemos ignorar antes de subir nuestro proyecto &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92543twltejsk1qxhedo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92543twltejsk1qxhedo.png" alt="ignore 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9x9qc7riveqbkziv0w5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9x9qc7riveqbkziv0w5.png" alt="ignore 3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Seleccionamos todo con Control + a, copiamos todo con Control + c  en el archivo que creamos &lt;code&gt;.ignore&lt;/code&gt;&lt;br&gt;
Adicional añadimos unas líneas que nos permiten ignorar al momento de subir las imágenes, ya que subir imágenes a git es mala práctica &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw0kjyft0n9cd8j7kag8x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw0kjyft0n9cd8j7kag8x.png" alt="ignore 4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Segundo: Guardaremos la keys de django y debug en variables seguras&lt;/p&gt;

&lt;p&gt;Primero creamos en git bash un archivo con el nombre &lt;code&gt;.env&lt;/code&gt; al mismo nivel del archivo setting, es decir, dentro de la carpeta donde están los archivos de configuración del startproject&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03emfpmtk8es8810w4d3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03emfpmtk8es8810w4d3.png" alt="env conf1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instalamos desde el cmd con el entorno (env) activado y en el directorio raiz &lt;code&gt;pip install django-environ&lt;/code&gt;  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0eazjcrtph6qun4ssukk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0eazjcrtph6qun4ssukk.png" alt="Ienviron 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En el archivo setting configuramos y exportamos environ. Las importaciones van arriba del documento y la configuración en donde está la key de la siguiente manera &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fril44udkinbfjp03yehu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fril44udkinbfjp03yehu.png" alt="environ 333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lo que está en el cuadro amarillo es lo que escribimos ahora configurando environ. Lo que está señalado por las flechas celestes es lo que vamos a esconder a través de environ que es el key y el debug lo cortamos y lo pegamos en el archivo &lt;code&gt;.env&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Creamos nuevas variables con unas pequeñas modificaciones&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;El nombre de la variable y la variable que es el key deben estar pegados&lt;/li&gt;
&lt;li&gt;No copiamos ni las comillas simples ni la palabra &lt;code&gt;django-insecure-&lt;/code&gt;  incluyendo el guion medio, esto mismo hacemos con debug. Lo vemos en el siguiente ejemplo &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvuuxrm5x19m239z5a6cd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvuuxrm5x19m239z5a6cd.png" alt="environ configg 4444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora nos dirigimos al documento setting y remplazamos las variables de la siguiente manera&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ysq87lmrdnk3sojwdpt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5ysq87lmrdnk3sojwdpt.png" alt="cambio variable environ"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;De esta forma ya tenemos aseguradas nuestras variables. Adicionalmente, tienes que saber que en el archivo &lt;code&gt;.ignore&lt;/code&gt; que generamos anteriormente ya contiene &lt;code&gt;*.env&lt;/code&gt; para que no se suba al GitHub &lt;/p&gt;

&lt;h2&gt;
  
  
  Contenido en el html y css
&lt;/h2&gt;

&lt;p&gt;Ahora configuraremos el index.html, css para que se muestre en el servido el contenido &lt;/p&gt;

&lt;p&gt;Lo primero que hacemos es en index.html poner un &lt;code&gt;&amp;lt;h1&amp;gt;&amp;lt;/h1&amp;gt;&lt;/code&gt; que luego lo modificaremos con css para probarlo pero antes, al inicio de la hoja de html5 debemos poner la siguinete regla &lt;code&gt;{% load static %}&lt;/code&gt;&lt;br&gt;
esto permite que el html5 carge cualquier archivo o codigo que sea llamado desde la carpeta static creadas anteriormente y para referenciar el archivo css, js o imagen lo llamamos de la siguinete manera &lt;code&gt;{% static 'ubicacion' %}&lt;/code&gt;. No es necesario usar &lt;code&gt;./&lt;/code&gt; para indicar el directorio raiz ya que esta seteado en config la ubicacion. Podemos verlo en el siguinete ejemplo&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fag5ipf9wnknyx25zd08e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fag5ipf9wnknyx25zd08e.png" alt="contenido html"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;En cambio en el css no se pone nada para dar estilos asi solo le cambiaremos el color al h1 &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxo652um904xpeduyhpqu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxo652um904xpeduyhpqu.png" alt="css mod h1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Creando vista para mostrar index.html
&lt;/h2&gt;

&lt;p&gt;Guardamos los cambios y por ultimo le diremos a django que publique nuestro index.html creando una vista&lt;/p&gt;

&lt;p&gt;Primero crearemos un archivo con el nombre &lt;code&gt;views.py&lt;/code&gt; dentro de 'landing_page' o en el mismo nivel del setting&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpdduee4h41ydeotq5p4c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpdduee4h41ydeotq5p4c.png" alt="archivo views py "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Cabe recalcar que solo es un archivo views.py ya que en la capture  sale como ejecutado dos veces &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ahora configuraremos el views.py de la siguiente manera &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0bvnct5vuna8h77nh5tq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0bvnct5vuna8h77nh5tq.png" alt="configuracion indes y view "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ahora configuramos la url en &lt;code&gt;urls.py&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsywxq64b83lc2h5d5vzq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsywxq64b83lc2h5d5vzq.png" alt="configuracion urls "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ejecutando servidor django para mostrar contenido
&lt;/h2&gt;

&lt;p&gt;Por ultimo hacemos todos los cambios guardando con Control + s en visual studio.&lt;br&gt;
Ahora podemos correr el servidor.&lt;br&gt;
En el cmd ejecutamos en la raiz &lt;code&gt;python manage.py runserver&lt;/code&gt;, nos saldra lo siguiente &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz2uunjvi117oougqc6tc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz2uunjvi117oougqc6tc.png" alt="ejecucion django"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;El mensaje de color rojo significa que hay migraciones 
pendientes de la base de datos pero si no se usan no hay 
problema&lt;/li&gt;
&lt;li&gt;Para podemos ir al navegador y escribir la direccion que http 
que sale en la imagen o podemos hacer &lt;code&gt;Control + click&lt;/code&gt; para 
en 
la direccion para que se nos habra en el navegador&lt;/li&gt;
&lt;li&gt;Recuerda que podras ver la pagina siempre y cuando el servidor 
se este ejecutando &lt;/li&gt;
&lt;li&gt;Para dejar de ejecutar el servidor en la consola le damos 
&lt;code&gt;Control + c&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsxcbaalj7p8rxz82qvbw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsxcbaalj7p8rxz82qvbw.png" alt="Mostrar en pantalla"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como podemos ver todo esta listo para hacer una landing page y usar css, javascript y usar imagenes&lt;/p&gt;

&lt;h2&gt;
  
  
  Notas de librerias instaladas
&lt;/h2&gt;

&lt;p&gt;Es muy comun que usemos un archivo para anotar todas las librerias usadas en un proyecto para que podamos ver las versiones, y si necesitamos instalarlas de nuevo sea mas sensillo para esto &lt;br&gt;
ejecutamos en el cmd el siguiente comando &lt;code&gt;pip freeze &amp;gt; requirements.txt&lt;/code&gt; en la raiz principal, es decir dentro de &lt;code&gt;django-template&lt;/code&gt;.&lt;br&gt;
El comando lo que hace es hacer una lista de las librerias usadas en un documentos txt con el nombre de requirements.&lt;/p&gt;

&lt;p&gt;Ahora si en algun momento necesitamos ejecutar todas las librerias usadas entonces usamos &lt;code&gt;pip install -r requirements.txt&lt;/code&gt; o &lt;code&gt;pip3 install -r requirements.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Si solo queremos saber por consola las librerias que estamos usando o estan instaladas podemos ejecutar &lt;code&gt;pip freeze&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;En cambio se deseamos borrar alguna libreria usamos &lt;code&gt;pip uninstall nombre_libreria&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Asi que en este caso guardamos en el documento txt &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvydwxs9v61nht92zu3t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvydwxs9v61nht92zu3t.png" alt="lista de librerias instaladas"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Subir a github
&lt;/h2&gt;

&lt;p&gt;Lo primero que hacemos es apagar el servidor web en caso que este encendido con &lt;code&gt;Control + c&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Luego en la consola de git bash hacer &lt;code&gt;git add .&lt;/code&gt; y &lt;code&gt;git commit -m "Entorno listo para probar codigo"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65m4lm0m9p361jgc63o9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F65m4lm0m9p361jgc63o9.png" alt="Git status "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Antes de hacer &lt;code&gt;git add .&lt;/code&gt; recuerda que tienes que estar en el directorio raiz es decir en &lt;code&gt;django-template&lt;/code&gt; para que hagas un solo add y commit. En mi caso por confundirme de carpeta primero hice git add y commit a la carpeta &lt;code&gt;landing-page&lt;/code&gt; es decir que solo hizo add y commit a todo lo que contenia esa carpeta&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsvcvo2kooqja9yh483i4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsvcvo2kooqja9yh483i4.png" alt="git add"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchnxof77q3p87svrm3co.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fchnxof77q3p87svrm3co.png" alt="Git commit"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora hare el segundo add y commit pero al directorio raiz. Igual este error puede ser una buena parctica para que elimines el commit y hagas un solo commit usando las notas de mi anterior post &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0n2ct4zhhtgaxjypkrcp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0n2ct4zhhtgaxjypkrcp.png" alt="git log "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como puedes ver usando &lt;code&gt;git log&lt;/code&gt; vemos los dos commit que realice.&lt;/p&gt;

&lt;p&gt;Ahora crearemos un repositorio en github con el nombre &lt;code&gt;django-template&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzwfajarwl7ss00v1vik8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzwfajarwl7ss00v1vik8.png" alt="repositorio github"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;una vez creado el repositorio vacio nos sale una guia para subir el repositorio&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxgjxix85jgdc7duuz1z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxgjxix85jgdc7duuz1z.png" alt="ayuda github "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copiamos el link http del repositorio &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgyo41chn5vc8lvcthxk2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgyo41chn5vc8lvcthxk2.png" alt="imagen repo git "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ahora no posicionaremos en el directorio raiz en la consola de git bash para subir el repositorio y ejecutamos &lt;code&gt;git remote add origin pegar_link&lt;/code&gt; con este comando añadimos el repositorio de github a nuestro git local y por ultimo &lt;code&gt;git push -u origin main&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8i9zoplm19rh98kx6hp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8i9zoplm19rh98kx6hp.png" alt="git push "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si resfrescamos el navegador en el github podemos ver que todo se ha subido correctamente &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb6jzolg1ozro3f6migk8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb6jzolg1ozro3f6migk8.png" alt="subido todo correctamente"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;De ahora en adelante cada vez que deses subir actualizaciones a github recuerda &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Corregir todos los errores antes de subirlo&lt;/li&gt;
&lt;li&gt;hacer &lt;code&gt;git add&lt;/code&gt; y &lt;code&gt;git commit&lt;/code&gt; en la raiz o en la rama que deses subir &lt;/li&gt;
&lt;li&gt;Antes del git push hacer hacer un refrescar tu respositorio local con el de github con un pull ejecutando &lt;code&gt;git pull origin main&lt;/code&gt; si te sale already ahora si ejecutar &lt;code&gt;git push origin main&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>django</category>
      <category>python</category>
      <category>spanish</category>
      <category>github</category>
    </item>
    <item>
      <title>Notas rápidas Git - GitHub</title>
      <dc:creator>Oswaldo Echeverría</dc:creator>
      <pubDate>Thu, 16 Feb 2023 10:32:51 +0000</pubDate>
      <link>https://dev.to/oswald_echeverri/notas-rapidas-git-github-46e8</link>
      <guid>https://dev.to/oswald_echeverri/notas-rapidas-git-github-46e8</guid>
      <description>&lt;h2&gt;
  
  
  🏁 TABLA DE CONTENIDO 🏁
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Idea de este post&lt;/li&gt;
&lt;li&gt;Configuracion inicial&lt;/li&gt;
&lt;li&gt;Comandos unix relevantes&lt;/li&gt;
&lt;li&gt;Git ignore&lt;/li&gt;
&lt;li&gt;README.md&lt;/li&gt;
&lt;li&gt;Atajos y soluciones&lt;/li&gt;
&lt;li&gt;Inicializar un repositorio&lt;/li&gt;
&lt;li&gt;Manejo del staging area&lt;/li&gt;
&lt;li&gt;
Git commit

&lt;ul&gt;
&lt;li&gt;Comandos avanzados para commit&lt;/li&gt;
&lt;li&gt;Comandos avanzados de sobreescritura&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Git tag o Etiquetas&lt;/li&gt;

&lt;li&gt;Git log&lt;/li&gt;

&lt;li&gt;Ramas&lt;/li&gt;

&lt;li&gt;

Git merge o fusiones

&lt;ul&gt;
&lt;li&gt;Algunos conflictos con merge&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Git rebase&lt;/li&gt;

&lt;li&gt;Git stash&lt;/li&gt;

&lt;li&gt;Git clean&lt;/li&gt;

&lt;li&gt;Git cherry pick&lt;/li&gt;

&lt;li&gt;Git Reset y Reflog&lt;/li&gt;

&lt;li&gt;Git grep&lt;/li&gt;

&lt;li&gt;Comandos para lider de equipo de desarrollo o scrum&lt;/li&gt;

&lt;li&gt;Git alias&lt;/li&gt;

&lt;li&gt;

GitHub

&lt;ul&gt;
&lt;li&gt;Inicializar un repositorio local y en github vacio&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Idea de este post
&lt;/h2&gt;

&lt;p&gt;Este post está pensado para personas que les gusta aprender de una forma rápida o simplemente quieres tener como desarrollador a la mano una guía simple y sencilla de los comandos y soluciones de Git y GitHub.&lt;/p&gt;

&lt;p&gt;Como desarrollador uso Windows, así que los comandos están enfocados a este sistema operativo.&lt;/p&gt;

&lt;p&gt;Es una guía completa de comandos básicos y avanzados que he aprendido y usado, creo que son los más relevantes para la solución inmediata del entorno de trabajo personal y en equipo&lt;/p&gt;

&lt;p&gt;Si te deseas que añada algun otro comando o resolviste algun problema en tu trabajo y no esta esa solucion aqui puedes enviarla con capturas de pantalla &lt;a href="https://linktr.ee/oswaldoecheverria" rel="noopener noreferrer"&gt;a mi correo&lt;/a&gt; con tus datos de contacto para agregarlas otorgandote el respectivo credito &lt;/p&gt;




&lt;h2&gt;
  
  
  Configuracion inicial
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Comandos para saber la configuración actual de Git
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config 
git config &lt;span class="nt"&gt;--list&lt;/span&gt; | &lt;span class="nb"&gt;grep &lt;/span&gt;user
git config &lt;span class="nt"&gt;--list&lt;/span&gt; &lt;span class="nt"&gt;--show-origin&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Comandos para configuración personal con tu usuario
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Escribe aqui tu nombre"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"Escribe aqui tu correo git"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; core.editor notepad
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Comandos unix relevantes
&lt;/h2&gt;

&lt;p&gt;Todos los siguientes comandos los puedes ejecutar desde la terminal gitbash&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Crear carpeta &lt;code&gt;mkdir nombre_carpeta&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Crear archivo &lt;code&gt;touch nombre_archivo.extencion_archivo&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Visualizar contenido de archivo en consola &lt;code&gt;cat nombre_archivo.extencion&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Editar archivo en blog de nota de Windows &lt;br&gt;
&lt;code&gt;notepad nombre_archivo.extencion&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ver ubicación actual &lt;code&gt;pwd&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Listar archivos ocultos &lt;code&gt;ls -al&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Limpiar consola en gitbash &lt;code&gt;clear&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Git ignore
&lt;/h2&gt;

&lt;p&gt;Es un documento en donde nos permite ignorar una serie de archivos que por buenas practicas no deben subirse al repositorio git ni guthub ya que git esta diseñado para alojar texto plano.&lt;/p&gt;

&lt;p&gt;¿Que no debería subir a git y github?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Passwords&lt;/li&gt;
&lt;li&gt;Imgenes jpj, png etc&lt;/li&gt;
&lt;li&gt;Videos&lt;/li&gt;
&lt;li&gt;Entre otras&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Como usar git ignore&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dentro de la carpeta de tu proyecto despues haber iniciado git en tu proyecto y antes de meterle codigo creas un archivo tipo ignore. Si estas en la consola de git puedes usar.
&lt;code&gt;touch .ignore&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Editas el archivo con tu editor de texto favorito o notepad &lt;code&gt;notepad .ignore&lt;/code&gt; y escribimos todo lo que debe ser ignorado ejemplo.
Podemos escribir linea a linea 

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;*&lt;/code&gt; Para ignorar todo tipo de archivo&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;*.jpg&lt;/code&gt; Todas las imagenes .jpg&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;*.png&lt;/code&gt; Todas las imagenes .png&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;*.svg&lt;/code&gt; Todas las imagenes .svg&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Despues de guardar la configuracion .ignore haces commit &lt;code&gt;git commit -am "Git ignore"&lt;/code&gt;. 
Una ves realizado el commit ahora si metele mano al codigo&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Si quieres saber mas sobre como usar git ignore puedes entrar en Github y buscar librerias oficiales y leer su .ignore para que sepas y estudies como funcionan y normalmente que se ignora en el desarrollo deacuerdo a la tecnologia que uses.&lt;/p&gt;

&lt;p&gt;Ahora te dejare un recurso que puedes usar. Si vas a  &lt;a href="https://www.toptal.com/developers/gitignore" rel="noopener noreferrer"&gt;ésta página&lt;/a&gt; podras escribir la tecnologia que usas y te generar un archivo &lt;code&gt;.ignore&lt;/code&gt; de guia mostrandote lo que deberias ignorar en el desarrollo.&lt;/p&gt;

&lt;p&gt;Haremos un ejemplo de generar un .ignore para django&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0aegxd0ynn7723gcusgm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0aegxd0ynn7723gcusgm.png" alt="Biscador de generador ignore"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ponemos en el navegador django y nos generara el archivo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F76bzkskvlygzktgg612k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F76bzkskvlygzktgg612k.png" alt="git ignore django"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Si eres nuevo usando git te recomiendo que desde tu primer proyecto uses git ignore ya que cuando recien comenzamos a aprender git trabajamos con imagenes para landing page svg y pngs&lt;/li&gt;
&lt;li&gt;Si trabajas con imagenes  y quieres guardarlas en tu git te invito a buscar un servidor que aloje imagenes y te de el link de ellas para que la puedas susar en tu proyecto &lt;/li&gt;
&lt;li&gt;En caso que trabajes con imagenes locales te recomiendo disminuir su peso quitandole toda informacion meta de ella para ello podrias usar el siguiente &lt;a href="https://tinypng.com/" rel="noopener noreferrer"&gt;recurso&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  README.md
&lt;/h2&gt;

&lt;p&gt;Cuando estas empezando con git tarde o temprano entras en GitHub en donde usarás este archvivo que por recomendación debes crearlo despues del .ignore antes de meterle codigo a tu proyecto con git, entonces usa &lt;code&gt;touch README.md&lt;/code&gt;. No te olvides de hacer commit despúes de la creación del archivo.&lt;/p&gt;

&lt;p&gt;La ultima recomendación es a nivel de Github, cuando crees un repositorio en GitHub, crealo sin el README.md ya que cuando creas un repo te pregunta si quieres generar ese archivo.&lt;br&gt;
crealo mejor tu mismo desde tu repositorio local y cuando hagas tu primer push se enviará el README.md con tu proyecto. De esta manera evitarás conflictos que para alguien nuevo es un dolor de cabeza. &lt;br&gt;
Este conflicto se suele dar ya que antes de hacer push deberias hacer pull al servidor eso sirve para primero actualizar tu repositorio local con el de Github por que en realidad son dos repositorios distintos entonces si tienes el README.md en Github tendrás que resolverlo con un merge entre dos ramas distintas, borrar la rama antigua local y dejar la actual que ahora es la de github   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Para que sirve?&lt;/strong&gt;&lt;br&gt;
Este archivo sirve para mostrar tipo documentación lo que hace tu repositorio o lo que quieras decir de tu repositorio en Github donde todo el mundo lo verá.&lt;/p&gt;

&lt;p&gt;Para escribir en el README.md debes usar html o MARKDOWN Asi que te recomendare el siguiente recurso, &lt;a href="https://pandao.github.io/editor.md/en.html" rel="noopener noreferrer"&gt;aquí&lt;/a&gt;, tendrás un ejemplo y un editor  &lt;/p&gt;




&lt;h2&gt;
  
  
  Atajos y soluciones
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Si ingresas un commit sin mensaje y quieres salir del error usa &lt;br&gt;
&lt;code&gt;esc + shift + z + z&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Para escribir en el editor vim &lt;code&gt;esc i&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Para salir de alguna venta de información como &lt;code&gt;git log&lt;/code&gt; usamos la letra &lt;code&gt;q&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ayuda de comandos git &lt;code&gt;git help comando_git&lt;/code&gt; o &lt;br&gt;
&lt;code&gt;git comando_git --help&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ver el historial de comandos usados &lt;code&gt;git history&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Se desplegara una lista enumerada y ordenada con todos los comandos usados y si queremos hacer  uso de alguno de ellos escribimos &lt;code&gt;!&lt;/code&gt; seguido del numero del comando&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Inicializar un repositorio
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Si no tienes creada ni la carpeta del proyecto.&lt;br&gt;
Esté comando, te creará la carpeta y te iniciará el proyecto en git &lt;br&gt;
&lt;code&gt;git init nombre_carpeta_proyecto&lt;/code&gt; o si piensas que lo vas a usar en GitHub &lt;code&gt;git init nombre_carpeta_proyecto -b main&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;En caso de que ya esté creada la carpeta del proyecto.&lt;br&gt;
Dentro de la carpeta ejecutas &lt;code&gt;git init&lt;/code&gt; y si lo vas usar con github&lt;br&gt;
&lt;code&gt;git init -b main&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Manejo del staging area
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Observar el estado de los archivos &lt;code&gt;git status&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Agregar un solo archivo al staging area &lt;br&gt;
&lt;code&gt;git add nombre_archivo.extencion&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Agregar todos los archivos al staging area sin excepciones, es decir, con los que estemos trabajando, modificando o no &lt;code&gt;git add .&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Agregar todos los archivos con los que estamos trabajando al staging area &lt;code&gt;git add -A&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sacar un archivo del staging sin que los borre del disco duro, pero git le sigue dando seguimiento &lt;br&gt;
&lt;code&gt;git reset HEAD nombre_archivo.extencion&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Este es el comando mas usado ya que aveces solo queremos que el archivo salga de la zona de staging en un estado de untracked. Esto significa que de inmediato podras hacer git add y git commit nuevamente.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Sacar un archivo del staging area y del seguimiento de git 
&lt;code&gt;git rm -cached nombre_archivo.extencion&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Una vez que apliques este comando sacaras del repositorio de git el archivo, no lo borra del disco duro. Si quisieras hacerle un add y commit no lo encontrarias en el repositorio, tendrias que esperar hasta el proximo commit para que apareciera.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sacar un archivo del stagig area y borrarlo de forma local &lt;br&gt;
&lt;code&gt;git rm -f nombre_archivo.extencion&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Comprobar si un archivo fue agregado al staging area aunque parezca que no &lt;code&gt;git add -n nombre_archivo.extencion&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Recuperar un archivo borrado por error &lt;br&gt;
&lt;code&gt;git checkout -- nombre_archivo.extencion&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ver diferencias entre el estado actual y el staging &lt;code&gt;git diff&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Git commit
&lt;/h2&gt;

&lt;p&gt;El proceso de tradicional de realizar un commit es:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Primero: Ver el estado del archivo modificado &lt;code&gt;git status&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;segundo: Añadir archivo al stagind area 📌 &lt;br&gt;
&lt;code&gt;git add nombre_archiv.extencion&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tercero: Hacer commit añadiendo una descripción del commit &lt;br&gt;
&lt;code&gt;git commit -m "Entre comillas escribe la descripcion"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Comandos avanzados para commit
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Hacer commit directamente sin pasar por el staging &lt;br&gt;
&lt;code&gt;git commit -am "Descripcion"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ver la diferencia de un commit con otro&lt;/strong&gt;&lt;br&gt;
Para esto necesitamos el identificador de los dos commit.&lt;br&gt;
Para ver el identificador podemos usar &lt;code&gt;git log&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Nota: El identificador del commit es el numero alfanumerico. Este numero es muy largo pero es suficiente para identificarlo si solo usamos los primeros 5 numeros.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Luego de saber el identificador de los dos commit usamos &lt;br&gt;
&lt;code&gt;git diff identificador1 identificador2&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sobreescribir un commit&lt;/strong&gt;.
Este comando lo usamos inmediatamente después que hemos cometido el error.
Antes de ejecutarlo corrigen el error
&lt;code&gt;git commit --amed -m "Descripcion"&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Podemos reescribir solo la descripcion, algun error, u algo faltante.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Comandos avanzados de sobreescritura
&lt;/h4&gt;

&lt;p&gt;Los siguientes comandos hay que tratarlos con cuidado porque podríamos perder código en el proceso&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Nos quitará el último commit, pero los archivos los dejará preparado en el staging para un nuevo commit. Usamos &lt;code&gt;git log&lt;/code&gt; para ver el identificado del commit y luego 📌 &lt;br&gt;
&lt;code&gt;git reset --soft identificador&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nos quitará el último cambio y datos, no se guardarán en ningún lugar ni en el staging ni en el disco duro. Usamos &lt;code&gt;git log&lt;/code&gt; para ver el identificado del commit y luego 📌 &lt;br&gt;
&lt;code&gt;git reset --mixed identificador&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Borra todos los commits, stagings y working hasta el punto del commit que se requiere. Usamos &lt;code&gt;git log&lt;/code&gt; para ver el identificado del commit y luego 📌 &lt;br&gt;
&lt;code&gt;git reset --hard identificador&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Recuperar commits depues de un reset hard&lt;/strong&gt;.&lt;br&gt;
Lo primero que necesitamos es buscar el identificador de un commit seguro antes del reset hard.&lt;br&gt;
Usamos &lt;code&gt;git reflog&lt;/code&gt; o &lt;code&gt;git log -g&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Una vez encontrado el commit seguro ejecutamos &lt;br&gt;
&lt;code&gt;git reset --hard identificador_commit_seguro&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ver un commit a través del tiempo&lt;/strong&gt;.
Sabemos que a medida que se hacen los commit se van añadiendo cambios. Entonces este comando nos ayuda a ver el estado y el contenido de un commit pasado, es decir, antes de los cambios actuales.
Los cambios que se realicen no serán permanentes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;: Para ir al estado anterior del commit.&lt;br&gt;
Usamos &lt;code&gt;git log&lt;/code&gt; para ver el identificado del commit y luego &lt;br&gt;
&lt;code&gt;git checkout identificador nombre_archivo&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;: Para regresar al tiempo actual &lt;code&gt;git checkout master&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;: Si queremos hacer permanentes los cambios que hemos hecho en &lt;br&gt;
un commit pasado. Después de hacer los cambios correspondientes hacemos &lt;code&gt;git add .&lt;/code&gt; y 📌 &lt;br&gt;
&lt;code&gt;git commit -m "Descripcion"&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Se hace un commit y los cambios seran enviados al commit &lt;br&gt;
actual.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mover un commit de rama&lt;/strong&gt;. Este commit se lo debe ejecutar dentro de la rama donde se lo quiere mover 📌 &lt;br&gt;
&lt;code&gt;git cherry-pick identificador_commit&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Visualizar en consola los cambios de un archivo en su historia&lt;/strong&gt;. Este comando nos permitirá observar los cambios que existe en un archivo en el actual commit con el mismo archivo pero en el commit pasado. No solo nos muestra las modificaciones entre un commit y el otro, sino también donde están los cambios en la base de datos, diferencia en peso, bytes 📌 &lt;br&gt;
&lt;code&gt;git show nombre_archivo.extencion&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Que cambios hubo entre un commit y otro&lt;/strong&gt; &lt;br&gt;
&lt;code&gt;git diff identificador1 identificador2&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;El orden de los identificadores hara que muestre la informacion de una manera u otra.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Git tag o Etiquetas
&lt;/h2&gt;

&lt;p&gt;Que es un tag&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Es un nombre que puedes usar para marcar un punto relevante, estructural o especifico de tu codigo en la historia del repositorio.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Son relevantes en producción, trabajando en remoto GitHub con equipos. En GitHub se lo usa mucho para detallar versiones listas o release de un proyecto &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Aunque los tags no son commit hay que enviarlos al repositorio principal &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Comandos&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Tags lijeras &lt;code&gt;git tag nombre_tag&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tags firmado por correo `git tag -a nombre_tag -m "Descripcion"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;tags formados por clave GPT del correo electronico &lt;br&gt;
&lt;code&gt;git tag -s nombre_tag "Descripcion"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ver la lista de los tags &lt;code&gt;git tag -l&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Renombrar tag 📌&lt;br&gt;
&lt;code&gt;git tag -f -a nuevo_nombre_tag "Descripcion"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Borrar tag &lt;code&gt;git tag -d nombre_tag&lt;/code&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Si borras un tag y trabajas con repositorios remoto no olvides actualizar la accion &lt;code&gt;git pull origin master&lt;/code&gt; y despues &lt;code&gt;git push origin --tags&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Aunque de esta manera se borro localmente aun queda en github ya que los releases o versiones listas son muy importantes asi que para evitar equivocaciones de borrado hay que borrarlo de forma especial con 📌 &lt;br&gt;
&lt;code&gt;git push origin :ref/tags/nombre_tag&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Ver el commit que pertenece a la etiqueta 📌 &lt;br&gt;
&lt;code&gt;git show nombre_tag&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Saber a que commit o hash esta vinculado un tag 📌 &lt;br&gt;
&lt;code&gt;git show-ref --tags&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Filtrar etiquetas &lt;code&gt;git tag -l "patron de busqueda"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Git log
&lt;/h2&gt;

&lt;p&gt;Muestra instantáneas confirmadas. Se utiliza para enumerar y filtrar el historial del proyecto, y buscar cambios particulares. El &lt;code&gt;git log&lt;/code&gt; solo funciona en el historial comprometido en comparación con de &lt;code&gt;git status&lt;/code&gt; que trabaja con el área de preparación o staging.&lt;/p&gt;

&lt;p&gt;Si eres un scrum master o lider de proyecto usaras muchas configuraciones con este comando para revisar el trabajo de tus compañeros o ver como va el codigo en el dia etc. Pero para uso personal y para mi son las mas necesarias son:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instantánea estándar &lt;code&gt;git log&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Muestra todas las ramas &lt;code&gt; git log --all&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Instantáneas abreviadas en una línea &lt;code&gt; git log --pretty=online&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Instantáneas gráficamente con el identificador abreviado y descripción &lt;code&gt;git log --pretty=format:"%h %s" --graph&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Muestra las diferencias introducidas entre cada commit con limite en las dos ultmas entradas &lt;code&gt;git log -p -2&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para mas configuraciones puedes visitar la  &lt;a href="https://git-scm.com/book/es/v2/Fundamentos-de-Git-Ver-el-Historial-de-Confirmaciones" rel="noopener noreferrer"&gt;Pagina oficial&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Ramas
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F828o57pgu1tjmin8b02v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F828o57pgu1tjmin8b02v.png" alt="Imagen que muestra como funcionan las ramas en git"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt;&lt;br&gt;
Si creamos una rama y no hacemos commit todo lo realizado se perdera.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Crea una rama &lt;code&gt;git branch nombre_rama&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Entrar en una rama diferente &lt;code&gt;git checkout nombre_rama&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Crear una nueva rama y entrar en ella al mismo tiempo &lt;code&gt;git checkout -b nombre_rama&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Listar ramas &lt;code&gt;git branch -l&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Listar ramas remotas | GitHub &lt;code&gt;git branch -r&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Listar ramas remotas GitHub y locales &lt;code&gt;git branch -a&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Historia de rama &lt;code&gt;git show-branch --all&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Elimina rama &lt;code&gt;git branch -d nombre_rama&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Elimina rama con commits adentro &lt;code&gt;git branch -D nombre_rama&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Renombrar una rama &lt;br&gt;
&lt;code&gt;git branch -m nombre_rama_anterior nombre_rama_nueva&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Git merge o fusiones
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhzznzcd43ajb6x63qbmx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhzznzcd43ajb6x63qbmx.png" alt="Imagen de ejemplo grafico de merge"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Comenzamos con esta imagen para dar un ejemplo.&lt;br&gt;
Tenemos &lt;br&gt;
Rama master: Tenemos el contendio html &lt;br&gt;
Rama Cabecera: Tenemos el diseño en cabecera&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Queremos llevar el diseño de la rama cabecera a la rama master. Entonces guardamos commit en cabecera, nos dirigimos a la rama master &lt;code&gt;git checkout master&lt;/code&gt; y en la rama master hacemos el merge a cabecera &lt;br&gt;
&lt;code&gt;git merge cabecera -m "Descripcion"&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;El &lt;code&gt;git merge&lt;/code&gt; es un commit mas en el proyecto.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Para saber que ramas no han sido fucionadas aun en la rama actual &lt;br&gt;
&lt;code&gt;git branch --no-merged&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Para saber las ramas que ya han sido fucionadas. Si las ramas se eliminaron despues del merge entonces saldra master.&lt;br&gt;
&lt;code&gt;git branch --merged&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Algunos conflictos con merge
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Si sale un mensaje de Fast-forward significa que estas haciendo un merge en la continuacion directa de la rama en la cual salio&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Si no eres el primero en hacer un merge te va a pedir en tu editor para que coloques que quieres mezclar y como se va a llamar. Esto es un commit que pide confirmar los cambios, en otras palabras es una mezcla recursiva que obliga hacer un commit adicional, este se presenta en log como un commit mas a la rama principal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cuando e ha cambiado lineas de codigo anteriores o archivos se denomina Auto-mergin y saldrá un mensaje de CONFLICT en donde preguntará  con que version se quedará. Una vez que se haya escojido u arreglado el conflicto se debe hacer un  nuevo commit &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando una rama intenta hacer merge en un documento que ha sido modificado por dos ramas distintas eso genera un conlicto. Entonces abrimos el documento y corregiremos de forma manual una vez eso mandamos al staging y luego hacemos commit.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;VisuslCode tiene ayudas para estas situaciones &lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Git rebase
&lt;/h2&gt;

&lt;p&gt;Se usa cuando quieres que una rama no sea una rama si no mas bien que sea parte de la historia del master y no quede huella de que fue una rama.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Caracteristicas&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Primero quiero decirte que &lt;code&gt;git rebase&lt;/code&gt; es una muy mala practica usarla de forma remota por lo cual esta puesta en este post ya que si puede ser usada de forma local de algunas formas.&lt;/li&gt;
&lt;li&gt;Es una mala practica por que reescribe la historia de los repositorios &lt;/li&gt;
&lt;li&gt;Uno de los inconvenientes es que cuando haces rebase no queda historia, no se sabe quien hizo que cosa o que cambios y si la rama master avanzo mucho antes del rebase los problemas y conflictos seran muchos y habrá que solucionarlos de forma manual uno por uno causando retraso a todo el equipo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La unica forma en que se la puede recomendar es trabajarla de forma local en un proyecto personal  o en un proyecto en equipo siempre y cuando apliques rebase y arregles los conflictos antes de enviarlo al servidor. Por ejemplo.&lt;/p&gt;

&lt;p&gt;Supongamos que traiste localmente el codigo del proyecto de equipo para hacer tu parte que es desarrollar el script de unas funciones en el diseño y el diseño entonces el primer dia tuviste un error que no pudiste resolver, al siguinte, dia2 resulves hacer una rama para arreglar el bugfix pero seguir trabajando en la linea principal en el diseño, &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13rdepj5e5yk1t0m4jkd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F13rdepj5e5yk1t0m4jkd.png" alt="rebase1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;terminaste el diseño en el mismo dia 2. &lt;br&gt;
En el dia 3 comienzas a resolver el bugfix y lo logras, entonces tu trabajo esta terminado. Puedes hacer un merge e incorporarlo a  tu linea de trabajo principal &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzxlsgatl4d5zhzzorwk1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzxlsgatl4d5zhzzorwk1.png" alt="merge"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;pero no deseas que esa rama de bugfix quede en tu historial por que no ha sido algo relevante asi que haces rebase, resulves los conflictos y a la finl tu linea de trabajo quedará asi &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1k0be8ygvnr76bkvvla.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1k0be8ygvnr76bkvvla.png" alt="rebase"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como si nunca hubiera habido una rama y sin huellas de que haya habido una.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comandos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Usaremos el mismo ejemplo anterior para el codigo  de acontinuación&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Estando en la rama del bugfix&lt;br&gt;
&lt;code&gt;git rebase master&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lugo desde el master. 📌&lt;br&gt;
&lt;code&gt;git rebase nombre_rama_rebase_anterior&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;En este momento hay dos ramas que contienen lo mismo el master y en bugfix&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Solucionar de forma manual los conflictos en la rama master &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Por ultimo eliminar la rama bugfix&lt;br&gt;
&lt;code&gt;git branch -D rama_bugfix&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Git stash
&lt;/h2&gt;

&lt;p&gt;Sabemos que si hacemos cambios en una rama y luego cambiamos de rama sin hacer commit antes, perderemos los cambios hechos anteriormente. &lt;/p&gt;

&lt;p&gt;Para evitarlo existe &lt;code&gt;git stash&lt;/code&gt;. Nos permite guardar cambios temporalmente para usarlos despúes o en una nueva rama &lt;/p&gt;

&lt;p&gt;Se usa cuando  estas probando algun codigo que no merece un rebase o una nueva rama y quieres regresar rapido a tu estado anterior&lt;/p&gt;

&lt;p&gt;Si usas un stash en una rama antes ya creada causarias muchos conflictos. Solo se recomienda usarla en una nueva rama &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comandos&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Para guardar el cambio temporal
&lt;code&gt;git stash&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Para listar stash guardados
&lt;code&gt;git stash list&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Para ejecutar el stash guardado en una nueva rama 📌
&lt;code&gt;git stash pop&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Para deshacer el pop 
&lt;code&gt;Control z&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Guardar un stash en una rama nueva 
&lt;code&gt;git stash branch nombre_rama&lt;/code&gt; y luego
&lt;code&gt;git commit -am "Descripcion"&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Eliminar stash &lt;code&gt;git stash drop&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Git clean
&lt;/h2&gt;

&lt;p&gt;Es un comando que nos ayuda a limpiar el entorno de trabajo. Ejemplo&lt;/p&gt;

&lt;p&gt;Si tenemos archivos duplicados o archivos que no han sido utilizados, llamados entre otros&lt;/p&gt;

&lt;p&gt;A &lt;code&gt;git clean&lt;/code&gt; no le interesan las carpetas solo los archvivos, tampoco tomará encuenta todo lo que este en .ignore&lt;/p&gt;

&lt;p&gt;El comando que se usa es &lt;code&gt;git clean&lt;/code&gt; pero no se usa solo. Cuando lo quieras usar ejecuta &lt;br&gt;
&lt;code&gt;git clean --dry-run&lt;/code&gt;&lt;br&gt;
Este comando te mostrara en lista una simulacion de todo lo que puede ser eliminado por clean.&lt;br&gt;
Si estas satisfecho con todo lo que te muestra para borrarlo entonces ahora si ejecutas &lt;code&gt;git clean -f&lt;/code&gt; para eliminar&lt;/p&gt;




&lt;h2&gt;
  
  
  Git cherry pick
&lt;/h2&gt;

&lt;p&gt;Se usa cuando estamos trabajando un avance en una rama y se requiere en el master de urgencia un commit especifico de tu rama en al que estas trabajando &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pasos para ejecutar cherry pick&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hacer &lt;code&gt;git checkout&lt;/code&gt; a la rama donde esta el commit solicitado &lt;/li&gt;
&lt;li&gt;Hacer &lt;code&gt;git log&lt;/code&gt; para copiar el identificador del commit solicitado.&lt;/li&gt;
&lt;li&gt;HRegresamos al master con &lt;code&gt;git checkout master&lt;/code&gt; y ejecutamos en el master 
&lt;code&gt;git cherry-pich identificador_commit_solicitado&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Cuando se termine lo que se estaba haciendo en la rama y se valla hacer un merge oviamente abran conflictos por que la rama master ya tiene un commit de la rama, pero esto se soluciona simplemente fixeandolo manualmente o con ayuda del editor de codigo&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Su estas trabajando con Github&lt;/strong&gt;&lt;br&gt;
Cuando lo quieras enviar al servidor no olvidar primero hacer &lt;code&gt;git pull origin master&lt;/code&gt; y ahora si &lt;code&gt;git push origin master&lt;/code&gt; para enviarlo&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;GitHub nunca se enterará de los combios locales &lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Git Reset y Reflog
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Se usa en casos de emergencia, se usa cuando hemos hechos cambios tan drasticos que queremos recuperar el punto antes de ese momento. &lt;/li&gt;
&lt;li&gt;En regflog no se borra  ningun commmit o cambio en el tiempo&lt;/li&gt;
&lt;li&gt;si en &lt;code&gt;git log&lt;/code&gt; no se ecuentran los cambios por que han sido eliminados de seguro en &lt;code&gt;git reflog&lt;/code&gt; si estarán &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pasos para ejecutarlo&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ejecutamos &lt;code&gt;git reflog&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Nos aparecera una lista de commit incluyendo los commits borrados y los que no han sido borrados&lt;/li&gt;
&lt;li&gt;Buscamos el ultimo commit en donde todo esta correcto o el que deseamos recuperar y copiamos su identificador o head.&lt;/li&gt;
&lt;li&gt;Para recuperar tenemos tres opciones:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Reset soft: Te regresa a un punto donde los archivos estan preparados en el staging a la espera de un nuevo commit&lt;br&gt;
&lt;code&gt;git reset --soft identificador_commit&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reset mixed: Te regresa a un punto donde los archivos estan en el repositorios de git y no se ha hecho ni staging ni commit.&lt;br&gt;
&lt;code&gt;git reset --mixed identificador_commit&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reset hard: Te regresa a un punto donde se recuperan los archivos pero solo lo puedes ver localmente es decir git no les esta dando segumiento, tendrias que darle commit a ese estado para que la proxima vez ya git le pueda dar seguimiento en el repositorio. Este reset solo se usa cuando has hecho algo masl y quieres volver a empezar de nuevo pero quieres los archivos &lt;br&gt;
&lt;code&gt;git reset --hard identificador_commit&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Git grep
&lt;/h2&gt;

&lt;p&gt;Este comando lo usamos cuando el proyecto es muy grande y por ovia razones muchos archivos y queremos buscar algo dentro de un archivo como una sintaxis. Por ejemplo&lt;/p&gt;

&lt;p&gt;Si queremos buscar la etiqueta &lt;/p&gt;
&lt;p&gt; entre todos los archivos &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comandos&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Buscar el archivo donde esta la palabra o etiqueta. 📌&lt;br&gt;
&lt;code&gt;git grep "codigo, palabra o etiqueta"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Buscar el archivo y la linea de codigo.&lt;br&gt;
&lt;code&gt;git grep -n "codigo, etiqueta o palabra"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Contar la cantidad de veces que una palabra aparece. 📌&lt;br&gt;
&lt;code&gt;git grep -c "palabra, codigo o etiqueta"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Si quiero buscar algo que no esta en el codigo sino en la historia de los commit. Por ejemplo. Cuantas veces escribi la palabra diseño en los commit o donde la palabra diseño tiene algo que ver con respecto a los commit. 📃 ✏️ 📌 &lt;code&gt;git log -S "diseño"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Comandos para lider de equipo de desarrollo o scrum
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Cuantos commits ha realizado cada miembro del equipo.&lt;br&gt;
&lt;code&gt;git short log&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mostrar las personas que han realizado ciertos commits en el equipo. &lt;br&gt;
&lt;code&gt;git short log&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mostrar todos los commits incluidos los eliminados &lt;br&gt;
&lt;code&gt;git shot log -sn --all&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mostrar todos los commits incluidos los eliminados pero que no incluya los merges o los commits fusionados. &lt;br&gt;
&lt;code&gt;git short log -sn --all --no-merges&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Saber quien hizo que en el codigo. &lt;br&gt;
&lt;code&gt;git blame -c nombre_archivo&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Saber quien hizo que en el codigo especificando las lineas de codigo de donde(33) hasta donde(55). &lt;br&gt;
&lt;code&gt;git blame nombre_archivo -L33,55&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Git alias
&lt;/h2&gt;

&lt;p&gt;Lo usamos para abreviar un comando largo y dificil de recordar en uno mas corto y facil de recordar y referenciado con su accion &lt;/p&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;code&gt;git short log -sn --all --no-merges&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Para tranformarlo en un alias usamos:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git config --global alias.nombre_nuevo "git short log -sn --all --no-merges"&lt;/code&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  GitHub
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Inicializar un repositorio local y en github vacio
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Crear repositorio en Github sin el archivo README.md&lt;/li&gt;
&lt;li&gt;Crear la carpeta del proyecto y dentro de la carpeta del proyecto crear de forma manual el archivo readme o por cmd &lt;code&gt;echo "# readme" &amp;gt;&amp;gt; README.md&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dentro de la carpeta del proyecto iniciamos git. 📃 ✏️&lt;br&gt;
&lt;code&gt;git init -b main&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;En caso que la rama master se llame master debemos cambiarle a main con el comando &lt;br&gt;
&lt;code&gt;git branch -M main&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verificamos que todo este listo. Ejecutamos &lt;code&gt;git add .&lt;/code&gt; y &lt;code&gt;git commit -m "Inicio de proyecto"&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copiamos el link del repositorio que creamos en Github el de http ejecutamos &lt;br&gt;
&lt;code&gt;git remote add origin http.tulinkrepositorio&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hacemos push &lt;code&gt;git push -u origin main&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Puedes comprobar que tus archivo README.md esta en GitHub&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Apartir de aqui cada cambio que quieras enviar&lt;/strong&gt; &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Revisalo y soluciona errores&lt;/li&gt;
&lt;li&gt;Refrescar a tu repositorio local el Github con 📌
&lt;code&gt;git pull origin main&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Enviar tus actualización con 
&lt;code&gt;git push origin main&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Si estas trabajando despues con varias ramas pero deseas enviar la actualizacion de una sola rama al master en Github usa &lt;br&gt;
&lt;code&gt;git push -u origin main&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>git</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>spanish</category>
    </item>
  </channel>
</rss>
