{"id":921,"date":"2019-07-23T14:24:51","date_gmt":"2019-07-23T20:24:51","guid":{"rendered":"https:\/\/ugit.siua.ac.cr\/?p=921"},"modified":"2019-09-25T14:27:54","modified_gmt":"2019-09-25T20:27:54","slug":"git-fundamentos","status":"publish","type":"post","link":"https:\/\/sada.services\/?p=921","title":{"rendered":"GIT: Fundamentos"},"content":{"rendered":"\n<ul class=\"wp-block-list\"><li>Para  explicar los fundamentos de git vamos a crear una carpeta dentro del  servidor web, con el nombre \u00abprimer_proyecto_git\u00bb y vamos a ingresar a  ella desde la terminal.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/var\/www\/html\/primer_proyecto_git\ncd \/var\/www\/html\/primer_proyecto_git<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Iniciando un repositorio en un nuevo directorio<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Si va a crear un nuevo control de versiones sobre un nuevo proyecto (directorio vac\u00edo) debe utilizar el comando: \u00abgit init\u00bb. Esto crea una carpeta oculta \u00ab.git\u00bb con todos los archivos necesarios del repositorio.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git init<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li>A nivel de directorio lo que crea es una carpeta oculta \u00ab.git\u00bb que es la encargada de llevar el control de versiones de los archivos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Initialized empty Git repository in \/var\/www\/html\/primer_proyecto_git\/.git\/<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"385\" height=\"222\" src=\"\/wp-content\/uploads\/2019\/07\/1-10.png\" alt=\"\" class=\"wp-image-922\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2019\/07\/1-10.png 385w, https:\/\/sada.services\/wp-content\/uploads\/2019\/07\/1-10-300x173.png 300w\" sizes=\"(max-width: 385px) 100vw, 385px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Clonando un repositorio existente<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Si\n lo que desea es obtener un proyecto ya existente lo debe clonar a \ntrav\u00e9s del comando \u00abgit clone\u00bb. Esto descarga todos los datos del \nproyecto que est\u00e1n en el servidor, de hecho si el disco del servidor se \ncorrompe puedes usar cualquier clon de los clientes para restaurarlo.<\/li><li>Para este caso vamos clonar el proyecto libgit2 desde github e insertarlo en un nuevo directorio:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/var\/www\/html\/segundo_proyecto_git\ncd \/var\/www\/html\/segundo_proyecto_git\ngit clone https:\/\/github.com\/libgit2\/libgit2<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si queremos crear un directorio de destino de una vez podr\u00edamos haber hecho esto que crea la carpeta de una vez:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/libgit2\/libgit2 \/var\/www\/html\/tercer_proyecto_git<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>En cualquiera de los dos casos git descarga toda la informaci\u00f3n del proyecto de forma local, por lo que cuenta con todas las versiones del proyecto de forma local.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1000\" height=\"245\" src=\"\/wp-content\/uploads\/2019\/07\/2-8.png\" alt=\"\" class=\"wp-image-923\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2019\/07\/2-8.png 1000w, https:\/\/sada.services\/wp-content\/uploads\/2019\/07\/2-8-300x74.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2019\/07\/2-8-768x188.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Revisando el estado de los archivos<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>El comando que le permite ver el estado de los archivos del proyecto es \u00abgit status\u00bb<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si ejecutamos el comando dentro de \u00abprimer_proyecto_git\u00bb lo que va ver es:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/var\/www\/html\/primer_proyecto_git\/<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nnada que hacer (crear\/copiar archivos y utilice \u00abgit add\u00bb para continuar)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Indicando que no tiene ning\u00fan archivo, modificado ni rastreado<\/li><li>Si crea un nuevo archivo por ejemplo \u00abREADME\u00bb y ejecuta el comando \u00abgit status\u00bb ver\u00e1s que git identifica esto.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>touch README<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nArchivos sin seguimiento:\n (use \u00abgit add &lt;archivo>...\u00bb para incluir en lo que se ha de confirmar)\n\n README\n\nno se ha agregado nada al commit pero existen archivos sin seguimiento (use \u00abgit add\u00bb para darle seguimiento)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Donde nos indica que existen archivos a los cuales no se les esta dando seguimiento.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Rastrear Archivos Nuevos<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Para poder comenzar a rastrear y darle seguimiento a un archivo existe el comando \u00abgit add\u00bb, ya que git no le va a dar el seguimiento si usted no se lo indica expl\u00edcitamente.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git add README<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora si vuelve a solicitar el estado<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Podemos ver que existe un nuevo archivo que est\u00e1 siendo rastreado<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nCambios para hacer commit:\n (use \u00abgit rm --cached &lt;archivo>...\u00bb para sacar del stage)\n\n nuevo archivo: README<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>El\n comando git add puede recibir tanto una ruta de archivo como de un \ndirectorio; si es de un directorio, el comando a\u00f1ade recursivamente los \narchivos que est\u00e1n dentro de \u00e9l.<\/li><li>Vamos a crear un nuevo directorio \u00abcss\u00bb y dentro de el vamos a crear un archivo \u00abestilo.css\u00bb<\/li><li>y ejecutamos el comando:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nCambios para hacer commit:\n (use \u00abgit rm --cached &lt;archivo>...\u00bb para sacar del stage)\n\n nuevo archivo: README\n\nArchivos sin seguimiento:\n (use \u00abgit add &lt;archivo>...\u00bb para incluir en lo que se ha de confirmar)\n\n css\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Podemos ver que detecta la creaci\u00f3n de la nueva carpeta, por lo que si ejecutamos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git add css<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>y ejecutamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Podemos ver que se hace de forma recursiva<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nCambios para hacer commit:\n (use \u00abgit rm --cached &lt;archivo>...\u00bb para sacar del stage)\n\n nuevo archivo: README\n nuevo archivo: css\/estilo.css<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora si creamos una nueva carpeta \u00abjs\u00bb y dentro archivo \u00abmain.js\u00bb, as\u00ed como un archivo \u00abindex.html\u00bb dentro del directorio principal y ejecutamos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git add -A<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>y ejecutamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nCambios para hacer commit:\n (use \u00abgit rm --cached &lt;archivo>...\u00bb para sacar del stage)\n\n nuevo archivo: README\n nuevo archivo: css\/estilo.css\n nuevo archivo: index.html\n nuevo archivo: js\/main.js<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Podemos ver que el par\u00e1metro \u00ab-A\u00bb incluye TODOS los archivos<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Preparar archivos modificados<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora si modificamos el archivo \u00abindex.html\u00bb por ejemplo colocando el siguiente c\u00f3digo:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;html lang=\"es\">\n&lt;head>\n    &lt;meta charset=\"UTF-8\">\n    &lt;title>Primer Proyecto GIT&lt;\/title>\n&lt;\/head>\n&lt;body>\n\n&lt;\/body>\n&lt;\/html><\/code><\/pre>\n\n\n\n<p>Compartir<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\n\t\t\t\t\t\t<a target=\"_blank\" href=\"https:\/\/twitter.com\/home?status=http%3A%2F%2Fdesarrollo.siua.ac.cr%2FBlogs%2Fugit3%2Fgit-fundamentos\" rel=\"noreferrer noopener\">\n\t\t\t\t\t\t<\/a><\/li><\/ul>\n\n\n\n<p><a target=\"_blank\" href=\"https:\/\/www.facebook.com\/sharer\/sharer.php?u=http%3A%2F%2Fdesarrollo.siua.ac.cr%2FBlogs%2Fugit3%2Fgit-fundamentos\" rel=\"noreferrer noopener\">\n\t\t\t\t\t\t<\/a><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\n\t\t\t\t\t<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/desarrollo.siua.ac.cr\/Blogs\/ugit3\/bl-content\/uploads\/pages\/401b5ddd68efbf0db0eaa07199bb58c6\/git-logo.jpg\" alt=\"GIT: Fundamentos\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Para\n explicar los fundamentos de git vamos a crear una carpeta dentro del \nservidor web, con el nombre \u00abprimer_proyecto_git\u00bb y vamos a ingresar a \nella desde la terminal.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/var\/www\/html\/primer_proyecto_git\ncd \/var\/www\/html\/primer_proyecto_git<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Iniciando un repositorio en un nuevo directorio<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Si\n va a crear un nuevo control de versiones sobre un nuevo proyecto \n(directorio vac\u00edo) debe utilizar el comando: \u00abgit init\u00bb. Esto crea una \ncarpeta oculta \u00ab.git\u00bb con todos los archivos necesarios del repositorio.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git init<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Initialized empty Git repository in \/var\/www\/html\/primer_proyecto_git\/.git\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>A\n nivel de directorio lo que crea es una carpeta oculta \u00ab.git\u00bb que es la \nencargada de llevar el control de versiones de los archivos<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/desarrollo.siua.ac.cr\/Blogs\/ugit3\/bl-content\/uploads\/pages\/401b5ddd68efbf0db0eaa07199bb58c6\/34.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Clonando un repositorio existente<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Si\n lo que desea es obtener un proyecto ya existente lo debe clonar a \ntrav\u00e9s del comando \u00abgit clone\u00bb. Esto descarga todos los datos del \nproyecto que est\u00e1n en el servidor, de hecho si el disco del servidor se \ncorrompe puedes usar cualquier clon de los clientes para restaurarlo.<\/li><li>Para este caso vamos clonar el proyecto libgit2 desde github e insertarlo en un nuevo directorio:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/var\/www\/html\/segundo_proyecto_git\ncd \/var\/www\/html\/segundo_proyecto_git\ngit clone https:\/\/github.com\/libgit2\/libgit2<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si queremos crear un directorio de destino de una vez podr\u00edamos haber hecho esto que crea la carpeta de una vez:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git clone https:\/\/github.com\/libgit2\/libgit2 \/var\/www\/html\/tercer_proyecto_git<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>En\n cualquiera de los dos casos git descarga toda la informaci\u00f3n del \nproyecto de forma local, por lo que cuenta con todas las versiones del \nproyecto de forma local.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/desarrollo.siua.ac.cr\/Blogs\/ugit3\/bl-content\/uploads\/pages\/401b5ddd68efbf0db0eaa07199bb58c6\/35.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Revisando el estado de los archivos<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>El comando que le permite ver el estado de los archivos del proyecto es \u00abgit status\u00bb<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si ejecutamos el comando dentro de \u00abprimer_proyecto_git\u00bb lo que va ver es:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/var\/www\/html\/primer_proyecto_git\/<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nnada que hacer (crear\/copiar archivos y utilice \u00abgit add\u00bb para continuar)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Indicando que no tiene ning\u00fan archivo, modificado ni rastreado<\/li><li>Si crea un nuevo archivo por ejemplo \u00abREADME\u00bb y ejecuta el comando \u00abgit status\u00bb ver\u00e1s que git identifica esto.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>touch README<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nArchivos sin seguimiento:\n (use \u00abgit add &lt;archivo>...\u00bb para incluir en lo que se ha de confirmar)\n\n README\n\nno se ha agregado nada al commit pero existen archivos sin seguimiento (use \u00abgit add\u00bb para darle seguimiento)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Donde nos indica que existen archivos a los cuales no se les esta dando seguimiento.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Rastrear Archivos Nuevos<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Para\n poder comenzar a rastrear y darle seguimiento a un archivo existe el \ncomando \u00abgit add\u00bb, ya que git no le va a dar el seguimiento si usted no \nse lo indica expl\u00edcitamente.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git add README<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora si vuelve a solicitar el estado<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Podemos ver que existe un nuevo archivo que est\u00e1 siendo rastreado<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nCambios para hacer commit:\n (use \u00abgit rm --cached &lt;archivo>...\u00bb para sacar del stage)\n\n nuevo archivo: README<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>El\n comando git add puede recibir tanto una ruta de archivo como de un \ndirectorio; si es de un directorio, el comando a\u00f1ade recursivamente los \narchivos que est\u00e1n dentro de \u00e9l.<\/li><li>Vamos a crear un nuevo directorio \u00abcss\u00bb y dentro de el vamos a crear un archivo \u00abestilo.css\u00bb<\/li><li>y ejecutamos el comando:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nCambios para hacer commit:\n (use \u00abgit rm --cached &lt;archivo>...\u00bb para sacar del stage)\n\n nuevo archivo: README\n\nArchivos sin seguimiento:\n (use \u00abgit add &lt;archivo>...\u00bb para incluir en lo que se ha de confirmar)\n\n css\/<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Podemos ver que detecta la creaci\u00f3n de la nueva carpeta, por lo que si ejecutamos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git add css<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>y ejecutamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Podemos ver que se hace de forma recursiva<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nCambios para hacer commit:\n (use \u00abgit rm --cached &lt;archivo>...\u00bb para sacar del stage)\n\n nuevo archivo: README\n nuevo archivo: css\/estilo.css<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora\n si creamos una nueva carpeta \u00abjs\u00bb y dentro archivo \u00abmain.js\u00bb, as\u00ed como \nun archivo \u00abindex.html\u00bb dentro del directorio principal y ejecutamos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git add -A<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>y ejecutamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nCambios para hacer commit:\n (use \u00abgit rm --cached &lt;archivo>...\u00bb para sacar del stage)\n\n nuevo archivo: README\n nuevo archivo: css\/estilo.css\n nuevo archivo: index.html\n nuevo archivo: js\/main.js<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Podemos ver que el par\u00e1metro \u00ab-A\u00bb incluye TODOS los archivos<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Preparar archivos modificados<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Ahora si modificamos el archivo \u00abindex.html\u00bb por ejemplo colocando el siguiente c\u00f3digo:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html>\n&lt;html lang=\"es\">\n&lt;head>\n    &lt;meta charset=\"UTF-8\">\n    &lt;title>Primer Proyecto GIT&lt;\/title>\n&lt;\/head>\n&lt;body>\n\n&lt;\/body>\n&lt;\/html><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Y ejecutamos el comando<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nCambios para hacer commit:\n (use \u00abgit rm --cached &lt;archivo>...\u00bb para sacar del stage)\n\n nuevo archivo: README\n nuevo archivo: css\/estilo.css\n nuevo archivo: index.html\n nuevo archivo: js\/main.js\n\nCambios no preparados para el commit:\n (use \u00abgit add &lt;archivo>...\u00bb para actualizar lo que se confirmar\u00e1)\n (use \u00abgit checkout -- &lt;archivo>...\u00bb para descartar cambios en el directorio de trabajo)\n\n modificado: index.html<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Aqu\u00ed  podemos observar que el archivo \u00abindex.html\u00bb aparece en la secci\u00f3n de  nuevos archivos y y en modificados, esto quiere decir que se realiza un  commit lo que se almacena en la base de datos de git es el estado del  archivo \u00abindex.html\u00bb antes de la modificaci\u00f3n ya que este es el que esta  en el \u00abStaged area\u00bb, por lo que si deseamos se almacene el estado  actual del archivo en el pr\u00f3ximo commit debemos hacer un nuevo \u00abgit add\u00bb<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git add -A<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si ejecutamos nuevamente<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nCambios para hacer commit:\n (use \u00abgit rm --cached &lt;archivo>...\u00bb para sacar del stage)\n\n nuevo archivo: README\n nuevo archivo: css\/estilo.css\n nuevo archivo: index.html\n nuevo archivo: js\/main.js<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Podemos ver que los archivos est\u00e1n listo para el commit<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Estatus Abreviado<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>El comando \u00abgit status\u00bb nos da bastante informaci\u00f3n, pero sin embargo a veces deseamos enfocarnos en la informaci\u00f3n m\u00e1s importante, para esto git nos ofrece el comando \u00abshort\u00bb<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status -s\no\ngit status --short<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>M README\nMM Rakefile\nA lib\/git.rb\nM lib\/simplegit.rb\n?? LICENSE.txt<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>donde la columna de la izquierda indica el estado preparado  (Stanging Area) y la columna de la derecha indica el estado sin preparar  (Working Area): <ul><li>A: preparado para el commit<\/li><li>M: archivo modificado<\/li><li>?: archivo sin seguimiento<\/li><\/ul><\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li> Interpretaci\u00f3n del ejemplo: <ul><li>el archivo README: est\u00e1 modificado el \u00e1rea de trabajo y no est\u00e1 preparado para el commit<\/li><li>el archivo Rakefile: fue modificado, preparado y modificado otra vez por lo que existen cambios preparados y sin preparar<\/li><li>el archivo git.rb: est\u00e1 preparado para el commit<\/li><li>el archivo simplegit.rb: fue modificado sibido al \u00abstaged area\u00bb y esta listo para el commit<\/li><li>el archivo LICENSE.txt: no se sigue en el \u00abSA\u00bb ni \u00abWA\u00bb<\/li><\/ul><\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li> En nuestro ejemplo todos los archivos est\u00e1n preparados:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>A css\/estilo.css\nA index.html\nA js\/main.js<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Ignorar Archivos<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>sistema, temporales, o archivos resultantes de una compilaci\u00f3n. Para esto debemos crear un archivo \u00ab.gitignore\u00bb<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>touch .gitignore<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Y dentro de este archivo debemos establecer los patrones de los archivos que deseamos ignorar para que no sean incluidos dentro del control de versiones. Por ejemplo:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>*.[oa]\n*~<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>En\n el ejemplo la primera linea le dice a git que ignore archivos que \ntemine en \u00ab.o\u00bb o \u00ab.a\u00bb y la segunda l\u00ednea que ignore archivos que \nterminen con el car\u00e1cter (~) que suelen ser archivos temporales.<\/li><li>Las reglas sobre los patrones que puedes incluir en el archivo .gitignore son las siguientes:\n<ul><li>Ignorar las l\u00edneas en blanco y aquellas que comiencen con #.<\/li><li>Aceptar patrones glob est\u00e1ndar.<\/li><li>Los patrones pueden terminar en barra (\/) para especificar un directorio.<\/li><li>Los patrones pueden negarse si se a\u00f1ade al principio el signo de exclamaci\u00f3n (!).<\/li><\/ul><\/li><li>Los patrones glob son una especia de expresi\u00f3n regular simplificada \nusada por los terminales. Un asterisco (*) corresponde a cero o m\u00e1s \ncaracteres; [abc] corresponde a cualquier car\u00e1cter dentro de los \ncorchetes (en este caso a, b o c); el signo de interrogaci\u00f3n (?) \ncorresponde a un car\u00e1cter cualquier; y los corchetes sobre caracteres \nseparados por un gui\u00f3n ([0-9]) corresponde a cualquier car\u00e1cter entre \nellos (en este caso del 0 al 9). Tambi\u00e9n puedes usar dos asteriscos para\n indicar directorios anidados; a\/**\/z coincide con a\/z, a\/b\/z, a\/b\/c\/z, \netc.<\/li><li>Ejemplos:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># ignora los archivos terminados en .a\n*.a\n\n# pero no lib.a, aun cuando hab\u00eda ignorado los archivos terminados en .a en la linea anterior\n!lib.a\n\n# ignora \u00fanicamente el archivo TODO de la ra\u00edz, no subdir\/TODO\n\/TODO\n\n# ignora todos los archivos del directorio build\/\nbuild\/\n\n# ignora doc\/notes.txt, pero este no doc\/server\/arch.txt\ndoc\/*.txt\n\n# ignora todos los archivos .txt el directorio doc\/\ndoc\/**\/*.txt<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si desea puede visitar la siguiente p\u00e1gina donde git tiene una extensa lista de archivos .gitignore para diferentes proyectos:<a href=\"https:\/\/github.com\/github\/gitignore\">https:\/\/github.com\/github\/gitignore<\/a><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Ver los Cambios Preparados y No Preparados<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Vamos hacer un cambio en el titulo de la p\u00e1gina \u00abindex.html\u00bb, por ejemplo:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;title>Primer Proyecto GIT nuevo cambio&lt;\/title><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Ejecutamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\n\nNo commits yet\n\nCambios para hacer commit:\n (use \u00abgit rm --cached &lt;archivo>...\u00bb para sacar del stage)\n\n nuevo archivo: README\n nuevo archivo: css\/estilo.css\n nuevo archivo: index.html\n nuevo archivo: js\/main.js\n\nCambios no preparados para el commit:\n (use \u00abgit add &lt;archivo>...\u00bb para actualizar lo que se confirmar\u00e1)\n (use \u00abgit checkout -- &lt;archivo>...\u00bb para descartar cambios en el directorio de trabajo)\n\n modificado: index.html\n\nArchivos sin seguimiento:\n (use \u00abgit add &lt;archivo>...\u00bb para incluir en lo que se ha de confirmar)\n\n .gitignore<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Podemos ver que nos indica que el \u00abindex.html\u00bb fue modificado, pero que pasa si quieres saber cual fue el cambio que se hizo? para esto git nos ofrece el comando \u00abgit diff\u00bb<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git diff<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>diff --git a\/index.html b\/index.html\nindex d9e17da..8a97016 100644\n--- a\/index.html\n+++ b\/index.html\n@@ -2,7 +2,7 @@\n &lt;html lang=\"es\">\n &lt;head>\n &lt;meta charset=\"UTF-8\">\n- &lt;title>Primer Proyecto GIT&lt;\/title>\n+ &lt;title>Primer Proyecto GIT nuevo cambio&lt;\/title>\n &lt;\/head>\n &lt;body><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Aqu\u00ed\n git analiza lo que tienes en el \u00abStage Area\u00bb y en el \u00abWorking Area\u00bb los\n compara y nos indica que la l\u00ednea del titulo fue modificada, eliminada o\n agregada.<\/li><li>Ahora si deseas ver que es los cambios de los archivos que est\u00e1n en \nel \u00abSA\u00bb y que ser\u00e1n actualizados en el pr\u00f3ximo commit, puede ejecutar:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git diff --staged\no\ngit diff --cached<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>IMPORTANTE: el comando \u00abgit diff\u00bb (sin parametros) solo muestra los cambios de los archivos que no est\u00e1n preparados, por lo que si todos sus archivos ya est\u00e1n preparados no dar\u00e1 ning\u00fan resultado.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Confirmar tus Cambios<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Si ya tenemos todos los archivos de nuestra primera versi\u00f3n del proyecto en estado \u00abpreparados\u00bb podemos indicarle a git que los confirme, haciendo que git saque una instant\u00e1nea de los archivos.<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git commit -m \"Incio del proyecto: V1.001 \/ estructura inicial\"<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>[master (root-commit) 17b842c] Incio del proyecto: V1.001 \/ estructura inicial\n 4 files changed, 11 insertions(+)\n create mode 100644 README\n create mode 100644 css\/estilo.css\n create mode 100644 index.html\n create mode 100644 js\/main.js<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Aqu\u00ed puedes ver varios aspecto:<ul><li>Rama: master en cual rama se confirmaron los cambios<\/li><li> El checksum (17b842c) que se genero e identifica el cambio<\/li><li> Cu\u00e1ntos archivos han cambiado y estad\u00edsticas sobre las l\u00edneas a\u00f1adidas y eliminadas en el commit <\/li><\/ul><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Eliminar Archivos<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Si creamos dentro del directorio un archivo \u00abtmp.html\u00bb y ejecutamos el comando<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\nArchivos sin seguimiento:\n (use \u00abgit add &lt;archivo>...\u00bb para incluir en lo que se ha de confirmar)\n\n tmp.html\n\nno se ha agregado nada al commit pero existen archivos sin seguimiento (use \u00abgit add\u00bb para darle seguimiento)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Entonces los agregamos y lo confirmamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git add -A\ngit status\ngit commit -m \"Creaci\u00f3n de archivo tmp.html\"\ngit status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>El archivo est\u00e1 en seguimiento por parte de git, ahora si eliminamos el archivo desde el \u00abWA\u00bb y ejecutamos<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\nCambios no preparados para el commit:\n (use \u00abgit add\/rm &lt;archivo>...\u00bb para actualizar lo que se confirmar\u00e1)\n (use \u00abgit checkout -- &lt;archivo>...\u00bb para descartar cambios en el directorio de trabajo)\n\n borrado: tmp.html\n\nno hay cambios agregados al commit (use \u00abgit add\u00bb o \u00abgit commit -a\u00bb)<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>No  indica que el archivo fue borrado pero todav\u00eda estar\u00eda en el \u00abSA\u00bb, por  lo que para eliminar un archivo de forma correcta debemos usar el  comando \u00abgit rm\u00bb, volvemos a crear al archivo, lo preparamos y  confirmamos y luego eliminamos el archivo:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git rm tmp.html<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>rm 'tmp.html'<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Esto elimina el archivo del \u00abWA\u00bb y \u00abSA\u00bb<\/li><li>Si es necesario forzar al eliminaci\u00f3n del archivo podemos usar el par\u00e1metro \u00ab-f\u00bb<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git rm tmp.html -f<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si desea eliminar el archivo del \u00abSA\u00bb<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git rm --cached tmp.html<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Al comando git le puede pasar archivos, directorios y patrones<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git rm log\/\\*.log<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>F\u00edjate en la barra invertida () antes del asterisco *. Esto es necesario porque Git hace su propia expansi\u00f3n de nombres de archivo, aparte de la expansi\u00f3n hecha por tu terminal. Este comando elimina todos los archivo que tengan la extensi\u00f3n .log dentro del directorio log\/. O tambi\u00e9n puedes hacer algo como:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>$ git rm \\*~<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Este comando elimina todos los archivos que acaben con ~.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Cambiar el Nombre de los Archivos<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Git no rastrea los cambios de nombre, si quieres renombrar un archivo debe hacer:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git mv file_from file_to<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>En nuestro ejemplo podemos hacer algo como:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git mv index.html index.php<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Si hacemos \u00abgit status\u00bb vemos que git lo reconoce como un renombramiento:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>git status<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>RESULTADO:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>En la rama master\nCambios para hacer commit:\n (use \u00abgit reset HEAD &lt;archivo>...\u00bb para sacar del stage)\n\n borrado: README\n renombrado: index.html -> index.php\n borrado: tmp.html<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Nuevo repositorio<br \/>\nclonado<br \/>\nstatus<br \/>\nadd<br \/>\nignore<br \/>\ndiff<br \/>\ncommit<br \/>\nrm<br \/>\nmv<\/p>\n","protected":false},"author":2,"featured_media":2085,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[51],"tags":[52],"class_list":["post-921","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-git","tag-git"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/921","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=921"}],"version-history":[{"count":2,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/921\/revisions"}],"predecessor-version":[{"id":2089,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/921\/revisions\/2089"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/media\/2085"}],"wp:attachment":[{"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}