<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.caballero.co/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Alex</id>
	<title>Wiki de Caballero - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.caballero.co/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Alex"/>
	<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php/Special:Contributions/Alex"/>
	<updated>2026-04-21T18:42:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Limpiar_Cach%C3%A9_r%C3%A1pido_para_Recargar_P%C3%A1ginas&amp;diff=557</id>
		<title>Limpiar Caché rápido para Recargar Páginas</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Limpiar_Cach%C3%A9_r%C3%A1pido_para_Recargar_P%C3%A1ginas&amp;diff=557"/>
		<updated>2015-10-05T17:38:35Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Safari */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Chrome / Firefox ==&lt;br /&gt;
&lt;br /&gt;
=== Macintosh ===&lt;br /&gt;
cmd + shift + r&lt;br /&gt;
&lt;br /&gt;
=== Windows / Linux ===&lt;br /&gt;
crtl + shift + r&lt;br /&gt;
&lt;br /&gt;
== Internet Explorer ==&lt;br /&gt;
=== Macintosh / Windows / Linux ===&lt;br /&gt;
ctrl + F5&lt;br /&gt;
&lt;br /&gt;
== Safari ==&lt;br /&gt;
=== Macintosh ===&lt;br /&gt;
&lt;br /&gt;
* Probar con &amp;quot;cmd+r&amp;quot;, si no funciona realizar los puntos de a continuación.&lt;br /&gt;
* Presionar las teclas &amp;quot;cmd + ,&amp;quot;.&lt;br /&gt;
* Ir a la pestaña &amp;#039;&amp;#039;&amp;#039;Privacity&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Presionar el botón &amp;#039;&amp;#039;&amp;#039;Remove All Website Data....&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Click &amp;#039;&amp;#039;&amp;#039;Remove Now&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Windows / Linux ===&lt;br /&gt;
&lt;br /&gt;
* Probar con &amp;quot;ctrl+r&amp;quot;, si no funciona realizar los puntos de a continuación.&lt;br /&gt;
* Click en &amp;#039;&amp;#039;&amp;#039;Tools&amp;#039;&amp;#039;&amp;#039; &amp;gt; &amp;#039;&amp;#039;&amp;#039;Reset Safari...&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Hacer Check a los casilleros &amp;#039;&amp;#039;&amp;#039;Empty the cache&amp;#039;&amp;#039;&amp;#039; y &amp;#039;&amp;#039;&amp;#039;Remove all cookies&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Presionar botón &amp;#039;&amp;#039;&amp;#039;Reset&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Limpiar_Cach%C3%A9_r%C3%A1pido_para_Recargar_P%C3%A1ginas&amp;diff=556</id>
		<title>Limpiar Caché rápido para Recargar Páginas</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Limpiar_Cach%C3%A9_r%C3%A1pido_para_Recargar_P%C3%A1ginas&amp;diff=556"/>
		<updated>2015-10-05T16:11:43Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Windows / Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Chrome / Firefox ==&lt;br /&gt;
&lt;br /&gt;
=== Macintosh ===&lt;br /&gt;
cmd + shift + r&lt;br /&gt;
&lt;br /&gt;
=== Windows / Linux ===&lt;br /&gt;
crtl + shift + r&lt;br /&gt;
&lt;br /&gt;
== Internet Explorer ==&lt;br /&gt;
=== Macintosh / Windows / Linux ===&lt;br /&gt;
ctrl + F5&lt;br /&gt;
&lt;br /&gt;
== Safari ==&lt;br /&gt;
=== Macintosh ===&lt;br /&gt;
* Presionar las teclas &amp;quot;cmd + ,&amp;quot;.&lt;br /&gt;
* Ir a la pestaña &amp;#039;&amp;#039;&amp;#039;Privacity&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Presionar el botón &amp;#039;&amp;#039;&amp;#039;Remove All Website Data....&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Click &amp;#039;&amp;#039;&amp;#039;Remove Now&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Windows / Linux ===&lt;br /&gt;
&lt;br /&gt;
* Click en &amp;#039;&amp;#039;&amp;#039;Tools&amp;#039;&amp;#039;&amp;#039; &amp;gt; &amp;#039;&amp;#039;&amp;#039;Reset Safari...&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Hacer Check a los casilleros &amp;#039;&amp;#039;&amp;#039;Empty the cache&amp;#039;&amp;#039;&amp;#039; y &amp;#039;&amp;#039;&amp;#039;Remove all cookies&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Presionar botón &amp;#039;&amp;#039;&amp;#039;Reset&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Limpiar_Cach%C3%A9_r%C3%A1pido_para_Recargar_P%C3%A1ginas&amp;diff=555</id>
		<title>Limpiar Caché rápido para Recargar Páginas</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Limpiar_Cach%C3%A9_r%C3%A1pido_para_Recargar_P%C3%A1ginas&amp;diff=555"/>
		<updated>2015-10-05T16:11:10Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Windows / Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Chrome / Firefox ==&lt;br /&gt;
&lt;br /&gt;
=== Macintosh ===&lt;br /&gt;
cmd + shift + r&lt;br /&gt;
&lt;br /&gt;
=== Windows / Linux ===&lt;br /&gt;
crtl + shift + r&lt;br /&gt;
&lt;br /&gt;
== Internet Explorer ==&lt;br /&gt;
=== Macintosh / Windows / Linux ===&lt;br /&gt;
ctrl + F5&lt;br /&gt;
&lt;br /&gt;
== Safari ==&lt;br /&gt;
=== Macintosh ===&lt;br /&gt;
* Presionar las teclas &amp;quot;cmd + ,&amp;quot;.&lt;br /&gt;
* Ir a la pestaña &amp;#039;&amp;#039;&amp;#039;Privacity&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Presionar el botón &amp;#039;&amp;#039;&amp;#039;Remove All Website Data....&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Click &amp;#039;&amp;#039;&amp;#039;Remove Now&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Windows / Linux ===&lt;br /&gt;
&lt;br /&gt;
* Click en Tools &amp;gt; Reset Safari....&lt;br /&gt;
* Hacer Check a los casilleros &amp;#039;&amp;#039;&amp;#039;Empty the cache&amp;#039;&amp;#039;&amp;#039; y &amp;#039;&amp;#039;&amp;#039;Remove all cookies&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Presionar botón &amp;#039;&amp;#039;&amp;#039;Reset&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Limpiar_Cach%C3%A9_r%C3%A1pido_para_Recargar_P%C3%A1ginas&amp;diff=554</id>
		<title>Limpiar Caché rápido para Recargar Páginas</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Limpiar_Cach%C3%A9_r%C3%A1pido_para_Recargar_P%C3%A1ginas&amp;diff=554"/>
		<updated>2015-10-05T16:07:47Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Macintosh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Chrome / Firefox ==&lt;br /&gt;
&lt;br /&gt;
=== Macintosh ===&lt;br /&gt;
cmd + shift + r&lt;br /&gt;
&lt;br /&gt;
=== Windows / Linux ===&lt;br /&gt;
crtl + shift + r&lt;br /&gt;
&lt;br /&gt;
== Internet Explorer ==&lt;br /&gt;
=== Macintosh / Windows / Linux ===&lt;br /&gt;
ctrl + F5&lt;br /&gt;
&lt;br /&gt;
== Safari ==&lt;br /&gt;
=== Macintosh ===&lt;br /&gt;
* Presionar las teclas &amp;quot;cmd + ,&amp;quot;.&lt;br /&gt;
* Ir a la pestaña &amp;#039;&amp;#039;&amp;#039;Privacity&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Presionar el botón &amp;#039;&amp;#039;&amp;#039;Remove All Website Data....&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Click &amp;#039;&amp;#039;&amp;#039;Remove Now&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Windows / Linux ===&lt;br /&gt;
ctrl + F5&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Limpiar_Cach%C3%A9_r%C3%A1pido_para_Recargar_P%C3%A1ginas&amp;diff=552</id>
		<title>Limpiar Caché rápido para Recargar Páginas</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Limpiar_Cach%C3%A9_r%C3%A1pido_para_Recargar_P%C3%A1ginas&amp;diff=552"/>
		<updated>2015-10-05T15:50:01Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Windows / Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Chrome / Firefox ==&lt;br /&gt;
&lt;br /&gt;
=== Macintosh ===&lt;br /&gt;
cmd + shift + r&lt;br /&gt;
&lt;br /&gt;
=== Windows / Linux ===&lt;br /&gt;
crtl + shift + r&lt;br /&gt;
&lt;br /&gt;
== Internet Explorer ==&lt;br /&gt;
=== Macintosh / Windows / Linux ===&lt;br /&gt;
ctrl + F5&lt;br /&gt;
&lt;br /&gt;
== Safari ==&lt;br /&gt;
=== Macintosh ===&lt;br /&gt;
cmd + r&lt;br /&gt;
&lt;br /&gt;
=== Windows / Linux ===&lt;br /&gt;
ctrl + F5&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Limpiar_Cach%C3%A9_r%C3%A1pido_para_Recargar_P%C3%A1ginas&amp;diff=551</id>
		<title>Limpiar Caché rápido para Recargar Páginas</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Limpiar_Cach%C3%A9_r%C3%A1pido_para_Recargar_P%C3%A1ginas&amp;diff=551"/>
		<updated>2015-10-05T15:48:44Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot; == Chrome / Firefox ==  === Macintosh === cmd + shift + r  === Windows / Linux === crtl + shift + r  == Internet Explorer == === Macintosh / Windows / Linux === ctrl + F5  ==...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Chrome / Firefox ==&lt;br /&gt;
&lt;br /&gt;
=== Macintosh ===&lt;br /&gt;
cmd + shift + r&lt;br /&gt;
&lt;br /&gt;
=== Windows / Linux ===&lt;br /&gt;
crtl + shift + r&lt;br /&gt;
&lt;br /&gt;
== Internet Explorer ==&lt;br /&gt;
=== Macintosh / Windows / Linux ===&lt;br /&gt;
ctrl + F5&lt;br /&gt;
&lt;br /&gt;
== Safari ==&lt;br /&gt;
=== Macintosh ===&lt;br /&gt;
cmd + r&lt;br /&gt;
&lt;br /&gt;
=== Windows / Linux ===&lt;br /&gt;
Ctrl + F5&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Compass_y_Sass,_Instalaci%C3%B3n&amp;diff=548</id>
		<title>Compass y Sass, Instalación</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Compass_y_Sass,_Instalaci%C3%B3n&amp;diff=548"/>
		<updated>2015-10-01T19:18:40Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* El Capitan 10.11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ubuntu==&lt;br /&gt;
Instalar Ruby:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
sudo apt-get install ruby-full rubygems1.8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Instalar SASS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=2&amp;gt;&lt;br /&gt;
sudo gem install sass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Instalar Compass:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=2&amp;gt;&lt;br /&gt;
sudo gem install compass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==OS X==&lt;br /&gt;
&lt;br /&gt;
===Mavericks 10.9.4===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo gem update --system&lt;br /&gt;
sudo gem install compass&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===El Capitan 10.11===&lt;br /&gt;
En El Capitan, la carpeta por defecto para instalar gemas no se puede acceder por defecto y hay que [[cambiar la configuración de gem para poder instalar en El Capital]]. Luego hay que correr los comandos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo gem update --system&lt;br /&gt;
sudo gem install compass&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;NOTA:&amp;#039;&amp;#039;&amp;#039; Tomar en cuenta los errores que aparecen en &amp;quot;Output -Sass (compile)&amp;quot; de Netbeans o del terminal.&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Mac_OS_X,_Instalar_Collabtive&amp;diff=529</id>
		<title>Mac OS X, Instalar Collabtive</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Mac_OS_X,_Instalar_Collabtive&amp;diff=529"/>
		<updated>2015-09-14T15:00:02Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Instalación de Collabtive */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación de Collabtive ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Descomprima Collabtive.&lt;br /&gt;
# Suba todo a su servidor, incluyendo las carpetas &amp;quot;/files&amp;quot; y &amp;quot;/templates_c&amp;quot;.(Puede que necesite crear las carpetas &amp;quot;/files&amp;quot; y &amp;quot;/templates_c&amp;quot; de forma manual antes de la instalación)&lt;br /&gt;
# Asigne permisos de escritura a los siguientes archivos y carpetas:&lt;br /&gt;
* /templates_c&lt;br /&gt;
* /files&lt;br /&gt;
* /config/standard/config.php&lt;br /&gt;
# Cree una nueva base de datos MySQL para Collabtive, con nombre de &amp;#039;&amp;#039;&amp;#039;collabtive&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Editar &amp;#039;&amp;#039;&amp;#039;/config/standard/config.php&amp;#039;&amp;#039;&amp;#039; cambiar &amp;#039;&amp;#039;&amp;#039;localhost&amp;#039;&amp;#039;&amp;#039; por &amp;#039;&amp;#039;&amp;#039;127.0.0.1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# Acceda con su navegador a &amp;quot;install.php&amp;quot; y siga las instrucciones.&lt;br /&gt;
# Cuando la instalación haya terminado correctamente, borre el archivo &amp;quot;install.php&amp;quot; y &amp;quot;update.php&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Mac_OS_X,_Instalar_Collabtive&amp;diff=528</id>
		<title>Mac OS X, Instalar Collabtive</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Mac_OS_X,_Instalar_Collabtive&amp;diff=528"/>
		<updated>2015-09-14T14:56:36Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot; == Instalación de Collabtive ==   # Descomprima Collabtive. # Suba todo a su servidor, incluyendo las carpetas &amp;quot;/files&amp;quot; y &amp;quot;/templates_c&amp;quot;.(Puede que necesite crear las carpet...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Instalación de Collabtive ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Descomprima Collabtive.&lt;br /&gt;
# Suba todo a su servidor, incluyendo las carpetas &amp;quot;/files&amp;quot; y &amp;quot;/templates_c&amp;quot;.(Puede que necesite crear las carpetas &amp;quot;/files&amp;quot; y &amp;quot;/templates_c&amp;quot; de forma manual antes de la instalación)&lt;br /&gt;
# Asigne permisos de escritura a los siguientes archivos y carpetas:&amp;lt;br&amp;gt;&lt;br /&gt;
	- /templates_c&amp;lt;br&amp;gt;&lt;br /&gt;
	- /files&amp;lt;br&amp;gt;&lt;br /&gt;
	- /config/standard/config.php&amp;lt;br&amp;gt;&lt;br /&gt;
# Cree una nueva base de datos MySQL para Collabtive, con nombre de &amp;#039;&amp;#039;&amp;#039;collabtive&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Editar &amp;#039;&amp;#039;&amp;#039;/config/standard/config.php&amp;#039;&amp;#039;&amp;#039; cambiar &amp;#039;&amp;#039;&amp;#039;localhost&amp;#039;&amp;#039;&amp;#039; por &amp;#039;&amp;#039;&amp;#039;127.0.0.1&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# Acceda con su navegador a &amp;quot;install.php&amp;quot; y siga las instrucciones.&lt;br /&gt;
# Cuando la instalación haya terminado correctamente, borre el archivo &amp;quot;install.php&amp;quot; y &amp;quot;update.php&amp;quot;.&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Main_Page&amp;diff=527</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Main_Page&amp;diff=527"/>
		<updated>2015-09-14T14:51:17Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Mac OS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-size: 15px; color: gray;&amp;quot;&amp;gt;Este es el wiki de [http://www.flat.cl/ Flat Estrategia Digital (Flat)]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web==&lt;br /&gt;
&lt;br /&gt;
===Apache===&lt;br /&gt;
# [[Habilitar .htaccess]]&lt;br /&gt;
# [[Apache, restringir acceso]]&lt;br /&gt;
# [[Apache, .htacces]]&lt;br /&gt;
&lt;br /&gt;
===Javascript===&lt;br /&gt;
# [[Javascript, Variables en URL como Anchors]]&lt;br /&gt;
# [[Crear librería de JavaScript]]&lt;br /&gt;
# [[Bloque try catch]]&lt;br /&gt;
# [[Asignar multiples eventos a un selector]]&lt;br /&gt;
&lt;br /&gt;
===PHP===&lt;br /&gt;
# [[Enviar mail con archivos adjuntos PHP |Enviar mail con archivos adjuntos PHP]]&lt;br /&gt;
# [[Subir archivo a servidor |Subir archivo(s) al servidor con PHP]]&lt;br /&gt;
# [[Ámbito de clases PHP |Ámbito de clases en PHP]]&lt;br /&gt;
# [[Simular &amp;quot;text-overflow:ellipsis&amp;quot; |Simular &amp;quot;text-overflow:ellipsis&amp;quot; ]]&lt;br /&gt;
&lt;br /&gt;
===Compass y Sass===&lt;br /&gt;
# [[Compass y Sass, Instalación]]&lt;br /&gt;
# [[Compass y Sass, Configuración y uso]]&lt;br /&gt;
&lt;br /&gt;
==Mediawiki==&lt;br /&gt;
# [[MediaWiki, elementos colapsables]]&lt;br /&gt;
# [[Manejar Permisos Wikimedia]]&lt;br /&gt;
# [[Extension Wiki SyntaxHighlight]]&lt;br /&gt;
&lt;br /&gt;
==MySQL==&lt;br /&gt;
# [[Generar diccionario de datos con MySQL Workbench]]&lt;br /&gt;
# [[Crear enlace ODBC para conectar Excel con MySQL]]&lt;br /&gt;
# [[Importar archivo.sql por Terminal]]&lt;br /&gt;
# [[Usuarios Mysql]]&lt;br /&gt;
# [[Errores MySql]]&lt;br /&gt;
# [[MySQL, iniciar, detener o reiniciar]]&lt;br /&gt;
&lt;br /&gt;
==NetBeans==&lt;br /&gt;
# [[Multiples filas de pestañas NetBeans]]&lt;br /&gt;
# [[Cómo documentar un Proyecto en PHP con NetBeans]]&lt;br /&gt;
# [[Compilar archivos Sass al grabar en Netbeans]]&lt;br /&gt;
==OS==&lt;br /&gt;
&lt;br /&gt;
===*nix (Sistemas tipo Unix)===&lt;br /&gt;
# [[*nix, crear alias de comandos]]&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
# [[Crear claves publicas y privadas para conectarse por SSH al servidor]]&lt;br /&gt;
# [[Linux, Búsquedas de archivos y texto]]&lt;br /&gt;
# [[Linux, Cambiar directorio home por defecto]]&lt;br /&gt;
# [[Linux, hacer que el botón de power (on/off) apague el computador solo si no hay nadie loggeado (Ubuntu 14.04)]]&lt;br /&gt;
# [[Linux, Borrar o renombrar archivos con caracteres &amp;quot;raros&amp;quot; en su nombre]]&lt;br /&gt;
# [[Linux, Tips y Trucos]]&lt;br /&gt;
# [[Iniciar con Grub Ubuntu]]&lt;br /&gt;
# [[Instalar lftp]]&lt;br /&gt;
# [[Instalar Firewall Firestarter en Ubuntu 14.04]]&lt;br /&gt;
# [[Instalción y uso de ImageMagick]]&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
# [[Mac OS X, Como incluir directorios en PATH]]&lt;br /&gt;
# [[Instalar mcrypt]]&lt;br /&gt;
# [[Instalción y uso de ImageMagick]]&lt;br /&gt;
# [[OS X, Automator y AppleScript]]&lt;br /&gt;
# [[Mac OS X, Instalar Collabtive]]&lt;br /&gt;
&lt;br /&gt;
==Git==&lt;br /&gt;
# [[Git, lo Básico]]&lt;br /&gt;
# [[Git, Tagging]]&lt;br /&gt;
# [[Git, Branching]]&lt;br /&gt;
# [[Git, Stashing]]&lt;br /&gt;
# [[Git, Rebase]]&lt;br /&gt;
&lt;br /&gt;
==Trabajo IT==&lt;br /&gt;
===Metodologías===&lt;br /&gt;
# [[Metodologías para encontrar errores]]&lt;br /&gt;
# [[Metodologías para encontrar soluciones]]&lt;br /&gt;
# [[Metodología de trabajo por encargo]]&lt;br /&gt;
# [[Como hacer un diagrama de flujo]]&lt;br /&gt;
# [[Métodos de programación]]&lt;br /&gt;
# [[Método Científico]]&lt;br /&gt;
# [[Multitasking versus Monotasking]]&lt;br /&gt;
&lt;br /&gt;
===Estándares===&lt;br /&gt;
# [[Estándares de Desarrollo]]&lt;br /&gt;
# [[Ejemplo de HTML5 válido]]&lt;br /&gt;
# [[Cómo Generar Documentación en JavaScript]]&lt;br /&gt;
# [[Code Design Patterns (Patrones de Diseño de Código)]]&lt;br /&gt;
# [[Firmas de funciones en programación]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Git,_Branching&amp;diff=526</id>
		<title>Git, Branching</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Git,_Branching&amp;diff=526"/>
		<updated>2015-08-24T16:49:27Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Remotes, ramas remotas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;Branching&amp;#039;&amp;#039; funciona como caminos diferentes que pueden volver a unirse. En un punto determinado de la historia del proyecto se crean dos caminos que contienen lo mismo pero que pueden cambiar independientemente.&lt;br /&gt;
&lt;br /&gt;
Existe un puntero HEAD que apunta a la rama actual.&lt;br /&gt;
&lt;br /&gt;
La rama maestra se crea por defecto y se llama &amp;#039;&amp;#039;master&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Antes de cambiar de rama (&amp;#039;&amp;#039;checkout&amp;#039;&amp;#039;) es buena idea hacer un commit.&lt;br /&gt;
&lt;br /&gt;
El [http://git-scm.com/book/en/Git-Branching-Branching-Workflows libro oficial] muestra un par de formas de trabajo con ramas, flujos de trabajo.&lt;br /&gt;
&lt;br /&gt;
Cuando se trabaja remotamente se trabaja con ramas, la rama remota por defecto es origin/master, origin siendo el &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; y &amp;#039;&amp;#039;master&amp;#039;&amp;#039; siendo la rama.&lt;br /&gt;
&lt;br /&gt;
==Crear una rama nueva, nueva branch==&lt;br /&gt;
Para crear una rama nueva se ejecuta el siguiente comando.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git branch nuevaRama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039;: Esto no carga la rama directamente, solo la crea.&lt;br /&gt;
&lt;br /&gt;
==Listar ramas==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git branch&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Para más información ver [http://git-scm.com/book/en/Git-Branching-Branch-Management libro oficial].&lt;br /&gt;
&lt;br /&gt;
==Cargar una rama==&lt;br /&gt;
Este comando carga el contenido de una rama y hace que el puntero HEAD apunte a dicha rama.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout nuevaRama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cargar la rama maestra==&lt;br /&gt;
Este comando carga el contenido de la rama maestra y hace que el puntero HEAD apunte a dicha rama.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Crear rama y cargarla==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -b nuevaRama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Es un atajo que hace lo mismo que:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git branch nuevaRama&lt;br /&gt;
git checkout nuevaRama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Merge branches (unificar ramas)==&lt;br /&gt;
Lo siguiente deja como rama de trabajo a &amp;#039;&amp;#039;master&amp;#039;&amp;#039; y sobre esta introduce nuevaRama.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout master	# Se carga la rama master estando en otra rama&lt;br /&gt;
git merge nuevaRama	# Se hace merge de la nuevaRama sobre master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Otra forma de llegar al mismo resultado de un &amp;#039;&amp;#039;merge&amp;#039;&amp;#039; es haciendo un &amp;#039;&amp;#039;rebasing&amp;#039;&amp;#039; que integra todos los cambios que se han producido en una rama a otra y desapareciendo la rama. Para más información de cómo funciona y casos de uso ver [http://git-scm.com/book/en/Git-Branching-Rebasing libro oficial].&lt;br /&gt;
&lt;br /&gt;
==Borrar una rama==&lt;br /&gt;
Se pueden borrar ramas cuando se desee pero puede ser buena idea hacerlo cuando se planee no usarla más, eso puede ocurrir por ejemplo cuando se trabajo en una rama, se unió al &amp;#039;&amp;#039;master&amp;#039;&amp;#039; y ya no tiene sentido tener la rama todavía porque no se va a trabajar más sobre ella.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git branch -d nuevaRama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Remotes, ramas remotas==&lt;br /&gt;
&lt;br /&gt;
===Listar rama remota===&lt;br /&gt;
&lt;br /&gt;
Para ver las ramas remotas a las que hacemos seguimiento, utilizamos el comando branch con el parámetro -r:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git branch -r&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar remote===&lt;br /&gt;
El siguiente comando agrega un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto Git actual, esto solo asocia un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto pero no obtiene los archivos. nombreReferencia es un nombre arbitratio que se le da al remote para referenciarlo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add nombreReferencia username@host:/path/to/nombreRepositorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener rama remota===&lt;br /&gt;
No muestra los archivos obtenidos solo los obtiene.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git fetch nombreRemote [nombreRama] # Si no se especifica nombreRama obtiene master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener cambios de rama remota===&lt;br /&gt;
Se obtienen los archivos y luego se mezclan con lo que hay en el directorio de trabajo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git pull nombreRemote nombreRamaRemote # Si no especifico HEAD me pide una versión&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subir cambios a rama remota===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push nombreRemote nombreRama[:nombreRamaEnServidor] # :nombreRamaEnServidor es opcional y setea el nombre de la rama en el servidor&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tracking Branches, ramas locales que siguen una rama remota===&lt;br /&gt;
Son ramas que permiten hacer &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;git pull&amp;lt;/code&amp;gt; sin argumentos, tienen una relación directa con la rama remota. Los siguientes comandos hacen lo mismo: crean una rama local, obtienen la fuente de una rama remota y asocian la rama remota con la local.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -b nombreRamaLocal nombreRemote/nombreRamaRemote	# Forma de creación generica&lt;br /&gt;
git checkout --track nombreRemote/nombreRamaRemote		# Forma reducida, no se especifica nombre local, Git &amp;gt; v1.6.2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar ramas remotas===&lt;br /&gt;
Conceptualmente, el siguiente comando hace que se suba una rama local &amp;#039;&amp;#039;inexistente&amp;#039;&amp;#039; en una rama remota, lo que hace que se borre la remota.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push nombreRemote :nombreRama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conflictos==&lt;br /&gt;
Para más información sobre cuando se producen conflictos y cómo resolverlos trabajando con &amp;#039;&amp;#039;branches&amp;#039;&amp;#039;, ver [http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging#Basic-Merge-Conflicts libro oficial].&lt;br /&gt;
&lt;br /&gt;
[[Category: Git]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=C%C3%B3mo_documentar_un_Proyecto_en_PHP_con_NetBeans&amp;diff=498</id>
		<title>Cómo documentar un Proyecto en PHP con NetBeans</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=C%C3%B3mo_documentar_un_Proyecto_en_PHP_con_NetBeans&amp;diff=498"/>
		<updated>2015-06-02T15:40:17Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Usando Terminal para ApiGen 4+ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Instalación==&lt;br /&gt;
Estas instrucciones aplican para ApiGen 4+.&lt;br /&gt;
&lt;br /&gt;
# Descargar código de http://www.apigen.org.&lt;br /&gt;
# Guardarlo en un directorio, se sugiere en OS X en /usr/local/apigen.&lt;br /&gt;
# Volver ejecutable el archivo descargado.&lt;br /&gt;
# Agregar el archivo al PATH para ser usado desde cualquier parte. &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo ln -s /usr/local/apigen/apigen.phar /usr/local/bin/apigen&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configuración Netbeans ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039;: Esta forma no aplica con ApiGen 4+.&lt;br /&gt;
&lt;br /&gt;
Ingresar a la pestaña Profile -&amp;gt; Options. &lt;br /&gt;
&lt;br /&gt;
==== ApiGen ====&lt;br /&gt;
&lt;br /&gt;
- ApiGen Script: &amp;#039;&amp;#039;&amp;#039;/usr/local/netbeans-7.3/apigen/apigen.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Cómo Documentar==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Para las Clases ===&lt;br /&gt;
&lt;br /&gt;
#En la línea anterior de cada clase escribir /**.&lt;br /&gt;
#En la siguiente línea poner * una breve descripción de la clase&lt;br /&gt;
##Si es necesario una descripción mas extensa de la clase, hacer un salto de línea y escribir.&lt;br /&gt;
#La tercer línea terminar la documentación con un */.&lt;br /&gt;
#En la línea anterior a los parámetros, escribir /**.&lt;br /&gt;
#Se creará el parámetro, especificar tipo y describir función.&lt;br /&gt;
#Terminar con un */.&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo ====&lt;br /&gt;
Esto es solo una calse de ejemplo, para mostrar el formato de documentación.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Esta clase es una estructura necesaria para interactuar con ProcessMaker&lt;br /&gt;
 *&lt;br /&gt;
 * Descripción extensa.&lt;br /&gt;
 */&lt;br /&gt;
class variableStruct {&lt;br /&gt;
&lt;br /&gt;
	/** @var string		nombre del parámetro. */&lt;br /&gt;
	public $name;&lt;br /&gt;
&lt;br /&gt;
	/** @var string		valor del parámetro. */&lt;br /&gt;
	public $value;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Para las Funciones ===&lt;br /&gt;
&lt;br /&gt;
#En la línea anterior de cada función escribir /** y presionar la tecla enter.&lt;br /&gt;
#Netbeans creará una lista de parámetros utilizados en la función,  cada uno con el tipo y su nombre, les aparecerá algo como esto: * @param type $nombre, lo que se debe cambiar es el type, por el tipo de dato (ej:string,array,etc) y después de $nombre en la misma línea escribir que contiene este dato(ej:nombre del usuario).&lt;br /&gt;
#En la línea posterior a /**, escribir una breve descripción de la función. &lt;br /&gt;
##Si la función es demasiado larga es recomendable utilizar tag de html (ej:&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;paso 1&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;paso 2&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;) para ir describiendo paso a paso la función.&lt;br /&gt;
&lt;br /&gt;
==== Ejemplo ====&lt;br /&gt;
&lt;br /&gt;
Esto es solo una función de ejemplo, para mostrar el formato de documentación.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Reasigna los casos al usuario indicado.&lt;br /&gt;
 * &lt;br /&gt;
 * Se llevan a cabo los siguientes pasos:&lt;br /&gt;
 * &amp;lt;ul&amp;gt;&lt;br /&gt;
 * 	&amp;lt;li&amp;gt;Se obtienen los datos del caso a resignar.&amp;lt;/li&amp;gt;&lt;br /&gt;
 * 	&amp;lt;li&amp;gt;Se obtiene el ID del usuario a reasignar.&amp;lt;/li&amp;gt;&lt;br /&gt;
 * 	&amp;lt;li&amp;gt;Se reasigna el caso.&amp;lt;/li&amp;gt;&lt;br /&gt;
 * &amp;lt;/ul&amp;gt;&lt;br /&gt;
 * &lt;br /&gt;
 * @author		nombre apellido &amp;lt;correo&amp;gt;&lt;br /&gt;
 * &lt;br /&gt;
 * @param string	APP_UID del caso.&lt;br /&gt;
 * @param int		DEL_INDEX del caso.&lt;br /&gt;
 * @param string	USR_UID del usuario ya asignado.&lt;br /&gt;
 * @param string	USR_UID del nuevo usuario a asignar.&lt;br /&gt;
 */&lt;br /&gt;
public function reasignarCaso($idCaso, $delIndex, $idOldUser, $idNewUser) {&lt;br /&gt;
	G::LoadClass(&amp;quot;case&amp;quot;);&lt;br /&gt;
	$cnn = Propel::getConnection(&amp;quot;workflow&amp;quot;);&lt;br /&gt;
	$stmt = $cnn-&amp;gt;createStatement();&lt;br /&gt;
	$c = new Cases();&lt;br /&gt;
	//Reasigna los casos seleccioandos a un nuevo usuario&lt;br /&gt;
	$var = $c-&amp;gt;reassignCase($idCaso, $delIndex, $idOldUser, $idNewUser);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Importante ===&lt;br /&gt;
&lt;br /&gt;
#El formato de la documentación de cada función empieza con /** &lt;br /&gt;
#Cada línea de contenido debe comenzar con un *  &lt;br /&gt;
#Finalizar la documentación con */.&lt;br /&gt;
&lt;br /&gt;
==Generar la documentación==&lt;br /&gt;
&lt;br /&gt;
===Usando NetBeans===&lt;br /&gt;
&lt;br /&gt;
Una vez terminada la documentación de cada función y de todas las páginas php que necesita. &lt;br /&gt;
# Ir a la pestaña &amp;#039;&amp;#039;&amp;#039;Window-&amp;gt;Projects(Ctrl+1)&amp;#039;&amp;#039;&amp;#039;, donde nos listará todos los proyectos que tenemos en nuestro NetBeans.&lt;br /&gt;
# Hacer click derecho encima de nuestro proyecto el cuál hemos documentado y presionar en &amp;#039;&amp;#039;&amp;#039;“Properties”&amp;#039;&amp;#039;&amp;#039;, en la sección de &amp;#039;&amp;#039;&amp;#039;“Categories”&amp;#039;&amp;#039;&amp;#039; ir a &amp;#039;&amp;#039;&amp;#039;“ApiGen”&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# En &amp;#039;&amp;#039;&amp;#039;“Target Directory”&amp;#039;&amp;#039;&amp;#039; debemos indicar la carpeta en donde se generará nuestra documentación (es recomendable crear una carpeta nueva “documentación” dentro del mismo proyecto) y ok. &lt;br /&gt;
# Luego de hacer los pasos anteriores, volver hacer click derecho a nuestro proyecto y presionar &amp;#039;&amp;#039;&amp;#039;“Generate Documentation”&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# NetBeans genera la documentación y la muestra en nuestro navegador por defecto, la url sería &amp;#039;&amp;#039;&amp;#039;file:///var/www/nombre_proyecto/carpeta_documentación/index.html&amp;#039;&amp;#039;&amp;#039;, aquí encontraremos la lista de todas las clases y sus funciones documentadas.&lt;br /&gt;
&lt;br /&gt;
===Usando Terminal para ApiGen 4+===&lt;br /&gt;
&lt;br /&gt;
Con NetBeans 8 o previo no se puede generar la documentación usando ApiGen 4+ ya que cambia la forma como se genera la documentación. Para generar la documentación hay que hacerlo como comando desde la línea de comando, de la siguiente manera:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
apigen generate --source [directorio a documentar] --destination [directorio de destino]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Simular_%22text-overflow:ellipsis%22&amp;diff=490</id>
		<title>Simular &quot;text-overflow:ellipsis&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Simular_%22text-overflow:ellipsis%22&amp;diff=490"/>
		<updated>2015-05-15T19:26:09Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Como simular &amp;quot;text-overflow:ellipsis&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== &amp;quot;text-overflow:ellipsis&amp;quot;en textos largos (multilinea) ==&lt;br /&gt;
&lt;br /&gt;
Se explica la forma de simular &amp;quot;text-overflow:ellipsis&amp;quot;(puntos suspensivos), en textos largos de mas de una linea. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Link Explicación: http://notasjs.blogspot.com/2013/05/simular-text-overflowellipsis-para.html?showComment=1431717145580#c3042567897354911128&amp;lt;br&amp;gt;&lt;br /&gt;
Link Código Funcionando: http://jsfiddle.net/xeneize100/cct4xy2L/3/&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Simular_%22text-overflow:ellipsis%22&amp;diff=489</id>
		<title>Simular &quot;text-overflow:ellipsis&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Simular_%22text-overflow:ellipsis%22&amp;diff=489"/>
		<updated>2015-05-15T19:25:21Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot; == Como simular &amp;quot;text-overflow:ellipsis&amp;quot; ==  Se explica la forma de simular &amp;quot;text-overflow:ellipsis&amp;quot;(puntos suspensivos), en textos largos de mas de una linea. &amp;lt;br&amp;gt;  Link Exp...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Como simular &amp;quot;text-overflow:ellipsis&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Se explica la forma de simular &amp;quot;text-overflow:ellipsis&amp;quot;(puntos suspensivos), en textos largos de mas de una linea. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Link Explicación: http://notasjs.blogspot.com/2013/05/simular-text-overflowellipsis-para.html?showComment=1431717145580#c3042567897354911128&amp;lt;br&amp;gt;&lt;br /&gt;
Link Código Funcionando: http://jsfiddle.net/xeneize100/cct4xy2L/3/&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Main_Page&amp;diff=488</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Main_Page&amp;diff=488"/>
		<updated>2015-05-15T19:16:37Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* PHP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-size: 15px; color: gray;&amp;quot;&amp;gt;Este es el wiki de [http://www.flat.cl/ Flat Estrategia Digital (Flat)]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web==&lt;br /&gt;
&lt;br /&gt;
===Apache===&lt;br /&gt;
# [[Habilitar .htaccess]]&lt;br /&gt;
# [[Apache, restringir acceso]]&lt;br /&gt;
# [[Apache, .htacces]]&lt;br /&gt;
&lt;br /&gt;
===Javascript===&lt;br /&gt;
# [[Javascript, Variables en URL como Anchors]]&lt;br /&gt;
# [[Crear librería de JavaScript]]&lt;br /&gt;
# [[Bloque try catch]]&lt;br /&gt;
&lt;br /&gt;
===PHP===&lt;br /&gt;
# [[Enviar mail con archivos adjuntos PHP |Enviar mail con archivos adjuntos PHP]]&lt;br /&gt;
# [[Subir archivo a servidor |Subir archivo(s) al servidor con PHP]]&lt;br /&gt;
# [[Ámbito de clases PHP |Ámbito de clases en PHP]]&lt;br /&gt;
# [[Simular &amp;quot;text-overflow:ellipsis&amp;quot; |Simular &amp;quot;text-overflow:ellipsis&amp;quot; ]]&lt;br /&gt;
&lt;br /&gt;
===Compass y Sass===&lt;br /&gt;
# [[Compass y Sass, Instalación]]&lt;br /&gt;
# [[Compass y Sass, Configuración y uso]]&lt;br /&gt;
# [[Compilar archivos Sass al grabar en Netbeans]]&lt;br /&gt;
&lt;br /&gt;
==Mediawiki==&lt;br /&gt;
# [[MediaWiki, elementos colapsables]]&lt;br /&gt;
# [[Manejar Permisos Wikimedia]]&lt;br /&gt;
# [[Extension Wiki SyntaxHighlight]]&lt;br /&gt;
&lt;br /&gt;
==MySQL==&lt;br /&gt;
# [[Generar diccionario de datos con MySQL Workbench]]&lt;br /&gt;
# [[Crear enlace ODBC para conectar Excel con MySQL]]&lt;br /&gt;
# [[Importar archivo.sql por Terminal]]&lt;br /&gt;
# [[Usuarios Mysql]]&lt;br /&gt;
# [[Errores MySql]]&lt;br /&gt;
# [[MySQL, iniciar, detener o reiniciar]]&lt;br /&gt;
&lt;br /&gt;
==OS==&lt;br /&gt;
&lt;br /&gt;
===*nix (Sistemas tipo Unix)===&lt;br /&gt;
# [[*nix, crear alias de comandos]]&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
# [[Crear claves publicas y privadas para conectarse por SSH al servidor]]&lt;br /&gt;
# [[Linux, Búsquedas de archivos y texto]]&lt;br /&gt;
# [[Linux, Cambiar directorio home por defecto]]&lt;br /&gt;
# [[Linux, hacer que el botón de power (on/off) apague el computador solo si no hay nadie loggeado (Ubuntu 14.04)]]&lt;br /&gt;
# [[Linux, Borrar o renombrar archivos con caracteres &amp;quot;raros&amp;quot; en su nombre]]&lt;br /&gt;
# [[Linux, Tips y Trucos]]&lt;br /&gt;
# [[Iniciar con Grub Ubuntu]]&lt;br /&gt;
# [[Instalar lftp]]&lt;br /&gt;
# [[Instalar Firewall Firestarter en Ubuntu 14.04]]&lt;br /&gt;
# [[Instalción y uso de ImageMagick]]&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
# [[Mac OS X, Como incluir directorios en PATH]]&lt;br /&gt;
# [[Instalar mcrypt]]&lt;br /&gt;
# [[Instalción y uso de ImageMagick]]&lt;br /&gt;
&lt;br /&gt;
==Git==&lt;br /&gt;
# [[Git, lo Básico]]&lt;br /&gt;
# [[Git, Tagging]]&lt;br /&gt;
# [[Git, Branching]]&lt;br /&gt;
# [[Git, Stashing]]&lt;br /&gt;
# [[Git, Rebase]]&lt;br /&gt;
&lt;br /&gt;
==Trabajo IT==&lt;br /&gt;
===Metodologías===&lt;br /&gt;
# [[Metodologías para encontrar errores]]&lt;br /&gt;
# [[Metodologías para encontrar soluciones]]&lt;br /&gt;
# [[Metodología de trabajo por encargo]]&lt;br /&gt;
# [[Como hacer un diagrama de flujo]]&lt;br /&gt;
# [[Métodos de programación]]&lt;br /&gt;
# [[Método Científico]]&lt;br /&gt;
# [[Multitasking versus Monotasking]]&lt;br /&gt;
&lt;br /&gt;
===Estándares===&lt;br /&gt;
# [[Estándares de Desarrollo]]&lt;br /&gt;
# [[Ejemplo de HTML5 válido]]&lt;br /&gt;
# [[Cómo documentar un Proyecto en PHP con NetBeans]]&lt;br /&gt;
# [[Cómo Generar Documentación en JavaScript]]&lt;br /&gt;
# [[Code Design Patterns (Patrones de Diseño de Código)]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Bloque_try_catch&amp;diff=481</id>
		<title>Bloque try catch</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Bloque_try_catch&amp;diff=481"/>
		<updated>2015-04-10T11:33:21Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;El bloque &amp;lt;b&amp;gt;Try - Catch&amp;lt;/b&amp;gt; es una instrucción que permite controlar los errores que se producen durante la ejecución de un aplicación, dando la opción de que la ejecución del código continue, de así ser necesario.&lt;br /&gt;
&lt;br /&gt;
Esta Instrucción consta de 2 partes principalmente:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;#039;&amp;#039;&amp;#039;El bloque Try: &amp;#039;&amp;#039;&amp;#039;Es el bloque donde se inserta el código que se desea ejecutar normalmente.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;#039;&amp;#039;&amp;#039;El bloque Catch: &amp;#039;&amp;#039;&amp;#039;En este bloque es donde se especifican las acciones a realizar en caso de que la ejecución del código en el bloque &amp;#039;&amp;#039;Try&amp;#039;&amp;#039; falle.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede también agregar al try-catch el bloque &amp;#039;&amp;#039;&amp;#039;Finally&amp;#039;&amp;#039;&amp;#039;. Las instrucciones indicadas dentro de este bloque siempre se ejecutaran, independiente de si la ejecución del try fue exitosa o si se ejecutaron las instrucciones del catch. Un ejemplo de uso para el bloque finally es la liberación de recursos al finalizar la ejecución de una instrucción (Ya sea del try o catch).&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
=== Ejemplo en Javascript === &lt;br /&gt;
&lt;br /&gt;
En este ejemplo se ejecutaran las instrucciones especificadas en el bloque catch, ya que al llamar a la función en el try, se le esta entregando una variable que no ha sido definida.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
function funcion() {&lt;br /&gt;
   var div = 3 / 2;&lt;br /&gt;
   return div;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
try&lt;br /&gt;
{&lt;br /&gt;
   // En esta situación se pasara al bloque catch ya que la variable &amp;#039;a&amp;#039; no esta definida.&lt;br /&gt;
   funcion(a);&lt;br /&gt;
} catch (error) {&lt;br /&gt;
   alert(&amp;quot;Ocurrio un error: &amp;quot; + error);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Ejemplo en PHP === &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
function inverse($x) {&lt;br /&gt;
	if (!$x) {&lt;br /&gt;
		throw new Exception(&amp;#039;Division por cero.&amp;#039;);&lt;br /&gt;
	}&lt;br /&gt;
	return 1 / $x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
try {&lt;br /&gt;
	echo inverse(5) . &amp;quot;&amp;lt;br&amp;gt;&amp;quot;;&lt;br /&gt;
} catch (Exception $e) {&lt;br /&gt;
	echo &amp;#039;Excepcion capturada: &amp;#039;, $e-&amp;gt;getMessage(), &amp;quot;&amp;lt;br&amp;gt;&amp;quot;;&lt;br /&gt;
} finally {&lt;br /&gt;
	echo &amp;quot;Primer finally.&amp;lt;br&amp;gt;&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Apache,_.htacces&amp;diff=478</id>
		<title>Apache, .htacces</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Apache,_.htacces&amp;diff=478"/>
		<updated>2015-03-05T14:54:29Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* ¿Para que sirve? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== ¿Qué es .htacces? ==&lt;br /&gt;
Un fichero .htaccess, también conocido como archivo de configuración distribuida, es un fichero especial, popularizado por el Servidor HTTP Apache que permite definir diferentes directivas de configuración para cada directorio sin necesidad de editar el archivo de configuración principal de Apache.&lt;br /&gt;
&lt;br /&gt;
== ¿Para que sirve? ==&lt;br /&gt;
Con este archivo podremos configurar nuestro servidor web para:&lt;br /&gt;
* Hacerlo algo más seguro.&lt;br /&gt;
* Realizar redirecciones.&lt;br /&gt;
* Crear mensajes de error personalizados.&lt;br /&gt;
* Restringir el acceso a carpetas. &lt;br /&gt;
* Evitar el listado de directorios de nuestro servidor. &lt;br /&gt;
* Permitir el uso de nuestro dominio sin usar las famosas &amp;#039;www&amp;#039;.&lt;br /&gt;
* Entre otras.&lt;br /&gt;
&lt;br /&gt;
== Options -Multiviews ==&lt;br /&gt;
Las Options (Opciones de directiva) controla qué características del servidor están disponibles en un directorio en particular.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Por defecto todas las opciones vienen habilitadas, excepto para Multiviews&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Al deshabilitar la opción Multiviews en el archivo .htaccess, hace que apague la negociación de contenido para buscar variantes dentro de los directorios.&lt;br /&gt;
&lt;br /&gt;
== RewriteEngine On ==&lt;br /&gt;
El módulo &amp;#039;&amp;#039;&amp;#039;mod_rewrite&amp;#039;&amp;#039;&amp;#039;  utiliza un motor de reescritura compuesta por reglas, basado en un analizador de expresiones regulares PCRE (compatibles con Perl), para reescribir las URL solicitada. De forma predeterminada, &amp;#039;&amp;#039;&amp;#039;mod_rewrite&amp;#039;&amp;#039;&amp;#039; asigna una dirección URL a una trayectoria del sistema de ficheros. Sin embargo, también se puede utilizar para redirigir un URL a otro URL.&lt;br /&gt;
&lt;br /&gt;
== RewriteBase ==&lt;br /&gt;
Establece la base de la URL para reescrituras por directorio.&lt;br /&gt;
&lt;br /&gt;
== RewriteRule ^admin.* - [L] ==&lt;br /&gt;
Significa que todo directorio que comience(^) con admin seguido de cualquier archivo o otro directorio, no se sobreescriba.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La [L] es una configuración especial del RewriteRule llamada bandera (flag).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación se explicará un poco mas sobre las banderas [L] y [QSA].&lt;br /&gt;
&lt;br /&gt;
=== [L] ===&lt;br /&gt;
La bandera [L] provoca en mod_rewrite que deje de procesar el conjunto de reglas siguientes. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la mayoría de los contextos, esto significa que si la regla coincide, se procesara sin importar si existen más reglas. Esto corresponde con el last comando en Perl, o break comando en C. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Utilizar esta opción para indicar que la norma actual se debe aplicar de inmediato sin tener en cuenta otras normas.&lt;br /&gt;
&lt;br /&gt;
=== [QSA] ===&lt;br /&gt;
Con la bandera [QSA], una solicitud de&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;/pages/123?one=two&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
se asignará a &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;/page.php?page=123&amp;amp;one=two&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sin la bandera [QSA], esa misma solicitud se asignará a &amp;#039;&amp;#039;&amp;#039;/page.php?page=123&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
es decir, la cadena de consulta existente será descartado.&lt;br /&gt;
&lt;br /&gt;
== Personalizar Errores ==&lt;br /&gt;
* ErrorDocument 400 /directorio/error/404.html &lt;br /&gt;
* ErrorDocument 401 /directorio/error/401.html &lt;br /&gt;
* ErrorDocument 403 /directorio/error/403.html &lt;br /&gt;
* ErrorDocument 404 /directorio/error/404.html&lt;br /&gt;
&lt;br /&gt;
== Proteger carpetas ==&lt;br /&gt;
Este archivo .htaccess lo colocaremos en la carpeta que queremos proteger. Editemos el .htaccess con algo similar a :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
AuthUserFile /ruta/absoluta/hacia/.htpasswd&amp;lt;br&amp;gt;&lt;br /&gt;
AuthName AquiPuedesPonerLoQueQuieras&amp;lt;br&amp;gt;&lt;br /&gt;
AuthType Basic&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
require user test123&lt;br /&gt;
&lt;br /&gt;
== El archivo .htpasswd ==&lt;br /&gt;
Este archivo contiene una lista de nombres de usuario y contraseñas, en formato usuario:contraseña y cada nombre-clave en una línea independiente, por ejemplo :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;test123&amp;#039;&amp;#039;&amp;#039;:12JvVkeJRgm8A&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;otrousuario:&amp;#039;&amp;#039;&amp;#039;$1$UNHEaBiV$NzwYQ8NhjzIOUmFyfGyrO&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Apache,_.htacces&amp;diff=477</id>
		<title>Apache, .htacces</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Apache,_.htacces&amp;diff=477"/>
		<updated>2015-03-05T14:54:02Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Personalizar Errores */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== ¿Qué es .htacces? ==&lt;br /&gt;
Un fichero .htaccess, también conocido como archivo de configuración distribuida, es un fichero especial, popularizado por el Servidor HTTP Apache que permite definir diferentes directivas de configuración para cada directorio sin necesidad de editar el archivo de configuración principal de Apache.&lt;br /&gt;
&lt;br /&gt;
== ¿Para que sirve? ==&lt;br /&gt;
Con este archivo podremos configurar nuestro servidor web para:&lt;br /&gt;
#Hacerlo algo más seguro.&lt;br /&gt;
#Realizar redirecciones.&lt;br /&gt;
#Crear mensajes de error personalizados.&lt;br /&gt;
#Restringir el acceso a carpetas. &lt;br /&gt;
#Evitar el listado de directorios de nuestro servidor. &lt;br /&gt;
#Permitir el uso de nuestro dominio sin usar las famosas &amp;#039;www&amp;#039;.&lt;br /&gt;
#Entre otras.&lt;br /&gt;
&lt;br /&gt;
== Options -Multiviews ==&lt;br /&gt;
Las Options (Opciones de directiva) controla qué características del servidor están disponibles en un directorio en particular.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Por defecto todas las opciones vienen habilitadas, excepto para Multiviews&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Al deshabilitar la opción Multiviews en el archivo .htaccess, hace que apague la negociación de contenido para buscar variantes dentro de los directorios.&lt;br /&gt;
&lt;br /&gt;
== RewriteEngine On ==&lt;br /&gt;
El módulo &amp;#039;&amp;#039;&amp;#039;mod_rewrite&amp;#039;&amp;#039;&amp;#039;  utiliza un motor de reescritura compuesta por reglas, basado en un analizador de expresiones regulares PCRE (compatibles con Perl), para reescribir las URL solicitada. De forma predeterminada, &amp;#039;&amp;#039;&amp;#039;mod_rewrite&amp;#039;&amp;#039;&amp;#039; asigna una dirección URL a una trayectoria del sistema de ficheros. Sin embargo, también se puede utilizar para redirigir un URL a otro URL.&lt;br /&gt;
&lt;br /&gt;
== RewriteBase ==&lt;br /&gt;
Establece la base de la URL para reescrituras por directorio.&lt;br /&gt;
&lt;br /&gt;
== RewriteRule ^admin.* - [L] ==&lt;br /&gt;
Significa que todo directorio que comience(^) con admin seguido de cualquier archivo o otro directorio, no se sobreescriba.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La [L] es una configuración especial del RewriteRule llamada bandera (flag).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación se explicará un poco mas sobre las banderas [L] y [QSA].&lt;br /&gt;
&lt;br /&gt;
=== [L] ===&lt;br /&gt;
La bandera [L] provoca en mod_rewrite que deje de procesar el conjunto de reglas siguientes. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la mayoría de los contextos, esto significa que si la regla coincide, se procesara sin importar si existen más reglas. Esto corresponde con el last comando en Perl, o break comando en C. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Utilizar esta opción para indicar que la norma actual se debe aplicar de inmediato sin tener en cuenta otras normas.&lt;br /&gt;
&lt;br /&gt;
=== [QSA] ===&lt;br /&gt;
Con la bandera [QSA], una solicitud de&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;/pages/123?one=two&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
se asignará a &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;/page.php?page=123&amp;amp;one=two&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sin la bandera [QSA], esa misma solicitud se asignará a &amp;#039;&amp;#039;&amp;#039;/page.php?page=123&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
es decir, la cadena de consulta existente será descartado.&lt;br /&gt;
&lt;br /&gt;
== Personalizar Errores ==&lt;br /&gt;
* ErrorDocument 400 /directorio/error/404.html &lt;br /&gt;
* ErrorDocument 401 /directorio/error/401.html &lt;br /&gt;
* ErrorDocument 403 /directorio/error/403.html &lt;br /&gt;
* ErrorDocument 404 /directorio/error/404.html&lt;br /&gt;
&lt;br /&gt;
== Proteger carpetas ==&lt;br /&gt;
Este archivo .htaccess lo colocaremos en la carpeta que queremos proteger. Editemos el .htaccess con algo similar a :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
AuthUserFile /ruta/absoluta/hacia/.htpasswd&amp;lt;br&amp;gt;&lt;br /&gt;
AuthName AquiPuedesPonerLoQueQuieras&amp;lt;br&amp;gt;&lt;br /&gt;
AuthType Basic&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
require user test123&lt;br /&gt;
&lt;br /&gt;
== El archivo .htpasswd ==&lt;br /&gt;
Este archivo contiene una lista de nombres de usuario y contraseñas, en formato usuario:contraseña y cada nombre-clave en una línea independiente, por ejemplo :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;test123&amp;#039;&amp;#039;&amp;#039;:12JvVkeJRgm8A&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;otrousuario:&amp;#039;&amp;#039;&amp;#039;$1$UNHEaBiV$NzwYQ8NhjzIOUmFyfGyrO&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Apache,_.htacces&amp;diff=476</id>
		<title>Apache, .htacces</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Apache,_.htacces&amp;diff=476"/>
		<updated>2015-03-05T14:50:47Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot; == ¿Qué es .htacces? == Un fichero .htaccess, también conocido como archivo de configuración distribuida, es un fichero especial, popularizado por el Servidor HTTP Apache...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== ¿Qué es .htacces? ==&lt;br /&gt;
Un fichero .htaccess, también conocido como archivo de configuración distribuida, es un fichero especial, popularizado por el Servidor HTTP Apache que permite definir diferentes directivas de configuración para cada directorio sin necesidad de editar el archivo de configuración principal de Apache.&lt;br /&gt;
&lt;br /&gt;
== ¿Para que sirve? ==&lt;br /&gt;
Con este archivo podremos configurar nuestro servidor web para:&lt;br /&gt;
#Hacerlo algo más seguro.&lt;br /&gt;
#Realizar redirecciones.&lt;br /&gt;
#Crear mensajes de error personalizados.&lt;br /&gt;
#Restringir el acceso a carpetas. &lt;br /&gt;
#Evitar el listado de directorios de nuestro servidor. &lt;br /&gt;
#Permitir el uso de nuestro dominio sin usar las famosas &amp;#039;www&amp;#039;.&lt;br /&gt;
#Entre otras.&lt;br /&gt;
&lt;br /&gt;
== Options -Multiviews ==&lt;br /&gt;
Las Options (Opciones de directiva) controla qué características del servidor están disponibles en un directorio en particular.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Por defecto todas las opciones vienen habilitadas, excepto para Multiviews&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Al deshabilitar la opción Multiviews en el archivo .htaccess, hace que apague la negociación de contenido para buscar variantes dentro de los directorios.&lt;br /&gt;
&lt;br /&gt;
== RewriteEngine On ==&lt;br /&gt;
El módulo &amp;#039;&amp;#039;&amp;#039;mod_rewrite&amp;#039;&amp;#039;&amp;#039;  utiliza un motor de reescritura compuesta por reglas, basado en un analizador de expresiones regulares PCRE (compatibles con Perl), para reescribir las URL solicitada. De forma predeterminada, &amp;#039;&amp;#039;&amp;#039;mod_rewrite&amp;#039;&amp;#039;&amp;#039; asigna una dirección URL a una trayectoria del sistema de ficheros. Sin embargo, también se puede utilizar para redirigir un URL a otro URL.&lt;br /&gt;
&lt;br /&gt;
== RewriteBase ==&lt;br /&gt;
Establece la base de la URL para reescrituras por directorio.&lt;br /&gt;
&lt;br /&gt;
== RewriteRule ^admin.* - [L] ==&lt;br /&gt;
Significa que todo directorio que comience(^) con admin seguido de cualquier archivo o otro directorio, no se sobreescriba.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
La [L] es una configuración especial del RewriteRule llamada bandera (flag).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A continuación se explicará un poco mas sobre las banderas [L] y [QSA].&lt;br /&gt;
&lt;br /&gt;
=== [L] ===&lt;br /&gt;
La bandera [L] provoca en mod_rewrite que deje de procesar el conjunto de reglas siguientes. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
En la mayoría de los contextos, esto significa que si la regla coincide, se procesara sin importar si existen más reglas. Esto corresponde con el last comando en Perl, o break comando en C. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Utilizar esta opción para indicar que la norma actual se debe aplicar de inmediato sin tener en cuenta otras normas.&lt;br /&gt;
&lt;br /&gt;
=== [QSA] ===&lt;br /&gt;
Con la bandera [QSA], una solicitud de&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;/pages/123?one=two&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
se asignará a &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;/page.php?page=123&amp;amp;one=two&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Sin la bandera [QSA], esa misma solicitud se asignará a &amp;#039;&amp;#039;&amp;#039;/page.php?page=123&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
es decir, la cadena de consulta existente será descartado.&lt;br /&gt;
&lt;br /&gt;
== Personalizar Errores ==&lt;br /&gt;
##ErrorDocument 400 /directorio/error/404.html &lt;br /&gt;
##ErrorDocument 401 /directorio/error/401.html &lt;br /&gt;
##ErrorDocument 403 /directorio/error/403.html &lt;br /&gt;
##ErrorDocument 404 /directorio/error/404.html&lt;br /&gt;
&lt;br /&gt;
== Proteger carpetas ==&lt;br /&gt;
Este archivo .htaccess lo colocaremos en la carpeta que queremos proteger. Editemos el .htaccess con algo similar a :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
AuthUserFile /ruta/absoluta/hacia/.htpasswd&amp;lt;br&amp;gt;&lt;br /&gt;
AuthName AquiPuedesPonerLoQueQuieras&amp;lt;br&amp;gt;&lt;br /&gt;
AuthType Basic&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
require user test123&lt;br /&gt;
&lt;br /&gt;
== El archivo .htpasswd ==&lt;br /&gt;
Este archivo contiene una lista de nombres de usuario y contraseñas, en formato usuario:contraseña y cada nombre-clave en una línea independiente, por ejemplo :&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;test123&amp;#039;&amp;#039;&amp;#039;:12JvVkeJRgm8A&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;otrousuario:&amp;#039;&amp;#039;&amp;#039;$1$UNHEaBiV$NzwYQ8NhjzIOUmFyfGyrO&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Main_Page&amp;diff=475</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Main_Page&amp;diff=475"/>
		<updated>2015-03-05T14:34:55Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Apache */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-size: 15px; color: gray;&amp;quot;&amp;gt;Este es el wiki de [http://www.flat.cl/ Flat Estrategia Digital (Flat)]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web==&lt;br /&gt;
&lt;br /&gt;
===Apache===&lt;br /&gt;
# [[Habilitar .htaccess]]&lt;br /&gt;
# [[Apache, restringir acceso]]&lt;br /&gt;
# [[Apache, .htacces]]&lt;br /&gt;
&lt;br /&gt;
===Javascript===&lt;br /&gt;
# [[Javascript, Variables en URL como Anchors]]&lt;br /&gt;
# [[Crear librería de JavaScript]]&lt;br /&gt;
&lt;br /&gt;
===PHP===&lt;br /&gt;
# [[Enviar mail con archivos adjuntos PHP |Enviar mail con archivos adjuntos PHP]]&lt;br /&gt;
# [[Subir archivo a servidor |Subir archivo(s) al servidor con PHP]]&lt;br /&gt;
# [[Ámbito de clases PHP |Ámbito de clases en PHP]]&lt;br /&gt;
&lt;br /&gt;
===Compass y Sass===&lt;br /&gt;
# [[Compass y Sass, Instalación]]&lt;br /&gt;
# [[Compass y Sass, Configuración y uso]]&lt;br /&gt;
# [[Compilar archivos Sass al grabar en Netbeans]]&lt;br /&gt;
&lt;br /&gt;
==Mediawiki==&lt;br /&gt;
# [[MediaWiki, elementos colapsables]]&lt;br /&gt;
# [[Manejar Permisos Wikimedia]]&lt;br /&gt;
# [[Extension Wiki SyntaxHighlight]]&lt;br /&gt;
&lt;br /&gt;
==MySQL==&lt;br /&gt;
# [[Generar diccionario de datos con MySQL Workbench]]&lt;br /&gt;
# [[Crear enlace ODBC para conectar Excel con MySQL]]&lt;br /&gt;
# [[Importar archivo.sql por Terminal]]&lt;br /&gt;
# [[Usuarios Mysql]]&lt;br /&gt;
# [[Errores MySql]]&lt;br /&gt;
# [[MySQL, iniciar, detener o reiniciar]]&lt;br /&gt;
&lt;br /&gt;
==OS==&lt;br /&gt;
&lt;br /&gt;
===*nix (Sistemas tipo Unix)===&lt;br /&gt;
# [[*nix, crear alias de comandos]]&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
# [[Crear claves publicas y privadas para conectarse por SSH al servidor]]&lt;br /&gt;
# [[Linux, Búsquedas de archivos y texto]]&lt;br /&gt;
# [[Linux, Cambiar directorio home por defecto]]&lt;br /&gt;
# [[Linux, hacer que el botón de power (on/off) apague el computador solo si no hay nadie loggeado (Ubuntu 14.04)]]&lt;br /&gt;
# [[Linux, Borrar o renombrar archivos con caracteres &amp;quot;raros&amp;quot; en su nombre]]&lt;br /&gt;
# [[Linux, Tips y Trucos]]&lt;br /&gt;
# [[Iniciar con Grub Ubuntu]]&lt;br /&gt;
# [[Instalar lftp]]&lt;br /&gt;
# [[Instalar Firewall Firestarter en Ubuntu 14.04]]&lt;br /&gt;
# [[Instalción y uso de ImageMagick]]&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
# [[Mac OS X, Como incluir directorios en PATH]]&lt;br /&gt;
# [[Instalar mcrypt]]&lt;br /&gt;
# [[Instalción y uso de ImageMagick]]&lt;br /&gt;
&lt;br /&gt;
==Git==&lt;br /&gt;
# [[Git, lo Básico]]&lt;br /&gt;
# [[Git, Tagging]]&lt;br /&gt;
# [[Git, Branching]]&lt;br /&gt;
# [[Git, Stashing]]&lt;br /&gt;
# [[Git, Rebase]]&lt;br /&gt;
&lt;br /&gt;
==Trabajo IT==&lt;br /&gt;
===Metodologías===&lt;br /&gt;
# [[Metodologías para encontrar errores]]&lt;br /&gt;
# [[Metodologías para encontrar soluciones]]&lt;br /&gt;
# [[Metodología de trabajo por encargo]]&lt;br /&gt;
# [[Como hacer un diagrama de flujo]]&lt;br /&gt;
# [[Métodos de programación]]&lt;br /&gt;
# [[Método Científico]]&lt;br /&gt;
# [[Multitasking versus Monotasking]]&lt;br /&gt;
&lt;br /&gt;
===Estándares===&lt;br /&gt;
# [[Estándares de Desarrollo]]&lt;br /&gt;
# [[Ejemplo de HTML5 válido]]&lt;br /&gt;
# [[Cómo documentar un Proyecto en PHP con NetBeans]]&lt;br /&gt;
# [[Cómo Generar Documentación en JavaScript]]&lt;br /&gt;
# [[Code Design Patterns (Patrones de Diseño de Código)]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=%C3%81mbito_de_clases_PHP&amp;diff=443</id>
		<title>Ámbito de clases PHP</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=%C3%81mbito_de_clases_PHP&amp;diff=443"/>
		<updated>2014-12-05T19:41:50Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Tipo Public */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tipo Public ==&lt;br /&gt;
Los miembros de clases declarados como public pueden ser accedidos desde cualquier lado.Si se declaran usando var, serán definidas como public.&lt;br /&gt;
&lt;br /&gt;
== Tipo Private ==&lt;br /&gt;
&lt;br /&gt;
Aquellos miembros definidos como private, únicamentede pueden ser accedidos desde la clase que los definió.&lt;br /&gt;
&lt;br /&gt;
== Tipo Protected ==&lt;br /&gt;
Los miembros declarados como protected, sólo desde la misma clase, desde las clases que hereden de ella y desde las clases parent.&lt;br /&gt;
&lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * Definición de MyClass&lt;br /&gt;
 */&lt;br /&gt;
class MyClass&lt;br /&gt;
{&lt;br /&gt;
    public $public = &amp;#039;Public&amp;#039;;&lt;br /&gt;
    protected $protected = &amp;#039;Protected&amp;#039;;&lt;br /&gt;
    private $private = &amp;#039;Private&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    function printHello()&lt;br /&gt;
    {&lt;br /&gt;
        echo $this-&amp;gt;public;&lt;br /&gt;
        echo $this-&amp;gt;protected;&lt;br /&gt;
        echo $this-&amp;gt;private;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$obj = new MyClass();&lt;br /&gt;
echo $obj-&amp;gt;public;    // Funciona bien&lt;br /&gt;
echo $obj-&amp;gt;protected; // Error Fatal&lt;br /&gt;
echo $obj-&amp;gt;private;   // Error Fatal&lt;br /&gt;
$obj-&amp;gt;printHello();   // Muestra Public, Protected y Private&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Definición de MyClass2&lt;br /&gt;
 */&lt;br /&gt;
class MyClass2 extends MyClass&lt;br /&gt;
{&lt;br /&gt;
    // Se puede redeclarar los métodos public y protected, pero no el private&lt;br /&gt;
    protected $protected = &amp;#039;Protected2&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    function printHello()&lt;br /&gt;
    {&lt;br /&gt;
        echo $this-&amp;gt;public;&lt;br /&gt;
        echo $this-&amp;gt;protected;&lt;br /&gt;
        echo $this-&amp;gt;private;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$obj2 = new MyClass2();&lt;br /&gt;
echo $obj2-&amp;gt;public;    // Funciona bien&lt;br /&gt;
echo $obj2-&amp;gt;protected; // Error Fatal&lt;br /&gt;
echo $obj2-&amp;gt;private;   // Undefined&lt;br /&gt;
$obj2-&amp;gt;printHello();   // Muestra Public, Protected2, Undefined&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=%C3%81mbito_de_clases_PHP&amp;diff=442</id>
		<title>Ámbito de clases PHP</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=%C3%81mbito_de_clases_PHP&amp;diff=442"/>
		<updated>2014-12-05T19:41:34Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tipo Public ==&lt;br /&gt;
Los miembros de clases declarados como public pueden ser accedidos desde cualquier lado.Si se declaran usando var, serán definidas como public.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tipo Private ==&lt;br /&gt;
&lt;br /&gt;
Aquellos miembros definidos como private, únicamentede pueden ser accedidos desde la clase que los definió.&lt;br /&gt;
&lt;br /&gt;
== Tipo Protected ==&lt;br /&gt;
Los miembros declarados como protected, sólo desde la misma clase, desde las clases que hereden de ella y desde las clases parent.&lt;br /&gt;
&lt;br /&gt;
== Ejemplo ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * Definición de MyClass&lt;br /&gt;
 */&lt;br /&gt;
class MyClass&lt;br /&gt;
{&lt;br /&gt;
    public $public = &amp;#039;Public&amp;#039;;&lt;br /&gt;
    protected $protected = &amp;#039;Protected&amp;#039;;&lt;br /&gt;
    private $private = &amp;#039;Private&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    function printHello()&lt;br /&gt;
    {&lt;br /&gt;
        echo $this-&amp;gt;public;&lt;br /&gt;
        echo $this-&amp;gt;protected;&lt;br /&gt;
        echo $this-&amp;gt;private;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$obj = new MyClass();&lt;br /&gt;
echo $obj-&amp;gt;public;    // Funciona bien&lt;br /&gt;
echo $obj-&amp;gt;protected; // Error Fatal&lt;br /&gt;
echo $obj-&amp;gt;private;   // Error Fatal&lt;br /&gt;
$obj-&amp;gt;printHello();   // Muestra Public, Protected y Private&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Definición de MyClass2&lt;br /&gt;
 */&lt;br /&gt;
class MyClass2 extends MyClass&lt;br /&gt;
{&lt;br /&gt;
    // Se puede redeclarar los métodos public y protected, pero no el private&lt;br /&gt;
    protected $protected = &amp;#039;Protected2&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    function printHello()&lt;br /&gt;
    {&lt;br /&gt;
        echo $this-&amp;gt;public;&lt;br /&gt;
        echo $this-&amp;gt;protected;&lt;br /&gt;
        echo $this-&amp;gt;private;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$obj2 = new MyClass2();&lt;br /&gt;
echo $obj2-&amp;gt;public;    // Funciona bien&lt;br /&gt;
echo $obj2-&amp;gt;protected; // Error Fatal&lt;br /&gt;
echo $obj2-&amp;gt;private;   // Undefined&lt;br /&gt;
$obj2-&amp;gt;printHello();   // Muestra Public, Protected2, Undefined&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=%C3%81mbito_de_clases_PHP&amp;diff=441</id>
		<title>Ámbito de clases PHP</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=%C3%81mbito_de_clases_PHP&amp;diff=441"/>
		<updated>2014-12-05T19:39:24Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Tipo Public&amp;#039;&amp;#039;&amp;#039; Los miembros de clases declarados como public pueden ser accedidos desde cualquier lado.Si se declaran usando var, serán definidas como public.  &amp;#039;&amp;#039;&amp;#039;Tipo Pri...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Tipo Public&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Los miembros de clases declarados como public pueden ser accedidos desde cualquier lado.Si se declaran usando var, serán definidas como public.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Tipo Private&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Aquellos miembros definidos como private, únicamentede pueden ser accedidos desde la clase que los definió.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Tipo Protected&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Los miembros declarados como protected, sólo desde la misma clase, desde las clases que hereden de ella y desde las clases parent.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejemplo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/**&lt;br /&gt;
 * Definición de MyClass&lt;br /&gt;
 */&lt;br /&gt;
class MyClass&lt;br /&gt;
{&lt;br /&gt;
    public $public = &amp;#039;Public&amp;#039;;&lt;br /&gt;
    protected $protected = &amp;#039;Protected&amp;#039;;&lt;br /&gt;
    private $private = &amp;#039;Private&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    function printHello()&lt;br /&gt;
    {&lt;br /&gt;
        echo $this-&amp;gt;public;&lt;br /&gt;
        echo $this-&amp;gt;protected;&lt;br /&gt;
        echo $this-&amp;gt;private;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$obj = new MyClass();&lt;br /&gt;
echo $obj-&amp;gt;public;    // Funciona bien&lt;br /&gt;
echo $obj-&amp;gt;protected; // Error Fatal&lt;br /&gt;
echo $obj-&amp;gt;private;   // Error Fatal&lt;br /&gt;
$obj-&amp;gt;printHello();   // Muestra Public, Protected y Private&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Definición de MyClass2&lt;br /&gt;
 */&lt;br /&gt;
class MyClass2 extends MyClass&lt;br /&gt;
{&lt;br /&gt;
    // Se puede redeclarar los métodos public y protected, pero no el private&lt;br /&gt;
    protected $protected = &amp;#039;Protected2&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
    function printHello()&lt;br /&gt;
    {&lt;br /&gt;
        echo $this-&amp;gt;public;&lt;br /&gt;
        echo $this-&amp;gt;protected;&lt;br /&gt;
        echo $this-&amp;gt;private;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$obj2 = new MyClass2();&lt;br /&gt;
echo $obj2-&amp;gt;public;    // Funciona bien&lt;br /&gt;
echo $obj2-&amp;gt;protected; // Error Fatal&lt;br /&gt;
echo $obj2-&amp;gt;private;   // Undefined&lt;br /&gt;
$obj2-&amp;gt;printHello();   // Muestra Public, Protected2, Undefined&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Main_Page&amp;diff=440</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Main_Page&amp;diff=440"/>
		<updated>2014-12-05T19:34:51Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* PHP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-size: 15px; color: gray;&amp;quot;&amp;gt;Este es el wiki de [http://www.flat.cl/ Flat Estrategia Digital (Flat)]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web==&lt;br /&gt;
&lt;br /&gt;
===Apache===&lt;br /&gt;
# [[Habilitar .htaccess]]&lt;br /&gt;
# [[Apache, restringir acceso]]&lt;br /&gt;
&lt;br /&gt;
===Javascript===&lt;br /&gt;
# [[Javascript, Variables en URL como Anchors]]&lt;br /&gt;
# [[Crear librería de JavaScript]]&lt;br /&gt;
&lt;br /&gt;
===PHP===&lt;br /&gt;
# [[Enviar mail con archivos adjuntos PHP |Enviar mail con archivos adjuntos PHP]]&lt;br /&gt;
# [[Subir archivo a servidor |Subir archivo(s) al servidor con PHP]]&lt;br /&gt;
# [[Ámbito de clases PHP |Ámbito de clases en PHP]]&lt;br /&gt;
&lt;br /&gt;
===Compass y Sass===&lt;br /&gt;
# [[Compass y Sass, Instalación]]&lt;br /&gt;
# [[Compass y Sass, Configuración y uso]]&lt;br /&gt;
# [[Compilar archivos Sass al grabar en Netbeans]]&lt;br /&gt;
&lt;br /&gt;
==Mediawiki==&lt;br /&gt;
# [[MediaWiki, elementos colapsables]]&lt;br /&gt;
# [[Manejar Permisos Wikimedia]]&lt;br /&gt;
# [[Extension Wiki SyntaxHighlight]]&lt;br /&gt;
&lt;br /&gt;
==MySQL==&lt;br /&gt;
# [[Generar diccionario de datos con MySQL Workbench]]&lt;br /&gt;
# [[Crear enlace ODBC para conectar Excel con MySQL]]&lt;br /&gt;
# [[Importar archivo.sql por Terminal]]&lt;br /&gt;
# [[Usuarios Mysql]]&lt;br /&gt;
# [[Errores MySql]]&lt;br /&gt;
&lt;br /&gt;
==OS==&lt;br /&gt;
&lt;br /&gt;
===*nix (Sistemas tipo Unix)===&lt;br /&gt;
# [[*nix, crear alias de comandos]]&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
# [[Crear claves publicas y privadas para conectarse por SSH al servidor]]&lt;br /&gt;
# [[Linux, Búsquedas de archivos y texto]]&lt;br /&gt;
# [[Linux, Cambiar directorio home por defecto]]&lt;br /&gt;
# [[Linux, hacer que el botón de power (on/off) apague el computador solo si no hay nadie loggeado (Ubuntu 14.04)]]&lt;br /&gt;
# [[Linux, Borrar o renombrar archivos con caracteres &amp;quot;raros&amp;quot; en su nombre]]&lt;br /&gt;
# [[Linux, Tips y Trucos]]&lt;br /&gt;
# [[Iniciar con Grub Ubuntu]]&lt;br /&gt;
# [[Instalar lftp]]&lt;br /&gt;
# [[Instalar Firewall Firestarter en Ubuntu 14.04]]&lt;br /&gt;
# [[Instalción y uso de ImageMagick]]&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
# [[Mac OS X, Como incluir directorios en PATH]]&lt;br /&gt;
# [[Instalar mcrypt]]&lt;br /&gt;
# [[Instalción y uso de ImageMagick]]&lt;br /&gt;
&lt;br /&gt;
==Git==&lt;br /&gt;
# [[Git, lo Básico]]&lt;br /&gt;
# [[Git, Tagging]]&lt;br /&gt;
# [[Git, Branching]]&lt;br /&gt;
# [[Git, Stashing]]&lt;br /&gt;
# [[Git, Rebase]]&lt;br /&gt;
&lt;br /&gt;
==Trabajo IT==&lt;br /&gt;
===Metodologías===&lt;br /&gt;
# [[Metodologías para encontrar errores]]&lt;br /&gt;
# [[Metodologías para encontrar soluciones]]&lt;br /&gt;
# [[Metodología de trabajo por encargo]]&lt;br /&gt;
# [[Como hacer un diagrama de flujo]]&lt;br /&gt;
# [[Métodos de programación]]&lt;br /&gt;
# [[Método Científico]]&lt;br /&gt;
&lt;br /&gt;
===Estándares===&lt;br /&gt;
# [[Estándares de Desarrollo]]&lt;br /&gt;
# [[Ejemplo de HTML5 válido]]&lt;br /&gt;
# [[Como documentar un Proyecto en PHP con NetBeans]]&lt;br /&gt;
# [[Cómo documentar JavaScript]]&lt;br /&gt;
# [[Code Design Patterns (Patrones de Diseño de Código)]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Main_Page&amp;diff=439</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Main_Page&amp;diff=439"/>
		<updated>2014-12-05T19:34:11Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* PHP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-size: 15px; color: gray;&amp;quot;&amp;gt;Este es el wiki de [http://www.flat.cl/ Flat Estrategia Digital (Flat)]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Web==&lt;br /&gt;
&lt;br /&gt;
===Apache===&lt;br /&gt;
# [[Habilitar .htaccess]]&lt;br /&gt;
# [[Apache, restringir acceso]]&lt;br /&gt;
&lt;br /&gt;
===Javascript===&lt;br /&gt;
# [[Javascript, Variables en URL como Anchors]]&lt;br /&gt;
# [[Crear librería de JavaScript]]&lt;br /&gt;
&lt;br /&gt;
===PHP===&lt;br /&gt;
# [[Enviar mail con archivos adjuntos PHP |Enviar mail con archivos adjuntos PHP]]&lt;br /&gt;
# [[Subir archivo a servidor |Subir archivo(s) al servidor con PHP]]&lt;br /&gt;
# [[Clases en PHP |Clases en PHP]]&lt;br /&gt;
&lt;br /&gt;
===Compass y Sass===&lt;br /&gt;
# [[Compass y Sass, Instalación]]&lt;br /&gt;
# [[Compass y Sass, Configuración y uso]]&lt;br /&gt;
# [[Compilar archivos Sass al grabar en Netbeans]]&lt;br /&gt;
&lt;br /&gt;
==Mediawiki==&lt;br /&gt;
# [[MediaWiki, elementos colapsables]]&lt;br /&gt;
# [[Manejar Permisos Wikimedia]]&lt;br /&gt;
# [[Extension Wiki SyntaxHighlight]]&lt;br /&gt;
&lt;br /&gt;
==MySQL==&lt;br /&gt;
# [[Generar diccionario de datos con MySQL Workbench]]&lt;br /&gt;
# [[Crear enlace ODBC para conectar Excel con MySQL]]&lt;br /&gt;
# [[Importar archivo.sql por Terminal]]&lt;br /&gt;
# [[Usuarios Mysql]]&lt;br /&gt;
# [[Errores MySql]]&lt;br /&gt;
&lt;br /&gt;
==OS==&lt;br /&gt;
&lt;br /&gt;
===*nix (Sistemas tipo Unix)===&lt;br /&gt;
# [[*nix, crear alias de comandos]]&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
# [[Crear claves publicas y privadas para conectarse por SSH al servidor]]&lt;br /&gt;
# [[Linux, Búsquedas de archivos y texto]]&lt;br /&gt;
# [[Linux, Cambiar directorio home por defecto]]&lt;br /&gt;
# [[Linux, hacer que el botón de power (on/off) apague el computador solo si no hay nadie loggeado (Ubuntu 14.04)]]&lt;br /&gt;
# [[Linux, Borrar o renombrar archivos con caracteres &amp;quot;raros&amp;quot; en su nombre]]&lt;br /&gt;
# [[Linux, Tips y Trucos]]&lt;br /&gt;
# [[Iniciar con Grub Ubuntu]]&lt;br /&gt;
# [[Instalar lftp]]&lt;br /&gt;
# [[Instalar Firewall Firestarter en Ubuntu 14.04]]&lt;br /&gt;
# [[Instalción y uso de ImageMagick]]&lt;br /&gt;
&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
# [[Mac OS X, Como incluir directorios en PATH]]&lt;br /&gt;
# [[Instalar mcrypt]]&lt;br /&gt;
# [[Instalción y uso de ImageMagick]]&lt;br /&gt;
&lt;br /&gt;
==Git==&lt;br /&gt;
# [[Git, lo Básico]]&lt;br /&gt;
# [[Git, Tagging]]&lt;br /&gt;
# [[Git, Branching]]&lt;br /&gt;
# [[Git, Stashing]]&lt;br /&gt;
# [[Git, Rebase]]&lt;br /&gt;
&lt;br /&gt;
==Trabajo IT==&lt;br /&gt;
===Metodologías===&lt;br /&gt;
# [[Metodologías para encontrar errores]]&lt;br /&gt;
# [[Metodologías para encontrar soluciones]]&lt;br /&gt;
# [[Metodología de trabajo por encargo]]&lt;br /&gt;
# [[Como hacer un diagrama de flujo]]&lt;br /&gt;
# [[Métodos de programación]]&lt;br /&gt;
# [[Método Científico]]&lt;br /&gt;
&lt;br /&gt;
===Estándares===&lt;br /&gt;
# [[Estándares de Desarrollo]]&lt;br /&gt;
# [[Ejemplo de HTML5 válido]]&lt;br /&gt;
# [[Como documentar un Proyecto en PHP con NetBeans]]&lt;br /&gt;
# [[Cómo documentar JavaScript]]&lt;br /&gt;
# [[Code Design Patterns (Patrones de Diseño de Código)]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=420</id>
		<title>Git, lo Básico</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=420"/>
		<updated>2014-11-11T15:57:09Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Comandos de Ayuda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contexto==&lt;br /&gt;
&lt;br /&gt;
===Los Estados de los archivos===&lt;br /&gt;
Los archivos adentro de una carpeta que usa Git pueden estar &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; o no, esto significa que están asociados al control de versión o no. Los archivos &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; pueden estar en uno de tres estados:&lt;br /&gt;
&lt;br /&gt;
;&amp;#039;&amp;#039;Commited&amp;#039;&amp;#039; (&amp;quot;Comprometido&amp;quot;)&lt;br /&gt;
:El archivos ya quedó guardado en la base de datos local.&lt;br /&gt;
;Modified (Modificado)&lt;br /&gt;
:El archivo se ha modificado pero no se ha &amp;#039;&amp;#039;commited&amp;#039;&amp;#039; (&amp;#039;&amp;#039;comprometido&amp;#039;&amp;#039;) aún.&lt;br /&gt;
;&amp;#039;&amp;#039;Staged&amp;#039;&amp;#039; (&amp;quot;En Escenario&amp;quot;)&lt;br /&gt;
:Se ha marcado el archivo para agregarlo al próximo commit.&lt;br /&gt;
&lt;br /&gt;
===Un flujo común de Git===&lt;br /&gt;
# Se obtiene el proyecto desde un directorio de git&lt;br /&gt;
# Se modifican archivos&lt;br /&gt;
# Se preparan para el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, se hacen &amp;#039;&amp;#039;staged&amp;#039;&amp;#039;&lt;br /&gt;
# Se hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[File:18333fig0106-tn.png|300px|thumb|none|Flujo común de Git]]&lt;br /&gt;
&lt;br /&gt;
==Instalar Git==&lt;br /&gt;
===Obtener Git===&lt;br /&gt;
Git se puede instalar desde diferentes fuentes, [http://git-scm.com/downloads esta] es la oficial. Desde ahí se pueden descargar los comandos y clientes gráficos.&lt;br /&gt;
&lt;br /&gt;
Además hay más programas en Internet que se pueden usar para trabajar con Git. Por ejemplo NetBeans lo soporta.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039;: Es posible que Git ya esté instalado en el sistema. Si se reinstala podría causar algún conflicto. Revisar si está instalado, si la función instalada es suficiente no hacer nada, sino buscar la forma de instalar la versión deseada.&lt;br /&gt;
&lt;br /&gt;
===Configuración===&lt;br /&gt;
Antes de empezar a usar Git se configuran algunas variables para el uso de un usuario. Estas variables se usan para guardar en los repositorios información de quien hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y configurar cosas como el editor a usar. Quedan almacenadas en uno de tres directorios, ordenados por relevancia siendo más relevante el último:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/gitconfig&amp;lt;/code&amp;gt; contiene configuración para todos los usuarios del sistema en todos los repositorios&lt;br /&gt;
* &amp;lt;code&amp;gt;~/.gitconfig&amp;lt;/code&amp;gt; contiene configuración para el usuario actual&lt;br /&gt;
* &amp;lt;code&amp;gt;.git/config&amp;lt;/code&amp;gt; contiene configuración para el repositorio en el que se está trabajando actualmente&lt;br /&gt;
&lt;br /&gt;
A continuación algunas configuraciones básicas pero existen más configuraciones no documentadas aquí:&lt;br /&gt;
&lt;br /&gt;
====Configuración Personal====&lt;br /&gt;
Esta información se usa a la hora de hacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;John Flat&amp;quot;	     # Setea el nombre del usuario&lt;br /&gt;
git config --global user.email john.flat@empresa.com # Setea el mail del usuario&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuración Ambiente de Trabajo====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.editor emacs  # Setea el editor por defecto&lt;br /&gt;
git config --global merge.tool vimdiff # Setea el visualizador de diferencias&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Revisar configuraciones====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --list    # Lista todas las configuraciones, pueden repetirse si se repiten en varios archivos de configuración&lt;br /&gt;
git config {key}     # Muestra el valor de una variable en específico&lt;br /&gt;
git config user.name # Muestra el valor del nombre de usuario guardado en la configuración&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configurar autocompletación en Terminal====&lt;br /&gt;
&lt;br /&gt;
Necesario para SO Macintosh (Ubuntu viene por defecto).&lt;br /&gt;
&lt;br /&gt;
1. Agregar el archivo &amp;#039;&amp;#039;&amp;#039;git-completion.bash&amp;#039;&amp;#039;&amp;#039; al home.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Descargar:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Opción 1 (github.com): https://github.com/git/git/blob/master/contrib/completion/git-completion.bash &amp;lt;br&amp;gt;&lt;br /&gt;
Opción 2 (Wiki): [[Media:Git-completion.bash.zip | Git-completion.bash version 2.0 ]]&lt;br /&gt;
&lt;br /&gt;
2. Modificar el archivo &amp;#039;&amp;#039;&amp;#039;.profile&amp;#039;&amp;#039;&amp;#039; por terminal.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vim ~/.profile &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Persionamos la letra &amp;#039;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;#039; y agregamos &amp;#039;&amp;#039;&amp;#039;source ~/git-completion.bash&amp;#039;&amp;#039;&amp;#039; al principio del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
source ~/git-completion.bash&lt;br /&gt;
&lt;br /&gt;
# MacPorts Installer addition on 2014-03-26_at_11:37:57: adding an appropriate PATH variable for use with MacPorts.&lt;br /&gt;
export PATH=/opt/local/bin:/opt/local/sbin:$PATH&lt;br /&gt;
# Finished adapting your PATH environment variable for use with MacPorts.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Por último presionamos la tecla &amp;#039;&amp;#039;&amp;#039;esc&amp;#039;&amp;#039;&amp;#039;, a continuación &amp;#039;&amp;#039;&amp;#039;:&amp;#039;&amp;#039;&amp;#039; y &amp;#039;&amp;#039;&amp;#039;wq&amp;#039;&amp;#039;&amp;#039; para guardar el archivo.&lt;br /&gt;
&lt;br /&gt;
===Instalar en un servidor===&lt;br /&gt;
Instalar en un servidor es sencillo conceptualmente. Hay que permitir acceso a un directorio con un proyecto Git. El directorio es igual al que hay en un proyecto localmente. También hay que definir para cada usuario si puede hacer &amp;#039;&amp;#039;pull&amp;#039;&amp;#039; y &amp;#039;&amp;#039;push&amp;#039;&amp;#039;. Para esto, una forma sencilla de hacerlo es usando acceso SSH (aunque existen otra formas, ver &amp;#039;&amp;#039;[http://gitolite.com/3-server-usage/git-server.html setting up your own git server]&amp;#039;&amp;#039;), de esta forma también se le puede dar permiso al usuario de lectura y escritura.&lt;br /&gt;
&lt;br /&gt;
Para crear el repositorio hay que ingresar al servidor remoto y ejecutar algunos comandos. Lo siguiente es un ejemplo, la ubicación y el nombre del proyecto pueden cambiar. Por convención se usa el nombre de la carpeta del proyecto con &amp;#039;&amp;#039;.git&amp;#039;&amp;#039;. El comando &amp;lt;code&amp;gt;--bare&amp;lt;/code&amp;gt;, al inicializar el proyecto, indica que se crea sin la estructura de directorio de trabajo, este directorio queda con archivos como los que quedan adentro de la carpeta .git de un repositorio de trabajo local.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git	  # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
mkdir project.git # Se crea una carpeta donde va a quedar el repositorio&lt;br /&gt;
cd project.git    # Se ingresa a la carpeta del proyecto&lt;br /&gt;
git --bare init   # Se inicializa el proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Lo mismo del código anterior se puede lograr así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git		     # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
git --bare init project.git  # Se crea el directorio del proyecto y se inicializa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para obtener el repositorio el usuario puede hacer:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone usuario@servidor.com:/directorio/donde/esta/el/proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se desea hacer usuarios que solo puedan interactuar con Git en este servidor, es buena idea dejar que solo usen un &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; desarrollado para este propósito. Esto significa que no pueden moverse a través de los directorios, crear archivos, ver archivos y más. Para esto, hay que editar el archivo &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; (en Ubuntu por ejemplo), en el usuario que solo va a usar Git, pasar de esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/bin/sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/usr/bin/git-shell&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para más información de cómo interactuar con el servidor remoto, ver [[Git, Branching]], la sección de &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Instalar gitk ==&lt;br /&gt;
&lt;br /&gt;
=== mac OS X 10.10 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo port install git k&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comandos de Ayuda==&lt;br /&gt;
Tres formas de obtener ayuda sobre un &amp;lt;verb&amp;gt; (verbo), es decir una acción de Git:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help &amp;lt;verb&amp;gt;&lt;br /&gt;
git &amp;lt;verb&amp;gt; --help&lt;br /&gt;
man git-&amp;lt;verb&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de ayuda&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help config&lt;br /&gt;
git config --help&lt;br /&gt;
man git-config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Crear Repositorios==&lt;br /&gt;
Formas de hacer que un proyecto tenga manejo de versiones usando Git. Todas las formas incluyen un directorio .git que guarda la información de versiones.&lt;br /&gt;
&lt;br /&gt;
===Empezar un proyecto con Git===&lt;br /&gt;
Se crea un directorio nuevo, se navega hacia él y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir nuevoProyecto # Crear nuevo directorio&lt;br /&gt;
cd nuevoProyecto    # Navegar a directorio&lt;br /&gt;
git init	    # Inicializar Git&lt;br /&gt;
touch x		    # Crea un archivo &amp;quot;x&amp;quot; vacío&lt;br /&gt;
git add x	    # Se pasa &amp;quot;x&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, solo un archivo en blanco&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar Git a un proyecto existente===&lt;br /&gt;
Se navega al directorio donde está el proyecto exitente y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd proyectoExistente	 # Se navega al proyecto existente&lt;br /&gt;
git init		 # Inicializar Git&lt;br /&gt;
git add archivoExistente # Se pasa &amp;quot;archivoExistente&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, se agrega archivo existente&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener un proyecto desde una fuente existente===&lt;br /&gt;
Se obtiene una copia del repositorio y se guarda en una carpeta con el nombre del repositorio.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone [url]				    # Forma genérica&lt;br /&gt;
git clone /path/to/repository		    # Obtener copia localmente&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ignorar archivos==&lt;br /&gt;
&lt;br /&gt;
===.gitignore===&lt;br /&gt;
Git puede ignorar algunos archivos, esto se hace manualmente editando (creando) el archivo &amp;#039;&amp;#039;.gitignore&amp;#039;&amp;#039;. A continuación un ejemplo de este archivo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Esto es un comentario que empieza con &amp;#039;#&amp;#039;&lt;br /&gt;
# Omitir todos los archivos que terminan con .log&lt;br /&gt;
*.log&lt;br /&gt;
# Pero track super.log usando la negación&lt;br /&gt;
!super.log&lt;br /&gt;
# Ignorar la carpeta LOG, si existe una carpeta LOG adentro de otra carpeta no se va a ignorar&lt;br /&gt;
/LOG&lt;br /&gt;
# Ignorar todos los archivos en la carpeta error&lt;br /&gt;
error/&lt;br /&gt;
# Ignorar los archivos .txt adentro de la carpeta media&lt;br /&gt;
media/*.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Asumir que algún archivo no ha cambiado===&lt;br /&gt;
El siguiente comando hace que Git no tome en cuenta los cambios del archivo en cuestión.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para deshacer esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --no-assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Local==&lt;br /&gt;
&lt;br /&gt;
===Proceso de guardado de archivos (commit)===&lt;br /&gt;
Para hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; hay que hacer los siguientes pasos:&lt;br /&gt;
# Agregar (o modificar) archivos (por ejemplo usando un editor de texto)&lt;br /&gt;
# Avisarle a git que tiene que llevar a cabo los cambios, por ejemplo agregando un archivo (&amp;lt;code&amp;gt;git add archivoNuevo&amp;lt;/code&amp;gt;)&lt;br /&gt;
# Hacer el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, git commit -m &amp;lt;nowiki&amp;gt;&amp;#039;texto del commit&amp;#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede hacer el commit así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo # Se agrega el archivo a Git&lt;br /&gt;
git commit           # Se realiza el commit&lt;br /&gt;
# No se le entrega mensaje, con lo que se abre el editor de texto configurado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
O&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo               # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo             # Se agrega el archivo a Git&lt;br /&gt;
git commit -m &amp;#039;texto del commit&amp;#039; # Se realiza el commit&lt;br /&gt;
# Se escribe el mensaje directamente y no se abre un editor de texto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siempre es necesario incluir un mensaje en el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; ya que esto permite revisar el historial de lo que se haya hecho antes. De esta forma se puede tener una imagen bastante clara de la evolución del proyecto.&lt;br /&gt;
&lt;br /&gt;
===Hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; viendo las diferencias en los archivos===&lt;br /&gt;
Lo siguiente muestra el editor de texto para agregar un mensaje, en los comentarios muestra los archivos modificados (comportamiento por defecto) y adicionalmente muestra las diferencias en los archivos (&amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Track nuevos archivos===&lt;br /&gt;
Se dice que un archivo está siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; cuando Git lo toma en cuenta. Para esto se ejecuta lo siguiente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se crea nuevo archivo vacío&lt;br /&gt;
git add archivoNuevo # Se hace que Git lo agregue&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar archivos al staging area===&lt;br /&gt;
Los archivos modificados no pasan directamente al siguiente &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, hay que pasarlos al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; antes. El comando es el mismo que para agregar archivos nuevos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo nuevaLinea &amp;gt;&amp;gt; archivoYaEnGit # Se le agrega la línea nuevaLinea a un archivo que ya estaba en Git&lt;br /&gt;
git add archivoYaEnGit		  # Se pasa archivo al staging area&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mover (o renombrar) Archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git mv archivoViejoNombre archivoNuevoNombre # También se puede mover adentro de un directorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv archivoViejoNombre archivoNuevoNombre # Se mueve el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoViejoNombre		 # Se borra de Git el del nombre viejo&lt;br /&gt;
git add archivoNuevoNombre		 # Se agrega el del nombre nuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm archivoABorrar&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm archivoABorrar     # Borra el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoABorrar # Le avisa a Git que el archivo va a ser eliminado en el próximo commit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos en el staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm --cached archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar archivos del staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de archivo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -- archivoAResetear&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios en el directorio de trabajo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard   # Deshace cambios del staging area y del directorio de trabajo&lt;br /&gt;
git clean -f -d    # Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039;&lt;br /&gt;
git clean -f -x -d # CUIDADO! Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039; PERO ADEMÁS quita archivos ignorados (.gitignore)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/questions/1090309/git-undo-all-working-dir-changes-including-new-files stackoverflow]&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;===&lt;br /&gt;
Suponiendo que el Git se encuentra en el siguiente estado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
    ↑&lt;br /&gt;
  master&lt;br /&gt;
&lt;br /&gt;
A, B y C son commits. F es el estado del directorio de trabajo. C es el último commit.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Se pueden hacer algunos comandos para deshacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; definitivamente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 (F)&lt;br /&gt;
A-B&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; manteniendo el index (&amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --soft HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/a/6866485 stackoverflow]&lt;br /&gt;
&lt;br /&gt;
Nota: Para resucitar un commit muerto ver la nota en la fuente.&lt;br /&gt;
&lt;br /&gt;
===Hacer cambios al útlimo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; con &amp;#039;&amp;#039;--amend&amp;#039;&amp;#039;===&lt;br /&gt;
Si hay algún archivo que debería haber hecho parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; anterior, se puede agregar con &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;. Un ejemplo de cómo funciona esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m &amp;#039;primer commit&amp;#039; # Commit inicial&lt;br /&gt;
touch nuevoArchivo	      # Se agrega nuevo archivo al directorio&lt;br /&gt;
git add nuevoArchivo          # Se le avisa a Git que hay un nuevo archivo que trackear&lt;br /&gt;
git commit --amend            # Se actualiza el último commit, debería abrir el editor de texto por defecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estado de Archivos===&lt;br /&gt;
&lt;br /&gt;
Para saber el estado de los archivos existen dos comandos posibles: &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====git status====&lt;br /&gt;
Muestra información del estado de los archivos que han cambiado. Puede mostrar archivos &amp;#039;&amp;#039;untracked&amp;#039;&amp;#039;, &amp;#039;&amp;#039;staged&amp;#039;&amp;#039; y &amp;#039;&amp;#039;modified&amp;#039;&amp;#039;. No muestra información de archivos que no han cambiado desde el último &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo sin cambios&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
nothing to commit (working directory clean)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo de diferentes estados&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
En el siguiente ejemplo, &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; ya están siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; y ya hicieron parte del commit anterior; ambos fueron modificados. &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; no se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; por lo que no va a hacer parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;. &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; y se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;archivoC&amp;#039;&amp;#039; es un archivo nuevo que se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoD&amp;#039;&amp;#039; es un archivo nuevo no &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; por Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
# Changes to be committed:&lt;br /&gt;
#   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoB&lt;br /&gt;
#	new file:   archivoC&lt;br /&gt;
#&lt;br /&gt;
# Changes not staged for commit:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
#   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoA&lt;br /&gt;
#&lt;br /&gt;
# Untracked files:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
#&lt;br /&gt;
#	archivoD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====git diff====&lt;br /&gt;
&amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; se usa para ver las diferencias que han tenido los archivos y no solo saber si han cambiado o no. &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; por si sólo muestra las diferencias en archivos que no están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;. Para mostrar los cambios en los archivos que están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; hay que usar el commando con la opción &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;git diff --staged&amp;lt;/code&amp;gt; (para versiones anteriores a 1.6.1 cambiar &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039; por &amp;#039;&amp;#039;--cached&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git diff: ejemplo&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; se agregaron dos líneas con el mismo contenido, el nombre del archivo. En &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó una línea con el nombre del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
diff --git a/archivoA b/archivoA&lt;br /&gt;
index 7898192..c065858 100644&lt;br /&gt;
--- a/archivoA&lt;br /&gt;
+++ b/archivoA&lt;br /&gt;
@@ -1 +1,2 @@&lt;br /&gt;
-a&lt;br /&gt;
+archivoA&lt;br /&gt;
+archivoA&lt;br /&gt;
diff --git a/archivoB b/archivoB&lt;br /&gt;
index 6178079..df239cf 100644&lt;br /&gt;
--- a/archivoB&lt;br /&gt;
+++ b/archivoB&lt;br /&gt;
@@ -1 +1 @@&lt;br /&gt;
-b&lt;br /&gt;
+archivoB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Historial===&lt;br /&gt;
Para ver el historial se usa el comando &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt;. Se puede usar con varios parámetros para obtener un output más preciso. Para obtener más información ver [http://git-scm.com/book/en/Git-Basics-Viewing-the-Commit-History este link] o usar &amp;lt;code&amp;gt;git help log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Algunos parámetros:&lt;br /&gt;
&lt;br /&gt;
;-(n)&lt;br /&gt;
:(n) es la cantidad de &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; a mostrar (ej: &amp;lt;code&amp;gt;git log -3&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--since, --after&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente a partir de cierta fecha (ej: &amp;lt;code&amp;gt;git log --since=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--until, --before&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente desde cierta fecha (ej: &amp;lt;code&amp;gt;git log --until=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--author&lt;br /&gt;
:Se le proporciona a Git el autor para la búsqueda&lt;br /&gt;
;--stat&lt;br /&gt;
:Se muestran los archivos modificados.&lt;br /&gt;
&lt;br /&gt;
==Git Remoto==&lt;br /&gt;
Para poder colaborar en un proyecto, se necesitan servidores remotos, &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
===Crear nuevo proyecto a partir de un remote===&lt;br /&gt;
El siguiente comando crea una carpeta con el proyecto obtenido desde una fuente externa, crea la carpeta .git y obtiene los archivos del proyecto.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar remote===&lt;br /&gt;
El siguiente comando agrega un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto Git actual, esto solo asocia un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto pero no obtiene los archivos. nombreReferencia es un nombre arbitratio que se le da al remote para referenciarlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add nombreReferencia username@host:/path/to/nombreRepositorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener archivos de remote===&lt;br /&gt;
El siguiente comando obtiene los archivos desde un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; ya agregado &amp;#039;&amp;#039;&amp;#039;pero&amp;#039;&amp;#039;&amp;#039; no los deja en el directorio de trabajo, quedan &amp;quot;escondidos&amp;quot; en la base de datos de Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git fetch nombreReferencia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mezclar lo obtenido en el directorio actual===&lt;br /&gt;
Este comando mezcla la rama de nombreReferencia al directorio actual ([http://stackoverflow.com/questions/3419658/understanding-git-fetch-then-merge más info en stackoverflow]).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git merge nombreReferencia/rama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener y Mezclar (merge) archivos de remote===&lt;br /&gt;
Se obtienen los archivos y luego se mezclan con lo que hay en el directorio de trabajo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git pull nombreReferencia HEAD # Si no especifico HEAD me pide una versión&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subir cambios a remote===&lt;br /&gt;
Se suben los cambios al &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; origin en la branch (rama) master.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push origin master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Listar remotes===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin&lt;br /&gt;
ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos con URLs&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin	/gitExample2/../gitExample (fetch)&lt;br /&gt;
origin	/gitExample2/../gitExample (push)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (fetch)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (push)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener información de un remote===&lt;br /&gt;
Con este comando se obtiene la información del &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; y de las &amp;#039;&amp;#039;branches&amp;#039;&amp;#039; (ramas) que se están &amp;#039;&amp;#039;tracking&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote show ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Renombre remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rename nombreViejo nombreNuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rm remoteName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Otras páginas utiles adentro del Wiki==&lt;br /&gt;
* [[Git, Branching]], &amp;#039;&amp;#039;branching&amp;#039;&amp;#039; es una forma de llevar el desarrollo por diferentes caminos sin que se pisen entre ellos.&lt;br /&gt;
* [[Git, Tagging]], el &amp;#039;&amp;#039;tagging&amp;#039;&amp;#039; sirve para referenciar diferentes &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; en el tiempo.&lt;br /&gt;
* [[Git, Stashing]], el &amp;#039;&amp;#039;stashing&amp;#039;&amp;#039; sirve para limpiar las modificaciones actuales en el espacio de trabajo y guardarlas temporalmente fuera de vista. Se pueden recuperar luego.&lt;br /&gt;
&lt;br /&gt;
==Links útiles==&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Auto-Completion Hacer que Git autocomplete]&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Git-Aliases Hacer alias para comandos]&lt;br /&gt;
&lt;br /&gt;
==Más información==&lt;br /&gt;
* [https://na1.salesforce.com/help/pdfs/en/salesforce_git_developer_cheatsheet.pdf Git Cheat Sheet]&lt;br /&gt;
* [http://ndpsoftware.com/git-cheatsheet.html Git Cheatsheet • NDP Software]&lt;br /&gt;
* [http://git-scm.com/book/en/ Libro Oficial]&lt;br /&gt;
* [http://rogerdudler.github.io/git-guide/ git - the simple guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Compass_y_Sass,_Instalaci%C3%B3n&amp;diff=419</id>
		<title>Compass y Sass, Instalación</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Compass_y_Sass,_Instalaci%C3%B3n&amp;diff=419"/>
		<updated>2014-11-06T20:35:18Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* OS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Ubuntu==&lt;br /&gt;
Instalar Ruby:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line&amp;gt;&lt;br /&gt;
sudo apt-get install ruby-full rubygems1.8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Instalar SASS:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=2&amp;gt;&lt;br /&gt;
sudo gem install sass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Instalar Compass:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=2&amp;gt;&lt;br /&gt;
sudo gem install compass&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==OS X==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo gem update --system&lt;br /&gt;
sudo gem install compass&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Probado en:&lt;br /&gt;
* Mavericks 10.9.4&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Instalar_mcrypt&amp;diff=418</id>
		<title>Instalar mcrypt</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Instalar_mcrypt&amp;diff=418"/>
		<updated>2014-10-29T21:02:24Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Instalar mcrypt por MacPorts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: red;&amp;quot;&amp;gt;Nota&amp;lt;/span&amp;gt;: Se puede instalar usando &amp;#039;&amp;#039;macports&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Este tutorial esta pensado para instalar &amp;#039;&amp;#039;mcrypt&amp;#039;&amp;#039; en OS X.&lt;br /&gt;
== Instalar Xcode ==&lt;br /&gt;
&lt;br /&gt;
Ir a [[Instalar Xcode]]&lt;br /&gt;
&lt;br /&gt;
=== Configurar Xcode ===&lt;br /&gt;
&lt;br /&gt;
# Abrir la Aplicación de Xcode.&lt;br /&gt;
# Ir a preferencias.&lt;br /&gt;
# En al pestaña &amp;#039;&amp;#039;&amp;#039;Downloads&amp;#039;&amp;#039;&amp;#039; instalar &amp;#039;&amp;#039;&amp;#039;command line tools&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Requisitos para instalar mcryprt Manualmente ==&lt;br /&gt;
&lt;br /&gt;
# Descargar libmcrypt: http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download&lt;br /&gt;
# Descargar php.&lt;br /&gt;
## Para ver que version se encuentra instalada.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;#039;bash&amp;#039; line start=&amp;#039;1&amp;#039;&amp;gt;&lt;br /&gt;
php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Crear carpetas para las descargas ==&lt;br /&gt;
&lt;br /&gt;
Crear e ingresar a carpeta mcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd ~ ; mkdir mcrypt ; cd mcrypt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Descomprimir php y libmcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
tar -zxvf archivo.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configurar libmcrypt ==&lt;br /&gt;
&lt;br /&gt;
Ingresar a libmcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd libmcrypt-2.5.8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
configurar libmcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Instalar Autoconf ==&lt;br /&gt;
&lt;br /&gt;
Autoconf por defecto no viene instalado.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/mcrypt&lt;br /&gt;
curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz&lt;br /&gt;
tar xvfz autoconf-latest.tar.gz&lt;br /&gt;
cd autoconf-2.69/&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Compilar mcrypt php Extension ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd ../php-5.3.13/ext/mcrypt/&lt;br /&gt;
/usr/bin/phpize&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Resultado correcto:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Configuring for: &amp;lt;br&amp;gt;&lt;br /&gt;
PHP Api Version: 20090626 &amp;lt;br&amp;gt;&lt;br /&gt;
Zend Module Api No: 20090626 &amp;lt;br&amp;gt;&lt;br /&gt;
Zend Extension Api No: 220090626 &amp;lt;br&amp;gt;&lt;br /&gt;
configure.in:3: warning: prefer named diversions &amp;lt;br&amp;gt;&lt;br /&gt;
configure.in:3: warning: prefer named diversions &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Resultado correcto:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20090626/&lt;br /&gt;
&lt;br /&gt;
== Instalar mcrypt por MacPorts ==&lt;br /&gt;
&lt;br /&gt;
# Descargar MacPorts para la version de Mac OS X que se tenga instalada, desde el siguiente link: https://www.macports.org/install.php&lt;br /&gt;
# Reiniciar el Terminal.&lt;br /&gt;
# Copiar el nombre del paquete del mcrypt de la version de php que se necesite, desde el siguiente link: https://www.macports.org/ports.php&lt;br /&gt;
# Desde el terminal, instalar mcrypt con el siguiente comando:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo port install nombre-de-mcrypt-php&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Habilitar mcrypt.so en php Extension ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp /etc/php.ini.default /etc/php.ini&lt;br /&gt;
sudo chmod u+w  /etc/php.ini&lt;br /&gt;
sudo nano /etc/php.ini&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Agregar la siguiente línea al final del archivo&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
extension=mcrypt.so&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reiniciar Apache ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo apachectl restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referencia ==&lt;br /&gt;
&lt;br /&gt;
# http://coolestguidesontheplanet.com/how-to-install-mcrypt-for-php-on-mac-osx-lion-10-7-development-server/&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Instalar_mcrypt&amp;diff=417</id>
		<title>Instalar mcrypt</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Instalar_mcrypt&amp;diff=417"/>
		<updated>2014-10-29T21:01:12Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Instalar mcrypt por MacPorts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: red;&amp;quot;&amp;gt;Nota&amp;lt;/span&amp;gt;: Se puede instalar usando &amp;#039;&amp;#039;macports&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Este tutorial esta pensado para instalar &amp;#039;&amp;#039;mcrypt&amp;#039;&amp;#039; en OS X.&lt;br /&gt;
== Instalar Xcode ==&lt;br /&gt;
&lt;br /&gt;
Ir a [[Instalar Xcode]]&lt;br /&gt;
&lt;br /&gt;
=== Configurar Xcode ===&lt;br /&gt;
&lt;br /&gt;
# Abrir la Aplicación de Xcode.&lt;br /&gt;
# Ir a preferencias.&lt;br /&gt;
# En al pestaña &amp;#039;&amp;#039;&amp;#039;Downloads&amp;#039;&amp;#039;&amp;#039; instalar &amp;#039;&amp;#039;&amp;#039;command line tools&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Requisitos para instalar mcryprt Manualmente ==&lt;br /&gt;
&lt;br /&gt;
# Descargar libmcrypt: http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download&lt;br /&gt;
# Descargar php.&lt;br /&gt;
## Para ver que version se encuentra instalada.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;#039;bash&amp;#039; line start=&amp;#039;1&amp;#039;&amp;gt;&lt;br /&gt;
php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Crear carpetas para las descargas ==&lt;br /&gt;
&lt;br /&gt;
Crear e ingresar a carpeta mcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd ~ ; mkdir mcrypt ; cd mcrypt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Descomprimir php y libmcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
tar -zxvf archivo.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configurar libmcrypt ==&lt;br /&gt;
&lt;br /&gt;
Ingresar a libmcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd libmcrypt-2.5.8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
configurar libmcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Instalar Autoconf ==&lt;br /&gt;
&lt;br /&gt;
Autoconf por defecto no viene instalado.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/mcrypt&lt;br /&gt;
curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz&lt;br /&gt;
tar xvfz autoconf-latest.tar.gz&lt;br /&gt;
cd autoconf-2.69/&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Compilar mcrypt php Extension ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd ../php-5.3.13/ext/mcrypt/&lt;br /&gt;
/usr/bin/phpize&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Resultado correcto:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Configuring for: &amp;lt;br&amp;gt;&lt;br /&gt;
PHP Api Version: 20090626 &amp;lt;br&amp;gt;&lt;br /&gt;
Zend Module Api No: 20090626 &amp;lt;br&amp;gt;&lt;br /&gt;
Zend Extension Api No: 220090626 &amp;lt;br&amp;gt;&lt;br /&gt;
configure.in:3: warning: prefer named diversions &amp;lt;br&amp;gt;&lt;br /&gt;
configure.in:3: warning: prefer named diversions &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Resultado correcto:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20090626/&lt;br /&gt;
&lt;br /&gt;
== Instalar mcrypt por MacPorts ==&lt;br /&gt;
&lt;br /&gt;
# Descargar MacPorts para la version de Mac OS X que se tenga instalada, desde el siguiente link: https://www.macports.org/install.php&lt;br /&gt;
# Reiniciar el Terminal.&lt;br /&gt;
# Copiar el nombre del paquete del mcrypt de la version de php que se necesite, desde el siguiente link: https://www.macports.org/ports.php&lt;br /&gt;
# Desde el terminal, instalar mcrypt con el siguiente comando:&lt;br /&gt;
&amp;lt;syntaxlight lang=&amp;#039;bash&amp;#039;&amp;gt;&lt;br /&gt;
sudo port install nombre-de-mcrypt-php&lt;br /&gt;
&amp;lt;/syntaxlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Habilitar mcrypt.so en php Extension ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp /etc/php.ini.default /etc/php.ini&lt;br /&gt;
sudo chmod u+w  /etc/php.ini&lt;br /&gt;
sudo nano /etc/php.ini&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Agregar la siguiente línea al final del archivo&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
extension=mcrypt.so&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reiniciar Apache ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo apachectl restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referencia ==&lt;br /&gt;
&lt;br /&gt;
# http://coolestguidesontheplanet.com/how-to-install-mcrypt-for-php-on-mac-osx-lion-10-7-development-server/&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Instalar_mcrypt&amp;diff=416</id>
		<title>Instalar mcrypt</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Instalar_mcrypt&amp;diff=416"/>
		<updated>2014-10-29T20:55:41Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Compilar mcrypt php Extension */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: red;&amp;quot;&amp;gt;Nota&amp;lt;/span&amp;gt;: Se puede instalar usando &amp;#039;&amp;#039;macports&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Este tutorial esta pensado para instalar &amp;#039;&amp;#039;mcrypt&amp;#039;&amp;#039; en OS X.&lt;br /&gt;
== Instalar Xcode ==&lt;br /&gt;
&lt;br /&gt;
Ir a [[Instalar Xcode]]&lt;br /&gt;
&lt;br /&gt;
=== Configurar Xcode ===&lt;br /&gt;
&lt;br /&gt;
# Abrir la Aplicación de Xcode.&lt;br /&gt;
# Ir a preferencias.&lt;br /&gt;
# En al pestaña &amp;#039;&amp;#039;&amp;#039;Downloads&amp;#039;&amp;#039;&amp;#039; instalar &amp;#039;&amp;#039;&amp;#039;command line tools&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Requisitos para instalar mcryprt Manualmente ==&lt;br /&gt;
&lt;br /&gt;
# Descargar libmcrypt: http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download&lt;br /&gt;
# Descargar php.&lt;br /&gt;
## Para ver que version se encuentra instalada.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;#039;bash&amp;#039; line start=&amp;#039;1&amp;#039;&amp;gt;&lt;br /&gt;
php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Crear carpetas para las descargas ==&lt;br /&gt;
&lt;br /&gt;
Crear e ingresar a carpeta mcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd ~ ; mkdir mcrypt ; cd mcrypt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Descomprimir php y libmcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
tar -zxvf archivo.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configurar libmcrypt ==&lt;br /&gt;
&lt;br /&gt;
Ingresar a libmcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd libmcrypt-2.5.8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
configurar libmcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Instalar Autoconf ==&lt;br /&gt;
&lt;br /&gt;
Autoconf por defecto no viene instalado.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/mcrypt&lt;br /&gt;
curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz&lt;br /&gt;
tar xvfz autoconf-latest.tar.gz&lt;br /&gt;
cd autoconf-2.69/&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Compilar mcrypt php Extension ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd ../php-5.3.13/ext/mcrypt/&lt;br /&gt;
/usr/bin/phpize&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Resultado correcto:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Configuring for: &amp;lt;br&amp;gt;&lt;br /&gt;
PHP Api Version: 20090626 &amp;lt;br&amp;gt;&lt;br /&gt;
Zend Module Api No: 20090626 &amp;lt;br&amp;gt;&lt;br /&gt;
Zend Extension Api No: 220090626 &amp;lt;br&amp;gt;&lt;br /&gt;
configure.in:3: warning: prefer named diversions &amp;lt;br&amp;gt;&lt;br /&gt;
configure.in:3: warning: prefer named diversions &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Resultado correcto:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20090626/&lt;br /&gt;
&lt;br /&gt;
== Instalar mcrypt por MacPorts ==&lt;br /&gt;
&lt;br /&gt;
== Habilitar mcrypt.so en php Extension ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp /etc/php.ini.default /etc/php.ini&lt;br /&gt;
sudo chmod u+w  /etc/php.ini&lt;br /&gt;
sudo nano /etc/php.ini&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Agregar la siguiente línea al final del archivo&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
extension=mcrypt.so&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reiniciar Apache ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo apachectl restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referencia ==&lt;br /&gt;
&lt;br /&gt;
# http://coolestguidesontheplanet.com/how-to-install-mcrypt-for-php-on-mac-osx-lion-10-7-development-server/&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Instalar_mcrypt&amp;diff=415</id>
		<title>Instalar mcrypt</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Instalar_mcrypt&amp;diff=415"/>
		<updated>2014-10-29T20:54:54Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Requisitos para instalar mcryprt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: red;&amp;quot;&amp;gt;Nota&amp;lt;/span&amp;gt;: Se puede instalar usando &amp;#039;&amp;#039;macports&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Este tutorial esta pensado para instalar &amp;#039;&amp;#039;mcrypt&amp;#039;&amp;#039; en OS X.&lt;br /&gt;
== Instalar Xcode ==&lt;br /&gt;
&lt;br /&gt;
Ir a [[Instalar Xcode]]&lt;br /&gt;
&lt;br /&gt;
=== Configurar Xcode ===&lt;br /&gt;
&lt;br /&gt;
# Abrir la Aplicación de Xcode.&lt;br /&gt;
# Ir a preferencias.&lt;br /&gt;
# En al pestaña &amp;#039;&amp;#039;&amp;#039;Downloads&amp;#039;&amp;#039;&amp;#039; instalar &amp;#039;&amp;#039;&amp;#039;command line tools&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Requisitos para instalar mcryprt Manualmente ==&lt;br /&gt;
&lt;br /&gt;
# Descargar libmcrypt: http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download&lt;br /&gt;
# Descargar php.&lt;br /&gt;
## Para ver que version se encuentra instalada.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;#039;bash&amp;#039; line start=&amp;#039;1&amp;#039;&amp;gt;&lt;br /&gt;
php -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Crear carpetas para las descargas ==&lt;br /&gt;
&lt;br /&gt;
Crear e ingresar a carpeta mcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd ~ ; mkdir mcrypt ; cd mcrypt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Descomprimir php y libmcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
tar -zxvf archivo.tar.gz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Configurar libmcrypt ==&lt;br /&gt;
&lt;br /&gt;
Ingresar a libmcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd libmcrypt-2.5.8&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
configurar libmcrypt.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Instalar Autoconf ==&lt;br /&gt;
&lt;br /&gt;
Autoconf por defecto no viene instalado.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/mcrypt&lt;br /&gt;
curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz&lt;br /&gt;
tar xvfz autoconf-latest.tar.gz&lt;br /&gt;
cd autoconf-2.69/&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Compilar mcrypt php Extension ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
cd ../php-5.3.13/ext/mcrypt/&lt;br /&gt;
/usr/bin/phpize&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Resultado correcto:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Configuring for: &amp;lt;br&amp;gt;&lt;br /&gt;
PHP Api Version: 20090626 &amp;lt;br&amp;gt;&lt;br /&gt;
Zend Module Api No: 20090626 &amp;lt;br&amp;gt;&lt;br /&gt;
Zend Extension Api No: 220090626 &amp;lt;br&amp;gt;&lt;br /&gt;
configure.in:3: warning: prefer named diversions &amp;lt;br&amp;gt;&lt;br /&gt;
configure.in:3: warning: prefer named diversions &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
make&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Resultado correcto:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Installing shared extensions:     /usr/lib/php/extensions/no-debug-non-zts-20090626/&lt;br /&gt;
&lt;br /&gt;
== Habilitar mcrypt.so en php Extension ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo cp /etc/php.ini.default /etc/php.ini&lt;br /&gt;
sudo chmod u+w  /etc/php.ini&lt;br /&gt;
sudo nano /etc/php.ini&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Agregar la siguiente línea al final del archivo&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
extension=mcrypt.so&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reiniciar Apache ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; line start=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
sudo apachectl restart&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referencia ==&lt;br /&gt;
&lt;br /&gt;
# http://coolestguidesontheplanet.com/how-to-install-mcrypt-for-php-on-mac-osx-lion-10-7-development-server/&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Importar_archivo.sql_por_Terminal&amp;diff=340</id>
		<title>Importar archivo.sql por Terminal</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Importar_archivo.sql_por_Terminal&amp;diff=340"/>
		<updated>2014-06-05T14:34:36Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para importar un archivo.sql por terminal existen 2 formas, una es ingresando a mysql (es recomendable, ya que, muestra log del script.sql importado) y sin ingresar a mysql.&lt;br /&gt;
&lt;br /&gt;
== Ingresando a mysql ==&lt;br /&gt;
1. Ingresar al directorio donde se encuentra el script.sql que se desea importar. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Una vez estando en el directorio, ingresar a mysql:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
3. Mencionar la base de datos a utilizar.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
use nameDatabase;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
4. Agregar el siguiente comando para importar el script.sql&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
source script.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sin ingresar a mysql ==&lt;br /&gt;
1. Ingresar al directorio donde se encuentra el script.sql que se desea importar. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Ingresar el siguiente comando.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p &amp;lt; script.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Importar_archivo.sql_por_Terminal&amp;diff=339</id>
		<title>Importar archivo.sql por Terminal</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Importar_archivo.sql_por_Terminal&amp;diff=339"/>
		<updated>2014-06-05T14:33:03Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Ingresando a mysql */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para importar un archivo.sql por terminal existen 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
== Ingresando a mysql ==&lt;br /&gt;
1. Ingresar al directorio donde se encuentra el script.sql que se desea importar. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Una vez estando en el directorio, ingresar a mysql:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
3. Mencionar la base de datos a utilizar.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
use nameDatabase;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
4. Agregar el siguiente comando para importar el script.sql&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
source script.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sin ingresar a mysql ==&lt;br /&gt;
1. Ingresar al directorio donde se encuentra el script.sql que se desea importar. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Ingresar el siguiente comando.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p &amp;lt; script.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Importar_archivo.sql_por_Terminal&amp;diff=338</id>
		<title>Importar archivo.sql por Terminal</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Importar_archivo.sql_por_Terminal&amp;diff=338"/>
		<updated>2014-06-05T14:30:55Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para importar un archivo.sql por terminal existen 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
== Ingresando a mysql ==&lt;br /&gt;
1. Ingresar al directorio donde se encuentra el archivo.sql que se desea importar. &amp;lt;br&amp;gt;&lt;br /&gt;
2. Una vez estando en el directorio, ingresar a mysql:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mysql -u root -p&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
3. Mencionar la base de datos a utilizar.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
use nameDatabase;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
4. Agregar el siguiente comando para importar el archivo.sql&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;mysql&amp;quot;&amp;gt;&lt;br /&gt;
source archivo.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Main_Page&amp;diff=337</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Main_Page&amp;diff=337"/>
		<updated>2014-06-05T14:25:02Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Tutoriales */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-size: 15px; color: gray;&amp;quot;&amp;gt;Este es el wiki de [http://www.flat.cl/ Flat Estrategia Digital (Flat)]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tutoriales==&lt;br /&gt;
# [[Enviar mail con archivos adjuntos PHP |Enviar mail con archivos adjuntos PHP]]&lt;br /&gt;
# [[Habilitar .htaccess]]&lt;br /&gt;
# [[Metodologías para encontrar errores]]&lt;br /&gt;
# [[Metodologías para encontrar soluciones]]&lt;br /&gt;
# [[Metodología de trabajo por encargo]]&lt;br /&gt;
# [[Iniciar con Grub Ubuntu]]&lt;br /&gt;
# [[Como hacer un diagrama de flujo]]&lt;br /&gt;
# [[Extension Wiki SyntaxHighlight]]&lt;br /&gt;
# [[Usuarios Mysql]]&lt;br /&gt;
# [[Variables en URL como Anchors]]&lt;br /&gt;
# [[Mac OS X, Como incluir directorios en PATH]]&lt;br /&gt;
# [[Instalar lftp]]&lt;br /&gt;
# [[Linux, Borrar o renombrar archivos con caracteres &amp;quot;raros&amp;quot; en su nombre]]&lt;br /&gt;
# [[Crear claves publicas y privadas para conectarse por SSH al servidor]]&lt;br /&gt;
# [[Linux, Tips y Trucos]]&lt;br /&gt;
# [[Errores MySql]]&lt;br /&gt;
# [[Linux, hacer que el botón de power (on/off) apague el computador solo si no hay nadie loggeado]]&lt;br /&gt;
# [[Instalar mcrypt]]&lt;br /&gt;
# [[Generar diccionario de datos con MySQL Workbench]]&lt;br /&gt;
# [[Crear librería de JavaScript]]&lt;br /&gt;
# [[Crear enlace ODBC para conectar Excel con MySQL]]&lt;br /&gt;
# [[Manejar Permisos Wikimedia]]&lt;br /&gt;
# [[Importar archivo.sql por Terminal]]&lt;br /&gt;
&lt;br /&gt;
==Estándares==&lt;br /&gt;
# [[Estándares de Desarrollo]]&lt;br /&gt;
# [[Ejemplo de HTML5 válido]]&lt;br /&gt;
# [[Como documentar un Proyecto en PHP con NetBeans]]&lt;br /&gt;
# [[Cómo documentar JavaScript]]&lt;br /&gt;
# [[Code Design Patterns (Patrones de Diseño de Código)]]&lt;br /&gt;
&lt;br /&gt;
==Git==&lt;br /&gt;
# [[Git, lo Básico]]&lt;br /&gt;
# [[Git, Tagging]]&lt;br /&gt;
# [[Git, Branching]]&lt;br /&gt;
# [[Git, Stashing]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Importar_archivo.sql_por_Terminal&amp;diff=336</id>
		<title>Importar archivo.sql por Terminal</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Importar_archivo.sql_por_Terminal&amp;diff=336"/>
		<updated>2014-06-05T14:24:27Z</updated>

		<summary type="html">&lt;p&gt;Alex: Created page with &amp;quot;Para importar un archivo.sql por terminal existen 2 formas de hacerlo:  == Ingresando a mysql ==  1. Se debe ingresar a mysql:  &amp;lt;syntaxhighlight&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Para importar un archivo.sql por terminal existen 2 formas de hacerlo:&lt;br /&gt;
&lt;br /&gt;
== Ingresando a mysql ==&lt;br /&gt;
&lt;br /&gt;
1. Se debe ingresar a mysql:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=302</id>
		<title>Git, lo Básico</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=302"/>
		<updated>2014-04-25T18:51:32Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Configurar autocompletación en Terminal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contexto==&lt;br /&gt;
&lt;br /&gt;
===Los Estados de los archivos===&lt;br /&gt;
Los archivos adentro de una carpeta que usa Git pueden estar &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; o no, esto significa que están asociados al control de versión o no. Los archivos &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; pueden estar en uno de tres estados:&lt;br /&gt;
&lt;br /&gt;
;&amp;#039;&amp;#039;Commited&amp;#039;&amp;#039; (&amp;quot;Comprometido&amp;quot;)&lt;br /&gt;
:El archivos ya quedó guardado en la base de datos local.&lt;br /&gt;
;Modified (Modificado)&lt;br /&gt;
:El archivo se ha modificado pero no se ha &amp;#039;&amp;#039;commited&amp;#039;&amp;#039; (&amp;#039;&amp;#039;comprometido&amp;#039;&amp;#039;) aún.&lt;br /&gt;
;&amp;#039;&amp;#039;Staged&amp;#039;&amp;#039; (&amp;quot;En Escenario&amp;quot;)&lt;br /&gt;
:Se ha marcado el archivo para agregarlo al próximo commit.&lt;br /&gt;
&lt;br /&gt;
===Un flujo común de Git===&lt;br /&gt;
# Se obtiene el proyecto desde un directorio de git&lt;br /&gt;
# Se modifican archivos&lt;br /&gt;
# Se preparan para el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, se hacen &amp;#039;&amp;#039;staged&amp;#039;&amp;#039;&lt;br /&gt;
# Se hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[File:18333fig0106-tn.png|300px|thumb|none|Flujo común de Git]]&lt;br /&gt;
&lt;br /&gt;
==Instalar Git==&lt;br /&gt;
===Obtener Git===&lt;br /&gt;
Git se puede instalar desde diferentes fuentes, [http://git-scm.com/downloads esta] es la oficial. Desde ahí se pueden descargar los comandos y clientes gráficos.&lt;br /&gt;
&lt;br /&gt;
Además hay más programas en Internet que se pueden usar para trabajar con Git. Por ejemplo NetBeans lo soporta.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039;: Es posible que Git ya esté instalado en el sistema. Si se reinstala podría causar algún conflicto. Revisar si está instalado, si la función instalada es suficiente no hacer nada, sino buscar la forma de instalar la versión deseada.&lt;br /&gt;
&lt;br /&gt;
===Configuración===&lt;br /&gt;
Antes de empezar a usar Git se configuran algunas variables para el uso de un usuario. Estas variables se usan para guardar en los repositorios información de quien hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y configurar cosas como el editor a usar. Quedan almacenadas en uno de tres directorios, ordenados por relevancia siendo más relevante el último:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/gitconfig&amp;lt;/code&amp;gt; contiene configuración para todos los usuarios del sistema en todos los repositorios&lt;br /&gt;
* &amp;lt;code&amp;gt;~/.gitconfig&amp;lt;/code&amp;gt; contiene configuración para el usuario actual&lt;br /&gt;
* &amp;lt;code&amp;gt;.git/config&amp;lt;/code&amp;gt; contiene configuración para el repositorio en el que se está trabajando actualmente&lt;br /&gt;
&lt;br /&gt;
A continuación algunas configuraciones básicas pero existen más configuraciones no documentadas aquí:&lt;br /&gt;
&lt;br /&gt;
====Configuración Personal====&lt;br /&gt;
Esta información se usa a la hora de hacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;John Flat&amp;quot;	     # Setea el nombre del usuario&lt;br /&gt;
git config --global user.email john.flat@empresa.com # Setea el mail del usuario&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuración Ambiente de Trabajo====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.editor emacs  # Setea el editor por defecto&lt;br /&gt;
git config --global merge.tool vimdiff # Setea el visualizador de diferencias&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Revisar configuraciones====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --list    # Lista todas las configuraciones, pueden repetirse si se repiten en varios archivos de configuración&lt;br /&gt;
git config {key}     # Muestra el valor de una variable en específico&lt;br /&gt;
git config user.name # Muestra el valor del nombre de usuario guardado en la configuración&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configurar autocompletación en Terminal====&lt;br /&gt;
&lt;br /&gt;
Necesario para SO Macintosh (Ubuntu viene por defecto).&lt;br /&gt;
&lt;br /&gt;
1. Agregar el archivo &amp;#039;&amp;#039;&amp;#039;git-completion.bash&amp;#039;&amp;#039;&amp;#039; al home.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Descargar:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Opción 1 (github.com): https://github.com/git/git/blob/master/contrib/completion/git-completion.bash &amp;lt;br&amp;gt;&lt;br /&gt;
Opción 2 (Wiki): [[Media:Git-completion.bash.zip | Git-completion.bash version 2.0 ]]&lt;br /&gt;
&lt;br /&gt;
2. Modificar el archivo &amp;#039;&amp;#039;&amp;#039;.profile&amp;#039;&amp;#039;&amp;#039; por terminal.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vim ~/.profile &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Persionamos la letra &amp;#039;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;#039; y agregamos &amp;#039;&amp;#039;&amp;#039;source ~/git-completion.bash&amp;#039;&amp;#039;&amp;#039; al principio del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
source ~/git-completion.bash&lt;br /&gt;
&lt;br /&gt;
# MacPorts Installer addition on 2014-03-26_at_11:37:57: adding an appropriate PATH variable for use with MacPorts.&lt;br /&gt;
export PATH=/opt/local/bin:/opt/local/sbin:$PATH&lt;br /&gt;
# Finished adapting your PATH environment variable for use with MacPorts.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Por último presionamos la tecla &amp;#039;&amp;#039;&amp;#039;esc&amp;#039;&amp;#039;&amp;#039;, a continuación &amp;#039;&amp;#039;&amp;#039;:&amp;#039;&amp;#039;&amp;#039; y &amp;#039;&amp;#039;&amp;#039;wq&amp;#039;&amp;#039;&amp;#039; para guardar el archivo.&lt;br /&gt;
&lt;br /&gt;
===Instalar en un servidor===&lt;br /&gt;
Instalar en un servidor es sencillo conceptualmente. Hay que permitir acceso a un directorio con un proyecto Git. El directorio es igual al que hay en un proyecto localmente. También hay que definir para cada usuario si puede hacer &amp;#039;&amp;#039;pull&amp;#039;&amp;#039; y &amp;#039;&amp;#039;push&amp;#039;&amp;#039;. Para esto, una forma sencilla de hacerlo es usando acceso SSH (aunque existen otra formas, ver &amp;#039;&amp;#039;[http://gitolite.com/3-server-usage/git-server.html setting up your own git server]&amp;#039;&amp;#039;), de esta forma también se le puede dar permiso al usuario de lectura y escritura.&lt;br /&gt;
&lt;br /&gt;
Para crear el repositorio hay que ingresar al servidor remoto y ejecutar algunos comandos. Lo siguiente es un ejemplo, la ubicación y el nombre del proyecto pueden cambiar. Por convención se usa el nombre de la carpeta del proyecto con &amp;#039;&amp;#039;.git&amp;#039;&amp;#039;. El comando &amp;lt;code&amp;gt;--bare&amp;lt;/code&amp;gt;, al inicializar el proyecto, indica que se crea sin la estructura de directorio de trabajo, este directorio queda con archivos como los que quedan adentro de la carpeta .git de un repositorio de trabajo local.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git	  # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
mkdir project.git # Se crea una carpeta donde va a quedar el repositorio&lt;br /&gt;
cd project.git    # Se ingresa a la carpeta del proyecto&lt;br /&gt;
git --bare init   # Se inicializa el proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Lo mismo del código anterior se puede lograr así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git		     # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
git --bare init project.git  # Se crea el directorio del proyecto y se inicializa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para obtener el repositorio el usuario puede hacer:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone usuario@servidor.com:/directorio/donde/esta/el/proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se desea hacer usuarios que solo puedan interactuar con Git en este servidor, es buena idea dejar que solo usen un &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; desarrollado para este propósito. Esto significa que no pueden moverse a través de los directorios, crear archivos, ver archivos y más. Para esto, hay que editar el archivo &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; (en Ubuntu por ejemplo), en el usuario que solo va a usar Git, pasar de esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/bin/sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/usr/bin/git-shell&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para más información de cómo interactuar con el servidor remoto, ver [[Git, Branching]], la sección de &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==Comandos de Ayuda==&lt;br /&gt;
Tres formas de obtener ayuda sobre un &amp;lt;verb&amp;gt; (verbo), es decir una acción de Git:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help &amp;lt;verb&amp;gt;&lt;br /&gt;
git &amp;lt;verb&amp;gt; --help&lt;br /&gt;
man git-&amp;lt;verb&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de ayuda&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help config&lt;br /&gt;
git config --help&lt;br /&gt;
man git-config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Crear Repositorios==&lt;br /&gt;
Formas de hacer que un proyecto tenga manejo de versiones usando Git. Todas las formas incluyen un directorio .git que guarda la información de versiones.&lt;br /&gt;
&lt;br /&gt;
===Empezar un proyecto con Git===&lt;br /&gt;
Se crea un directorio nuevo, se navega hacia él y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir nuevoProyecto # Crear nuevo directorio&lt;br /&gt;
cd nuevoProyecto    # Navegar a directorio&lt;br /&gt;
git init	    # Inicializar Git&lt;br /&gt;
touch x		    # Crea un archivo &amp;quot;x&amp;quot; vacío&lt;br /&gt;
git add x	    # Se pasa &amp;quot;x&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, solo un archivo en blanco&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar Git a un proyecto existente===&lt;br /&gt;
Se navega al directorio donde está el proyecto exitente y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd proyectoExistente	 # Se navega al proyecto existente&lt;br /&gt;
git init		 # Inicializar Git&lt;br /&gt;
git add archivoExistente # Se pasa &amp;quot;archivoExistente&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, se agrega archivo existente&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener un proyecto desde una fuente existente===&lt;br /&gt;
Se obtiene una copia del repositorio y se guarda en una carpeta con el nombre del repositorio.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone [url]				    # Forma genérica&lt;br /&gt;
git clone /path/to/repository		    # Obtener copia localmente&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ignorar archivos==&lt;br /&gt;
&lt;br /&gt;
===.gitignore===&lt;br /&gt;
Git puede ignorar algunos archivos, esto se hace manualmente editando (creando) el archivo &amp;#039;&amp;#039;.gitignore&amp;#039;&amp;#039;. A continuación un ejemplo de este archivo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Esto es un comentario que empieza con &amp;#039;#&amp;#039;&lt;br /&gt;
# Omitir todos los archivos que terminan con .log&lt;br /&gt;
*.log&lt;br /&gt;
# Pero track super.log usando la negación&lt;br /&gt;
!super.log&lt;br /&gt;
# Ignorar la carpeta LOG, si existe una carpeta LOG adentro de otra carpeta no se va a ignorar&lt;br /&gt;
/LOG&lt;br /&gt;
# Ignorar todos los archivos en la carpeta error&lt;br /&gt;
error/&lt;br /&gt;
# Ignorar los archivos .txt adentro de la carpeta media&lt;br /&gt;
media/*.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Asumir que algún archivo no ha cambiado===&lt;br /&gt;
El siguiente comando hace que Git no tome en cuenta los cambios del archivo en cuestión.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para deshacer esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --no-assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Local==&lt;br /&gt;
&lt;br /&gt;
===Proceso de guardado de archivos (commit)===&lt;br /&gt;
Para hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; hay que hacer los siguientes pasos:&lt;br /&gt;
# Agregar (o modificar) archivos (por ejemplo usando un editor de texto)&lt;br /&gt;
# Avisarle a git que tiene que llevar a cabo los cambios, por ejemplo agregando un archivo (&amp;lt;code&amp;gt;git add archivoNuevo&amp;lt;/code&amp;gt;)&lt;br /&gt;
# Hacer el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, git commit -m &amp;lt;nowiki&amp;gt;&amp;#039;texto del commit&amp;#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede hacer el commit así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo # Se agrega el archivo a Git&lt;br /&gt;
git commit           # Se realiza el commit&lt;br /&gt;
# No se le entrega mensaje, con lo que se abre el editor de texto configurado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
O&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo               # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo             # Se agrega el archivo a Git&lt;br /&gt;
git commit -m &amp;#039;texto del commit&amp;#039; # Se realiza el commit&lt;br /&gt;
# Se escribe el mensaje directamente y no se abre un editor de texto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siempre es necesario incluir un mensaje en el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; ya que esto permite revisar el historial de lo que se haya hecho antes. De esta forma se puede tener una imagen bastante clara de la evolución del proyecto.&lt;br /&gt;
&lt;br /&gt;
===Hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; viendo las diferencias en los archivos===&lt;br /&gt;
Lo siguiente muestra el editor de texto para agregar un mensaje, en los comentarios muestra los archivos modificados (comportamiento por defecto) y adicionalmente muestra las diferencias en los archivos (&amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Track nuevos archivos===&lt;br /&gt;
Se dice que un archivo está siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; cuando Git lo toma en cuenta. Para esto se ejecuta lo siguiente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se crea nuevo archivo vacío&lt;br /&gt;
git add archivoNuevo # Se hace que Git lo agregue&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar archivos al staging area===&lt;br /&gt;
Los archivos modificados no pasan directamente al siguiente &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, hay que pasarlos al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; antes. El comando es el mismo que para agregar archivos nuevos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo nuevaLinea &amp;gt;&amp;gt; archivoYaEnGit # Se le agrega la línea nuevaLinea a un archivo que ya estaba en Git&lt;br /&gt;
git add archivoYaEnGit		  # Se pasa archivo al staging area&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mover (o renombrar) Archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git mv archivoViejoNombre archivoNuevoNombre # También se puede mover adentro de un directorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv archivoViejoNombre archivoNuevoNombre # Se mueve el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoViejoNombre		 # Se borra de Git el del nombre viejo&lt;br /&gt;
git add archivoNuevoNombre		 # Se agrega el del nombre nuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm archivoABorrar&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm archivoABorrar     # Borra el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoABorrar # Le avisa a Git que el archivo va a ser eliminado en el próximo commit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos en el staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm --cached archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar archivos del staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de archivo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -- archivoAResetear&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios en el directorio de trabajo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard   # Deshace cambios del staging area y del directorio de trabajo&lt;br /&gt;
git clean -f -d    # Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039;&lt;br /&gt;
git clean -f -x -d # CUIDADO! Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039; PERO ADEMÁS quita archivos ignorados (.gitignore)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/questions/1090309/git-undo-all-working-dir-changes-including-new-files stackoverflow]&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;===&lt;br /&gt;
Suponiendo que el Git se encuentra en el siguiente estado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
    ↑&lt;br /&gt;
  master&lt;br /&gt;
&lt;br /&gt;
A, B y C son commits. F es el estado del directorio de trabajo. C es el último commit.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Se pueden hacer algunos comandos para deshacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; definitivamente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 (F)&lt;br /&gt;
A-B&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; manteniendo el index (&amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --soft HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/a/6866485 stackoverflow]&lt;br /&gt;
&lt;br /&gt;
Nota: Para resucitar un commit muerto ver la nota en la fuente.&lt;br /&gt;
&lt;br /&gt;
===Hacer cambios al útlimo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; con &amp;#039;&amp;#039;--amend&amp;#039;&amp;#039;===&lt;br /&gt;
Si hay algún archivo que debería haber hecho parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; anterior, se puede agregar con &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;. Un ejemplo de cómo funciona esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m &amp;#039;primer commit&amp;#039; # Commit inicial&lt;br /&gt;
touch nuevoArchivo	      # Se agrega nuevo archivo al directorio&lt;br /&gt;
git add nuevoArchivo          # Se le avisa a Git que hay un nuevo archivo que trackear&lt;br /&gt;
git commit --amend            # Se actualiza el último commit, debería abrir el editor de texto por defecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estado de Archivos===&lt;br /&gt;
&lt;br /&gt;
Para saber el estado de los archivos existen dos comandos posibles: &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====git status====&lt;br /&gt;
Muestra información del estado de los archivos que han cambiado. Puede mostrar archivos &amp;#039;&amp;#039;untracked&amp;#039;&amp;#039;, &amp;#039;&amp;#039;staged&amp;#039;&amp;#039; y &amp;#039;&amp;#039;modified&amp;#039;&amp;#039;. No muestra información de archivos que no han cambiado desde el último &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo sin cambios&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
nothing to commit (working directory clean)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo de diferentes estados&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
En el siguiente ejemplo, &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; ya están siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; y ya hicieron parte del commit anterior; ambos fueron modificados. &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; no se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; por lo que no va a hacer parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;. &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; y se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;archivoC&amp;#039;&amp;#039; es un archivo nuevo que se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoD&amp;#039;&amp;#039; es un archivo nuevo no &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; por Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
# Changes to be committed:&lt;br /&gt;
#   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoB&lt;br /&gt;
#	new file:   archivoC&lt;br /&gt;
#&lt;br /&gt;
# Changes not staged for commit:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
#   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoA&lt;br /&gt;
#&lt;br /&gt;
# Untracked files:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
#&lt;br /&gt;
#	archivoD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====git diff====&lt;br /&gt;
&amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; se usa para ver las diferencias que han tenido los archivos y no solo saber si han cambiado o no. &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; por si sólo muestra las diferencias en archivos que no están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;. Para mostrar los cambios en los archivos que están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; hay que usar el commando con la opción &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;git diff --staged&amp;lt;/code&amp;gt; (para versiones anteriores a 1.6.1 cambiar &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039; por &amp;#039;&amp;#039;--cached&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git diff: ejemplo&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; se agregaron dos líneas con el mismo contenido, el nombre del archivo. En &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó una línea con el nombre del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
diff --git a/archivoA b/archivoA&lt;br /&gt;
index 7898192..c065858 100644&lt;br /&gt;
--- a/archivoA&lt;br /&gt;
+++ b/archivoA&lt;br /&gt;
@@ -1 +1,2 @@&lt;br /&gt;
-a&lt;br /&gt;
+archivoA&lt;br /&gt;
+archivoA&lt;br /&gt;
diff --git a/archivoB b/archivoB&lt;br /&gt;
index 6178079..df239cf 100644&lt;br /&gt;
--- a/archivoB&lt;br /&gt;
+++ b/archivoB&lt;br /&gt;
@@ -1 +1 @@&lt;br /&gt;
-b&lt;br /&gt;
+archivoB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Historial===&lt;br /&gt;
Para ver el historial se usa el comando &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt;. Se puede usar con varios parámetros para obtener un output más preciso. Para obtener más información ver [http://git-scm.com/book/en/Git-Basics-Viewing-the-Commit-History este link] o usar &amp;lt;code&amp;gt;git help log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Algunos parámetros:&lt;br /&gt;
&lt;br /&gt;
;-(n)&lt;br /&gt;
:(n) es la cantidad de &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; a mostrar (ej: &amp;lt;code&amp;gt;git log -3&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--since, --after&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente a partir de cierta fecha (ej: &amp;lt;code&amp;gt;git log --since=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--until, --before&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente desde cierta fecha (ej: &amp;lt;code&amp;gt;git log --until=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--author&lt;br /&gt;
:Se le proporciona a Git el autor para la búsqueda&lt;br /&gt;
;--stat&lt;br /&gt;
:Se muestran los archivos modificados.&lt;br /&gt;
&lt;br /&gt;
==Git Remoto==&lt;br /&gt;
Para poder colaborar en un proyecto, se necesitan servidores remotos, &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
===Crear nuevo proyecto a partir de un remote===&lt;br /&gt;
El siguiente comando crea una carpeta con el proyecto obtenido desde una fuente externa, crea la carpeta .git y obtiene los archivos del proyecto.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar remote===&lt;br /&gt;
El siguiente comando agrega un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto Git actual, esto solo asocia un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto pero no obtiene los archivos. nombreReferencia es un nombre arbitratio que se le da al remote para referenciarlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add nombreReferencia username@host:/path/to/nombreRepositorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener archivos de remote===&lt;br /&gt;
El siguiente comando obtiene los archivos desde un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; ya agregado &amp;#039;&amp;#039;&amp;#039;pero&amp;#039;&amp;#039;&amp;#039; no los deja en el directorio de trabajo, quedan &amp;quot;escondidos&amp;quot; en la base de datos de Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git fetch nombreReferencia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mezclar lo obtenido en el directorio actual===&lt;br /&gt;
Este comando mezcla la rama de nombreReferencia al directorio actual ([http://stackoverflow.com/questions/3419658/understanding-git-fetch-then-merge más info en stackoverflow]).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git merge nombreReferencia/rama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener y Mezclar (merge) archivos de remote===&lt;br /&gt;
Se obtienen los archivos y luego se mezclan con lo que hay en el directorio de trabajo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git pull nombreReferencia HEAD # Si no especifico HEAD me pide una versión&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subir cambios a remote===&lt;br /&gt;
Se suben los cambios al &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; origin en la branch (rama) master.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push origin master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Listar remotes===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin&lt;br /&gt;
ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos con URLs&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin	/gitExample2/../gitExample (fetch)&lt;br /&gt;
origin	/gitExample2/../gitExample (push)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (fetch)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (push)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener información de un remote===&lt;br /&gt;
Con este comando se obtiene la información del &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; y de las &amp;#039;&amp;#039;branches&amp;#039;&amp;#039; (ramas) que se están &amp;#039;&amp;#039;tracking&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote show ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Renombre remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rename nombreViejo nombreNuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rm remoteName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Otras páginas utiles adentro del Wiki==&lt;br /&gt;
* [[Git, Branching]], &amp;#039;&amp;#039;branching&amp;#039;&amp;#039; es una forma de llevar el desarrollo por diferentes caminos sin que se pisen entre ellos.&lt;br /&gt;
* [[Git, Tagging]], el &amp;#039;&amp;#039;tagging&amp;#039;&amp;#039; sirve para referenciar diferentes &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; en el tiempo.&lt;br /&gt;
* [[Git, Stashing]], el &amp;#039;&amp;#039;stashing&amp;#039;&amp;#039; sirve para limpiar las modificaciones actuales en el espacio de trabajo y guardarlas temporalmente fuera de vista. Se pueden recuperar luego.&lt;br /&gt;
&lt;br /&gt;
==Links útiles==&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Auto-Completion Hacer que Git autocomplete]&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Git-Aliases Hacer alias para comandos]&lt;br /&gt;
&lt;br /&gt;
==Más información==&lt;br /&gt;
* [https://na1.salesforce.com/help/pdfs/en/salesforce_git_developer_cheatsheet.pdf Git Cheat Sheet]&lt;br /&gt;
* [http://ndpsoftware.com/git-cheatsheet.html Git Cheatsheet • NDP Software]&lt;br /&gt;
* [http://git-scm.com/book/en/ Libro Oficial]&lt;br /&gt;
* [http://rogerdudler.github.io/git-guide/ git - the simple guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=301</id>
		<title>Git, lo Básico</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=301"/>
		<updated>2014-04-25T18:50:38Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Configurar autocompletación en Terminal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contexto==&lt;br /&gt;
&lt;br /&gt;
===Los Estados de los archivos===&lt;br /&gt;
Los archivos adentro de una carpeta que usa Git pueden estar &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; o no, esto significa que están asociados al control de versión o no. Los archivos &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; pueden estar en uno de tres estados:&lt;br /&gt;
&lt;br /&gt;
;&amp;#039;&amp;#039;Commited&amp;#039;&amp;#039; (&amp;quot;Comprometido&amp;quot;)&lt;br /&gt;
:El archivos ya quedó guardado en la base de datos local.&lt;br /&gt;
;Modified (Modificado)&lt;br /&gt;
:El archivo se ha modificado pero no se ha &amp;#039;&amp;#039;commited&amp;#039;&amp;#039; (&amp;#039;&amp;#039;comprometido&amp;#039;&amp;#039;) aún.&lt;br /&gt;
;&amp;#039;&amp;#039;Staged&amp;#039;&amp;#039; (&amp;quot;En Escenario&amp;quot;)&lt;br /&gt;
:Se ha marcado el archivo para agregarlo al próximo commit.&lt;br /&gt;
&lt;br /&gt;
===Un flujo común de Git===&lt;br /&gt;
# Se obtiene el proyecto desde un directorio de git&lt;br /&gt;
# Se modifican archivos&lt;br /&gt;
# Se preparan para el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, se hacen &amp;#039;&amp;#039;staged&amp;#039;&amp;#039;&lt;br /&gt;
# Se hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[File:18333fig0106-tn.png|300px|thumb|none|Flujo común de Git]]&lt;br /&gt;
&lt;br /&gt;
==Instalar Git==&lt;br /&gt;
===Obtener Git===&lt;br /&gt;
Git se puede instalar desde diferentes fuentes, [http://git-scm.com/downloads esta] es la oficial. Desde ahí se pueden descargar los comandos y clientes gráficos.&lt;br /&gt;
&lt;br /&gt;
Además hay más programas en Internet que se pueden usar para trabajar con Git. Por ejemplo NetBeans lo soporta.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039;: Es posible que Git ya esté instalado en el sistema. Si se reinstala podría causar algún conflicto. Revisar si está instalado, si la función instalada es suficiente no hacer nada, sino buscar la forma de instalar la versión deseada.&lt;br /&gt;
&lt;br /&gt;
===Configuración===&lt;br /&gt;
Antes de empezar a usar Git se configuran algunas variables para el uso de un usuario. Estas variables se usan para guardar en los repositorios información de quien hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y configurar cosas como el editor a usar. Quedan almacenadas en uno de tres directorios, ordenados por relevancia siendo más relevante el último:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/gitconfig&amp;lt;/code&amp;gt; contiene configuración para todos los usuarios del sistema en todos los repositorios&lt;br /&gt;
* &amp;lt;code&amp;gt;~/.gitconfig&amp;lt;/code&amp;gt; contiene configuración para el usuario actual&lt;br /&gt;
* &amp;lt;code&amp;gt;.git/config&amp;lt;/code&amp;gt; contiene configuración para el repositorio en el que se está trabajando actualmente&lt;br /&gt;
&lt;br /&gt;
A continuación algunas configuraciones básicas pero existen más configuraciones no documentadas aquí:&lt;br /&gt;
&lt;br /&gt;
====Configuración Personal====&lt;br /&gt;
Esta información se usa a la hora de hacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;John Flat&amp;quot;	     # Setea el nombre del usuario&lt;br /&gt;
git config --global user.email john.flat@empresa.com # Setea el mail del usuario&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuración Ambiente de Trabajo====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.editor emacs  # Setea el editor por defecto&lt;br /&gt;
git config --global merge.tool vimdiff # Setea el visualizador de diferencias&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Revisar configuraciones====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --list    # Lista todas las configuraciones, pueden repetirse si se repiten en varios archivos de configuración&lt;br /&gt;
git config {key}     # Muestra el valor de una variable en específico&lt;br /&gt;
git config user.name # Muestra el valor del nombre de usuario guardado en la configuración&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configurar autocompletación en Terminal====&lt;br /&gt;
&lt;br /&gt;
Necesario para SO Macintosh (Ubuntu viene por defecto).&lt;br /&gt;
&lt;br /&gt;
1. Agregar el archivo &amp;#039;&amp;#039;&amp;#039;git-completion.bash&amp;#039;&amp;#039;&amp;#039; al home.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Descargar:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Opción 1 (github.com): https://github.com/git/git/blob/master/contrib/completion/git-completion.bash &amp;lt;br&amp;gt;&lt;br /&gt;
Opción 2 (Wiki): [[Media:Git-completion.bash.zip | Git-completion.bash version 2.0 ]]&lt;br /&gt;
&lt;br /&gt;
2. Modificar el archivo &amp;#039;&amp;#039;&amp;#039;.profile&amp;#039;&amp;#039;&amp;#039; por terminal.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vim ~/.profile &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Persionamos la letra &amp;#039;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;#039; y agregamos &amp;#039;&amp;#039;&amp;#039;source ~/git-completion.bash&amp;#039;&amp;#039;&amp;#039; al principio del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
source ~/git-completion.bash&lt;br /&gt;
&lt;br /&gt;
# MacPorts Installer addition on 2014-03-26_at_11:37:57: adding an appropriate PATH variable for use with MacPorts.&lt;br /&gt;
export PATH=/opt/local/bin:/opt/local/sbin:$PATH&lt;br /&gt;
# Finished adapting your PATH environment variable for use with MacPorts.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4. Para guardar presionamos la tecla &amp;#039;&amp;#039;&amp;#039;esc&amp;#039;&amp;#039;&amp;#039;, a continuación &amp;#039;&amp;#039;&amp;#039;:&amp;#039;&amp;#039;&amp;#039; y &amp;#039;&amp;#039;&amp;#039;w+q&amp;#039;&amp;#039;&amp;#039; para guardar el archivo.&lt;br /&gt;
&lt;br /&gt;
===Instalar en un servidor===&lt;br /&gt;
Instalar en un servidor es sencillo conceptualmente. Hay que permitir acceso a un directorio con un proyecto Git. El directorio es igual al que hay en un proyecto localmente. También hay que definir para cada usuario si puede hacer &amp;#039;&amp;#039;pull&amp;#039;&amp;#039; y &amp;#039;&amp;#039;push&amp;#039;&amp;#039;. Para esto, una forma sencilla de hacerlo es usando acceso SSH (aunque existen otra formas, ver &amp;#039;&amp;#039;[http://gitolite.com/3-server-usage/git-server.html setting up your own git server]&amp;#039;&amp;#039;), de esta forma también se le puede dar permiso al usuario de lectura y escritura.&lt;br /&gt;
&lt;br /&gt;
Para crear el repositorio hay que ingresar al servidor remoto y ejecutar algunos comandos. Lo siguiente es un ejemplo, la ubicación y el nombre del proyecto pueden cambiar. Por convención se usa el nombre de la carpeta del proyecto con &amp;#039;&amp;#039;.git&amp;#039;&amp;#039;. El comando &amp;lt;code&amp;gt;--bare&amp;lt;/code&amp;gt;, al inicializar el proyecto, indica que se crea sin la estructura de directorio de trabajo, este directorio queda con archivos como los que quedan adentro de la carpeta .git de un repositorio de trabajo local.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git	  # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
mkdir project.git # Se crea una carpeta donde va a quedar el repositorio&lt;br /&gt;
cd project.git    # Se ingresa a la carpeta del proyecto&lt;br /&gt;
git --bare init   # Se inicializa el proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Lo mismo del código anterior se puede lograr así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git		     # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
git --bare init project.git  # Se crea el directorio del proyecto y se inicializa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para obtener el repositorio el usuario puede hacer:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone usuario@servidor.com:/directorio/donde/esta/el/proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se desea hacer usuarios que solo puedan interactuar con Git en este servidor, es buena idea dejar que solo usen un &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; desarrollado para este propósito. Esto significa que no pueden moverse a través de los directorios, crear archivos, ver archivos y más. Para esto, hay que editar el archivo &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; (en Ubuntu por ejemplo), en el usuario que solo va a usar Git, pasar de esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/bin/sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/usr/bin/git-shell&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para más información de cómo interactuar con el servidor remoto, ver [[Git, Branching]], la sección de &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==Comandos de Ayuda==&lt;br /&gt;
Tres formas de obtener ayuda sobre un &amp;lt;verb&amp;gt; (verbo), es decir una acción de Git:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help &amp;lt;verb&amp;gt;&lt;br /&gt;
git &amp;lt;verb&amp;gt; --help&lt;br /&gt;
man git-&amp;lt;verb&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de ayuda&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help config&lt;br /&gt;
git config --help&lt;br /&gt;
man git-config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Crear Repositorios==&lt;br /&gt;
Formas de hacer que un proyecto tenga manejo de versiones usando Git. Todas las formas incluyen un directorio .git que guarda la información de versiones.&lt;br /&gt;
&lt;br /&gt;
===Empezar un proyecto con Git===&lt;br /&gt;
Se crea un directorio nuevo, se navega hacia él y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir nuevoProyecto # Crear nuevo directorio&lt;br /&gt;
cd nuevoProyecto    # Navegar a directorio&lt;br /&gt;
git init	    # Inicializar Git&lt;br /&gt;
touch x		    # Crea un archivo &amp;quot;x&amp;quot; vacío&lt;br /&gt;
git add x	    # Se pasa &amp;quot;x&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, solo un archivo en blanco&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar Git a un proyecto existente===&lt;br /&gt;
Se navega al directorio donde está el proyecto exitente y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd proyectoExistente	 # Se navega al proyecto existente&lt;br /&gt;
git init		 # Inicializar Git&lt;br /&gt;
git add archivoExistente # Se pasa &amp;quot;archivoExistente&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, se agrega archivo existente&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener un proyecto desde una fuente existente===&lt;br /&gt;
Se obtiene una copia del repositorio y se guarda en una carpeta con el nombre del repositorio.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone [url]				    # Forma genérica&lt;br /&gt;
git clone /path/to/repository		    # Obtener copia localmente&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ignorar archivos==&lt;br /&gt;
&lt;br /&gt;
===.gitignore===&lt;br /&gt;
Git puede ignorar algunos archivos, esto se hace manualmente editando (creando) el archivo &amp;#039;&amp;#039;.gitignore&amp;#039;&amp;#039;. A continuación un ejemplo de este archivo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Esto es un comentario que empieza con &amp;#039;#&amp;#039;&lt;br /&gt;
# Omitir todos los archivos que terminan con .log&lt;br /&gt;
*.log&lt;br /&gt;
# Pero track super.log usando la negación&lt;br /&gt;
!super.log&lt;br /&gt;
# Ignorar la carpeta LOG, si existe una carpeta LOG adentro de otra carpeta no se va a ignorar&lt;br /&gt;
/LOG&lt;br /&gt;
# Ignorar todos los archivos en la carpeta error&lt;br /&gt;
error/&lt;br /&gt;
# Ignorar los archivos .txt adentro de la carpeta media&lt;br /&gt;
media/*.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Asumir que algún archivo no ha cambiado===&lt;br /&gt;
El siguiente comando hace que Git no tome en cuenta los cambios del archivo en cuestión.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para deshacer esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --no-assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Local==&lt;br /&gt;
&lt;br /&gt;
===Proceso de guardado de archivos (commit)===&lt;br /&gt;
Para hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; hay que hacer los siguientes pasos:&lt;br /&gt;
# Agregar (o modificar) archivos (por ejemplo usando un editor de texto)&lt;br /&gt;
# Avisarle a git que tiene que llevar a cabo los cambios, por ejemplo agregando un archivo (&amp;lt;code&amp;gt;git add archivoNuevo&amp;lt;/code&amp;gt;)&lt;br /&gt;
# Hacer el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, git commit -m &amp;lt;nowiki&amp;gt;&amp;#039;texto del commit&amp;#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede hacer el commit así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo # Se agrega el archivo a Git&lt;br /&gt;
git commit           # Se realiza el commit&lt;br /&gt;
# No se le entrega mensaje, con lo que se abre el editor de texto configurado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
O&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo               # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo             # Se agrega el archivo a Git&lt;br /&gt;
git commit -m &amp;#039;texto del commit&amp;#039; # Se realiza el commit&lt;br /&gt;
# Se escribe el mensaje directamente y no se abre un editor de texto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siempre es necesario incluir un mensaje en el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; ya que esto permite revisar el historial de lo que se haya hecho antes. De esta forma se puede tener una imagen bastante clara de la evolución del proyecto.&lt;br /&gt;
&lt;br /&gt;
===Hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; viendo las diferencias en los archivos===&lt;br /&gt;
Lo siguiente muestra el editor de texto para agregar un mensaje, en los comentarios muestra los archivos modificados (comportamiento por defecto) y adicionalmente muestra las diferencias en los archivos (&amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Track nuevos archivos===&lt;br /&gt;
Se dice que un archivo está siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; cuando Git lo toma en cuenta. Para esto se ejecuta lo siguiente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se crea nuevo archivo vacío&lt;br /&gt;
git add archivoNuevo # Se hace que Git lo agregue&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar archivos al staging area===&lt;br /&gt;
Los archivos modificados no pasan directamente al siguiente &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, hay que pasarlos al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; antes. El comando es el mismo que para agregar archivos nuevos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo nuevaLinea &amp;gt;&amp;gt; archivoYaEnGit # Se le agrega la línea nuevaLinea a un archivo que ya estaba en Git&lt;br /&gt;
git add archivoYaEnGit		  # Se pasa archivo al staging area&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mover (o renombrar) Archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git mv archivoViejoNombre archivoNuevoNombre # También se puede mover adentro de un directorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv archivoViejoNombre archivoNuevoNombre # Se mueve el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoViejoNombre		 # Se borra de Git el del nombre viejo&lt;br /&gt;
git add archivoNuevoNombre		 # Se agrega el del nombre nuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm archivoABorrar&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm archivoABorrar     # Borra el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoABorrar # Le avisa a Git que el archivo va a ser eliminado en el próximo commit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos en el staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm --cached archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar archivos del staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de archivo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -- archivoAResetear&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios en el directorio de trabajo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard   # Deshace cambios del staging area y del directorio de trabajo&lt;br /&gt;
git clean -f -d    # Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039;&lt;br /&gt;
git clean -f -x -d # CUIDADO! Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039; PERO ADEMÁS quita archivos ignorados (.gitignore)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/questions/1090309/git-undo-all-working-dir-changes-including-new-files stackoverflow]&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;===&lt;br /&gt;
Suponiendo que el Git se encuentra en el siguiente estado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
    ↑&lt;br /&gt;
  master&lt;br /&gt;
&lt;br /&gt;
A, B y C son commits. F es el estado del directorio de trabajo. C es el último commit.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Se pueden hacer algunos comandos para deshacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; definitivamente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 (F)&lt;br /&gt;
A-B&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; manteniendo el index (&amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --soft HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/a/6866485 stackoverflow]&lt;br /&gt;
&lt;br /&gt;
Nota: Para resucitar un commit muerto ver la nota en la fuente.&lt;br /&gt;
&lt;br /&gt;
===Hacer cambios al útlimo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; con &amp;#039;&amp;#039;--amend&amp;#039;&amp;#039;===&lt;br /&gt;
Si hay algún archivo que debería haber hecho parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; anterior, se puede agregar con &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;. Un ejemplo de cómo funciona esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m &amp;#039;primer commit&amp;#039; # Commit inicial&lt;br /&gt;
touch nuevoArchivo	      # Se agrega nuevo archivo al directorio&lt;br /&gt;
git add nuevoArchivo          # Se le avisa a Git que hay un nuevo archivo que trackear&lt;br /&gt;
git commit --amend            # Se actualiza el último commit, debería abrir el editor de texto por defecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estado de Archivos===&lt;br /&gt;
&lt;br /&gt;
Para saber el estado de los archivos existen dos comandos posibles: &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====git status====&lt;br /&gt;
Muestra información del estado de los archivos que han cambiado. Puede mostrar archivos &amp;#039;&amp;#039;untracked&amp;#039;&amp;#039;, &amp;#039;&amp;#039;staged&amp;#039;&amp;#039; y &amp;#039;&amp;#039;modified&amp;#039;&amp;#039;. No muestra información de archivos que no han cambiado desde el último &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo sin cambios&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
nothing to commit (working directory clean)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo de diferentes estados&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
En el siguiente ejemplo, &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; ya están siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; y ya hicieron parte del commit anterior; ambos fueron modificados. &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; no se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; por lo que no va a hacer parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;. &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; y se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;archivoC&amp;#039;&amp;#039; es un archivo nuevo que se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoD&amp;#039;&amp;#039; es un archivo nuevo no &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; por Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
# Changes to be committed:&lt;br /&gt;
#   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoB&lt;br /&gt;
#	new file:   archivoC&lt;br /&gt;
#&lt;br /&gt;
# Changes not staged for commit:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
#   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoA&lt;br /&gt;
#&lt;br /&gt;
# Untracked files:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
#&lt;br /&gt;
#	archivoD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====git diff====&lt;br /&gt;
&amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; se usa para ver las diferencias que han tenido los archivos y no solo saber si han cambiado o no. &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; por si sólo muestra las diferencias en archivos que no están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;. Para mostrar los cambios en los archivos que están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; hay que usar el commando con la opción &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;git diff --staged&amp;lt;/code&amp;gt; (para versiones anteriores a 1.6.1 cambiar &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039; por &amp;#039;&amp;#039;--cached&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git diff: ejemplo&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; se agregaron dos líneas con el mismo contenido, el nombre del archivo. En &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó una línea con el nombre del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
diff --git a/archivoA b/archivoA&lt;br /&gt;
index 7898192..c065858 100644&lt;br /&gt;
--- a/archivoA&lt;br /&gt;
+++ b/archivoA&lt;br /&gt;
@@ -1 +1,2 @@&lt;br /&gt;
-a&lt;br /&gt;
+archivoA&lt;br /&gt;
+archivoA&lt;br /&gt;
diff --git a/archivoB b/archivoB&lt;br /&gt;
index 6178079..df239cf 100644&lt;br /&gt;
--- a/archivoB&lt;br /&gt;
+++ b/archivoB&lt;br /&gt;
@@ -1 +1 @@&lt;br /&gt;
-b&lt;br /&gt;
+archivoB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Historial===&lt;br /&gt;
Para ver el historial se usa el comando &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt;. Se puede usar con varios parámetros para obtener un output más preciso. Para obtener más información ver [http://git-scm.com/book/en/Git-Basics-Viewing-the-Commit-History este link] o usar &amp;lt;code&amp;gt;git help log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Algunos parámetros:&lt;br /&gt;
&lt;br /&gt;
;-(n)&lt;br /&gt;
:(n) es la cantidad de &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; a mostrar (ej: &amp;lt;code&amp;gt;git log -3&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--since, --after&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente a partir de cierta fecha (ej: &amp;lt;code&amp;gt;git log --since=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--until, --before&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente desde cierta fecha (ej: &amp;lt;code&amp;gt;git log --until=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--author&lt;br /&gt;
:Se le proporciona a Git el autor para la búsqueda&lt;br /&gt;
;--stat&lt;br /&gt;
:Se muestran los archivos modificados.&lt;br /&gt;
&lt;br /&gt;
==Git Remoto==&lt;br /&gt;
Para poder colaborar en un proyecto, se necesitan servidores remotos, &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
===Crear nuevo proyecto a partir de un remote===&lt;br /&gt;
El siguiente comando crea una carpeta con el proyecto obtenido desde una fuente externa, crea la carpeta .git y obtiene los archivos del proyecto.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar remote===&lt;br /&gt;
El siguiente comando agrega un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto Git actual, esto solo asocia un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto pero no obtiene los archivos. nombreReferencia es un nombre arbitratio que se le da al remote para referenciarlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add nombreReferencia username@host:/path/to/nombreRepositorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener archivos de remote===&lt;br /&gt;
El siguiente comando obtiene los archivos desde un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; ya agregado &amp;#039;&amp;#039;&amp;#039;pero&amp;#039;&amp;#039;&amp;#039; no los deja en el directorio de trabajo, quedan &amp;quot;escondidos&amp;quot; en la base de datos de Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git fetch nombreReferencia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mezclar lo obtenido en el directorio actual===&lt;br /&gt;
Este comando mezcla la rama de nombreReferencia al directorio actual ([http://stackoverflow.com/questions/3419658/understanding-git-fetch-then-merge más info en stackoverflow]).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git merge nombreReferencia/rama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener y Mezclar (merge) archivos de remote===&lt;br /&gt;
Se obtienen los archivos y luego se mezclan con lo que hay en el directorio de trabajo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git pull nombreReferencia HEAD # Si no especifico HEAD me pide una versión&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subir cambios a remote===&lt;br /&gt;
Se suben los cambios al &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; origin en la branch (rama) master.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push origin master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Listar remotes===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin&lt;br /&gt;
ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos con URLs&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin	/gitExample2/../gitExample (fetch)&lt;br /&gt;
origin	/gitExample2/../gitExample (push)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (fetch)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (push)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener información de un remote===&lt;br /&gt;
Con este comando se obtiene la información del &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; y de las &amp;#039;&amp;#039;branches&amp;#039;&amp;#039; (ramas) que se están &amp;#039;&amp;#039;tracking&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote show ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Renombre remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rename nombreViejo nombreNuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rm remoteName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Otras páginas utiles adentro del Wiki==&lt;br /&gt;
* [[Git, Branching]], &amp;#039;&amp;#039;branching&amp;#039;&amp;#039; es una forma de llevar el desarrollo por diferentes caminos sin que se pisen entre ellos.&lt;br /&gt;
* [[Git, Tagging]], el &amp;#039;&amp;#039;tagging&amp;#039;&amp;#039; sirve para referenciar diferentes &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; en el tiempo.&lt;br /&gt;
* [[Git, Stashing]], el &amp;#039;&amp;#039;stashing&amp;#039;&amp;#039; sirve para limpiar las modificaciones actuales en el espacio de trabajo y guardarlas temporalmente fuera de vista. Se pueden recuperar luego.&lt;br /&gt;
&lt;br /&gt;
==Links útiles==&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Auto-Completion Hacer que Git autocomplete]&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Git-Aliases Hacer alias para comandos]&lt;br /&gt;
&lt;br /&gt;
==Más información==&lt;br /&gt;
* [https://na1.salesforce.com/help/pdfs/en/salesforce_git_developer_cheatsheet.pdf Git Cheat Sheet]&lt;br /&gt;
* [http://ndpsoftware.com/git-cheatsheet.html Git Cheatsheet • NDP Software]&lt;br /&gt;
* [http://git-scm.com/book/en/ Libro Oficial]&lt;br /&gt;
* [http://rogerdudler.github.io/git-guide/ git - the simple guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=300</id>
		<title>Git, lo Básico</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=300"/>
		<updated>2014-04-25T18:49:42Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Configurar autocompletación en Terminal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contexto==&lt;br /&gt;
&lt;br /&gt;
===Los Estados de los archivos===&lt;br /&gt;
Los archivos adentro de una carpeta que usa Git pueden estar &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; o no, esto significa que están asociados al control de versión o no. Los archivos &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; pueden estar en uno de tres estados:&lt;br /&gt;
&lt;br /&gt;
;&amp;#039;&amp;#039;Commited&amp;#039;&amp;#039; (&amp;quot;Comprometido&amp;quot;)&lt;br /&gt;
:El archivos ya quedó guardado en la base de datos local.&lt;br /&gt;
;Modified (Modificado)&lt;br /&gt;
:El archivo se ha modificado pero no se ha &amp;#039;&amp;#039;commited&amp;#039;&amp;#039; (&amp;#039;&amp;#039;comprometido&amp;#039;&amp;#039;) aún.&lt;br /&gt;
;&amp;#039;&amp;#039;Staged&amp;#039;&amp;#039; (&amp;quot;En Escenario&amp;quot;)&lt;br /&gt;
:Se ha marcado el archivo para agregarlo al próximo commit.&lt;br /&gt;
&lt;br /&gt;
===Un flujo común de Git===&lt;br /&gt;
# Se obtiene el proyecto desde un directorio de git&lt;br /&gt;
# Se modifican archivos&lt;br /&gt;
# Se preparan para el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, se hacen &amp;#039;&amp;#039;staged&amp;#039;&amp;#039;&lt;br /&gt;
# Se hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[File:18333fig0106-tn.png|300px|thumb|none|Flujo común de Git]]&lt;br /&gt;
&lt;br /&gt;
==Instalar Git==&lt;br /&gt;
===Obtener Git===&lt;br /&gt;
Git se puede instalar desde diferentes fuentes, [http://git-scm.com/downloads esta] es la oficial. Desde ahí se pueden descargar los comandos y clientes gráficos.&lt;br /&gt;
&lt;br /&gt;
Además hay más programas en Internet que se pueden usar para trabajar con Git. Por ejemplo NetBeans lo soporta.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039;: Es posible que Git ya esté instalado en el sistema. Si se reinstala podría causar algún conflicto. Revisar si está instalado, si la función instalada es suficiente no hacer nada, sino buscar la forma de instalar la versión deseada.&lt;br /&gt;
&lt;br /&gt;
===Configuración===&lt;br /&gt;
Antes de empezar a usar Git se configuran algunas variables para el uso de un usuario. Estas variables se usan para guardar en los repositorios información de quien hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y configurar cosas como el editor a usar. Quedan almacenadas en uno de tres directorios, ordenados por relevancia siendo más relevante el último:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/gitconfig&amp;lt;/code&amp;gt; contiene configuración para todos los usuarios del sistema en todos los repositorios&lt;br /&gt;
* &amp;lt;code&amp;gt;~/.gitconfig&amp;lt;/code&amp;gt; contiene configuración para el usuario actual&lt;br /&gt;
* &amp;lt;code&amp;gt;.git/config&amp;lt;/code&amp;gt; contiene configuración para el repositorio en el que se está trabajando actualmente&lt;br /&gt;
&lt;br /&gt;
A continuación algunas configuraciones básicas pero existen más configuraciones no documentadas aquí:&lt;br /&gt;
&lt;br /&gt;
====Configuración Personal====&lt;br /&gt;
Esta información se usa a la hora de hacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;John Flat&amp;quot;	     # Setea el nombre del usuario&lt;br /&gt;
git config --global user.email john.flat@empresa.com # Setea el mail del usuario&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuración Ambiente de Trabajo====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.editor emacs  # Setea el editor por defecto&lt;br /&gt;
git config --global merge.tool vimdiff # Setea el visualizador de diferencias&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Revisar configuraciones====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --list    # Lista todas las configuraciones, pueden repetirse si se repiten en varios archivos de configuración&lt;br /&gt;
git config {key}     # Muestra el valor de una variable en específico&lt;br /&gt;
git config user.name # Muestra el valor del nombre de usuario guardado en la configuración&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configurar autocompletación en Terminal====&lt;br /&gt;
&lt;br /&gt;
Necesario para SO Macintosh (Ubuntu viene por defecto).&lt;br /&gt;
&lt;br /&gt;
#Agregar el archivo &amp;#039;&amp;#039;&amp;#039;git-completion.bash&amp;#039;&amp;#039;&amp;#039; al home.&lt;br /&gt;
&lt;br /&gt;
Descargar:&amp;lt;br&amp;gt;&lt;br /&gt;
Opción 1 (github.com): https://github.com/git/git/blob/master/contrib/completion/git-completion.bash &amp;lt;br&amp;gt;&lt;br /&gt;
Opción 2 (Wiki): [[Media:Git-completion.bash.zip | Git-completion.bash version 2.0 ]]&lt;br /&gt;
&lt;br /&gt;
1. Modificar el archivo &amp;#039;&amp;#039;&amp;#039;.profile&amp;#039;&amp;#039;&amp;#039; por terminal.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vim ~/.profile &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Persionamos la letra &amp;#039;&amp;#039;&amp;#039;i&amp;#039;&amp;#039;&amp;#039; y agregamos &amp;#039;&amp;#039;&amp;#039;source ~/git-completion.bash&amp;#039;&amp;#039;&amp;#039; al principio del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
source ~/git-completion.bash&lt;br /&gt;
&lt;br /&gt;
# MacPorts Installer addition on 2014-03-26_at_11:37:57: adding an appropriate PATH variable for use with MacPorts.&lt;br /&gt;
export PATH=/opt/local/bin:/opt/local/sbin:$PATH&lt;br /&gt;
# Finished adapting your PATH environment variable for use with MacPorts.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Para guardar presionamos la tecla &amp;#039;&amp;#039;&amp;#039;esc&amp;#039;&amp;#039;&amp;#039;, a continuación &amp;#039;&amp;#039;&amp;#039;:&amp;#039;&amp;#039;&amp;#039; y &amp;#039;&amp;#039;&amp;#039;w+q&amp;#039;&amp;#039;&amp;#039; para guardar el archivo.&lt;br /&gt;
&lt;br /&gt;
===Instalar en un servidor===&lt;br /&gt;
Instalar en un servidor es sencillo conceptualmente. Hay que permitir acceso a un directorio con un proyecto Git. El directorio es igual al que hay en un proyecto localmente. También hay que definir para cada usuario si puede hacer &amp;#039;&amp;#039;pull&amp;#039;&amp;#039; y &amp;#039;&amp;#039;push&amp;#039;&amp;#039;. Para esto, una forma sencilla de hacerlo es usando acceso SSH (aunque existen otra formas, ver &amp;#039;&amp;#039;[http://gitolite.com/3-server-usage/git-server.html setting up your own git server]&amp;#039;&amp;#039;), de esta forma también se le puede dar permiso al usuario de lectura y escritura.&lt;br /&gt;
&lt;br /&gt;
Para crear el repositorio hay que ingresar al servidor remoto y ejecutar algunos comandos. Lo siguiente es un ejemplo, la ubicación y el nombre del proyecto pueden cambiar. Por convención se usa el nombre de la carpeta del proyecto con &amp;#039;&amp;#039;.git&amp;#039;&amp;#039;. El comando &amp;lt;code&amp;gt;--bare&amp;lt;/code&amp;gt;, al inicializar el proyecto, indica que se crea sin la estructura de directorio de trabajo, este directorio queda con archivos como los que quedan adentro de la carpeta .git de un repositorio de trabajo local.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git	  # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
mkdir project.git # Se crea una carpeta donde va a quedar el repositorio&lt;br /&gt;
cd project.git    # Se ingresa a la carpeta del proyecto&lt;br /&gt;
git --bare init   # Se inicializa el proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Lo mismo del código anterior se puede lograr así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git		     # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
git --bare init project.git  # Se crea el directorio del proyecto y se inicializa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para obtener el repositorio el usuario puede hacer:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone usuario@servidor.com:/directorio/donde/esta/el/proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se desea hacer usuarios que solo puedan interactuar con Git en este servidor, es buena idea dejar que solo usen un &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; desarrollado para este propósito. Esto significa que no pueden moverse a través de los directorios, crear archivos, ver archivos y más. Para esto, hay que editar el archivo &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; (en Ubuntu por ejemplo), en el usuario que solo va a usar Git, pasar de esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/bin/sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/usr/bin/git-shell&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para más información de cómo interactuar con el servidor remoto, ver [[Git, Branching]], la sección de &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==Comandos de Ayuda==&lt;br /&gt;
Tres formas de obtener ayuda sobre un &amp;lt;verb&amp;gt; (verbo), es decir una acción de Git:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help &amp;lt;verb&amp;gt;&lt;br /&gt;
git &amp;lt;verb&amp;gt; --help&lt;br /&gt;
man git-&amp;lt;verb&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de ayuda&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help config&lt;br /&gt;
git config --help&lt;br /&gt;
man git-config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Crear Repositorios==&lt;br /&gt;
Formas de hacer que un proyecto tenga manejo de versiones usando Git. Todas las formas incluyen un directorio .git que guarda la información de versiones.&lt;br /&gt;
&lt;br /&gt;
===Empezar un proyecto con Git===&lt;br /&gt;
Se crea un directorio nuevo, se navega hacia él y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir nuevoProyecto # Crear nuevo directorio&lt;br /&gt;
cd nuevoProyecto    # Navegar a directorio&lt;br /&gt;
git init	    # Inicializar Git&lt;br /&gt;
touch x		    # Crea un archivo &amp;quot;x&amp;quot; vacío&lt;br /&gt;
git add x	    # Se pasa &amp;quot;x&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, solo un archivo en blanco&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar Git a un proyecto existente===&lt;br /&gt;
Se navega al directorio donde está el proyecto exitente y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd proyectoExistente	 # Se navega al proyecto existente&lt;br /&gt;
git init		 # Inicializar Git&lt;br /&gt;
git add archivoExistente # Se pasa &amp;quot;archivoExistente&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, se agrega archivo existente&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener un proyecto desde una fuente existente===&lt;br /&gt;
Se obtiene una copia del repositorio y se guarda en una carpeta con el nombre del repositorio.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone [url]				    # Forma genérica&lt;br /&gt;
git clone /path/to/repository		    # Obtener copia localmente&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ignorar archivos==&lt;br /&gt;
&lt;br /&gt;
===.gitignore===&lt;br /&gt;
Git puede ignorar algunos archivos, esto se hace manualmente editando (creando) el archivo &amp;#039;&amp;#039;.gitignore&amp;#039;&amp;#039;. A continuación un ejemplo de este archivo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Esto es un comentario que empieza con &amp;#039;#&amp;#039;&lt;br /&gt;
# Omitir todos los archivos que terminan con .log&lt;br /&gt;
*.log&lt;br /&gt;
# Pero track super.log usando la negación&lt;br /&gt;
!super.log&lt;br /&gt;
# Ignorar la carpeta LOG, si existe una carpeta LOG adentro de otra carpeta no se va a ignorar&lt;br /&gt;
/LOG&lt;br /&gt;
# Ignorar todos los archivos en la carpeta error&lt;br /&gt;
error/&lt;br /&gt;
# Ignorar los archivos .txt adentro de la carpeta media&lt;br /&gt;
media/*.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Asumir que algún archivo no ha cambiado===&lt;br /&gt;
El siguiente comando hace que Git no tome en cuenta los cambios del archivo en cuestión.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para deshacer esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --no-assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Local==&lt;br /&gt;
&lt;br /&gt;
===Proceso de guardado de archivos (commit)===&lt;br /&gt;
Para hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; hay que hacer los siguientes pasos:&lt;br /&gt;
# Agregar (o modificar) archivos (por ejemplo usando un editor de texto)&lt;br /&gt;
# Avisarle a git que tiene que llevar a cabo los cambios, por ejemplo agregando un archivo (&amp;lt;code&amp;gt;git add archivoNuevo&amp;lt;/code&amp;gt;)&lt;br /&gt;
# Hacer el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, git commit -m &amp;lt;nowiki&amp;gt;&amp;#039;texto del commit&amp;#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede hacer el commit así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo # Se agrega el archivo a Git&lt;br /&gt;
git commit           # Se realiza el commit&lt;br /&gt;
# No se le entrega mensaje, con lo que se abre el editor de texto configurado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
O&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo               # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo             # Se agrega el archivo a Git&lt;br /&gt;
git commit -m &amp;#039;texto del commit&amp;#039; # Se realiza el commit&lt;br /&gt;
# Se escribe el mensaje directamente y no se abre un editor de texto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siempre es necesario incluir un mensaje en el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; ya que esto permite revisar el historial de lo que se haya hecho antes. De esta forma se puede tener una imagen bastante clara de la evolución del proyecto.&lt;br /&gt;
&lt;br /&gt;
===Hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; viendo las diferencias en los archivos===&lt;br /&gt;
Lo siguiente muestra el editor de texto para agregar un mensaje, en los comentarios muestra los archivos modificados (comportamiento por defecto) y adicionalmente muestra las diferencias en los archivos (&amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Track nuevos archivos===&lt;br /&gt;
Se dice que un archivo está siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; cuando Git lo toma en cuenta. Para esto se ejecuta lo siguiente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se crea nuevo archivo vacío&lt;br /&gt;
git add archivoNuevo # Se hace que Git lo agregue&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar archivos al staging area===&lt;br /&gt;
Los archivos modificados no pasan directamente al siguiente &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, hay que pasarlos al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; antes. El comando es el mismo que para agregar archivos nuevos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo nuevaLinea &amp;gt;&amp;gt; archivoYaEnGit # Se le agrega la línea nuevaLinea a un archivo que ya estaba en Git&lt;br /&gt;
git add archivoYaEnGit		  # Se pasa archivo al staging area&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mover (o renombrar) Archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git mv archivoViejoNombre archivoNuevoNombre # También se puede mover adentro de un directorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv archivoViejoNombre archivoNuevoNombre # Se mueve el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoViejoNombre		 # Se borra de Git el del nombre viejo&lt;br /&gt;
git add archivoNuevoNombre		 # Se agrega el del nombre nuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm archivoABorrar&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm archivoABorrar     # Borra el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoABorrar # Le avisa a Git que el archivo va a ser eliminado en el próximo commit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos en el staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm --cached archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar archivos del staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de archivo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -- archivoAResetear&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios en el directorio de trabajo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard   # Deshace cambios del staging area y del directorio de trabajo&lt;br /&gt;
git clean -f -d    # Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039;&lt;br /&gt;
git clean -f -x -d # CUIDADO! Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039; PERO ADEMÁS quita archivos ignorados (.gitignore)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/questions/1090309/git-undo-all-working-dir-changes-including-new-files stackoverflow]&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;===&lt;br /&gt;
Suponiendo que el Git se encuentra en el siguiente estado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
    ↑&lt;br /&gt;
  master&lt;br /&gt;
&lt;br /&gt;
A, B y C son commits. F es el estado del directorio de trabajo. C es el último commit.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Se pueden hacer algunos comandos para deshacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; definitivamente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 (F)&lt;br /&gt;
A-B&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; manteniendo el index (&amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --soft HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/a/6866485 stackoverflow]&lt;br /&gt;
&lt;br /&gt;
Nota: Para resucitar un commit muerto ver la nota en la fuente.&lt;br /&gt;
&lt;br /&gt;
===Hacer cambios al útlimo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; con &amp;#039;&amp;#039;--amend&amp;#039;&amp;#039;===&lt;br /&gt;
Si hay algún archivo que debería haber hecho parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; anterior, se puede agregar con &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;. Un ejemplo de cómo funciona esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m &amp;#039;primer commit&amp;#039; # Commit inicial&lt;br /&gt;
touch nuevoArchivo	      # Se agrega nuevo archivo al directorio&lt;br /&gt;
git add nuevoArchivo          # Se le avisa a Git que hay un nuevo archivo que trackear&lt;br /&gt;
git commit --amend            # Se actualiza el último commit, debería abrir el editor de texto por defecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estado de Archivos===&lt;br /&gt;
&lt;br /&gt;
Para saber el estado de los archivos existen dos comandos posibles: &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====git status====&lt;br /&gt;
Muestra información del estado de los archivos que han cambiado. Puede mostrar archivos &amp;#039;&amp;#039;untracked&amp;#039;&amp;#039;, &amp;#039;&amp;#039;staged&amp;#039;&amp;#039; y &amp;#039;&amp;#039;modified&amp;#039;&amp;#039;. No muestra información de archivos que no han cambiado desde el último &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo sin cambios&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
nothing to commit (working directory clean)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo de diferentes estados&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
En el siguiente ejemplo, &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; ya están siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; y ya hicieron parte del commit anterior; ambos fueron modificados. &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; no se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; por lo que no va a hacer parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;. &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; y se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;archivoC&amp;#039;&amp;#039; es un archivo nuevo que se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoD&amp;#039;&amp;#039; es un archivo nuevo no &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; por Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
# Changes to be committed:&lt;br /&gt;
#   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoB&lt;br /&gt;
#	new file:   archivoC&lt;br /&gt;
#&lt;br /&gt;
# Changes not staged for commit:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
#   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoA&lt;br /&gt;
#&lt;br /&gt;
# Untracked files:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
#&lt;br /&gt;
#	archivoD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====git diff====&lt;br /&gt;
&amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; se usa para ver las diferencias que han tenido los archivos y no solo saber si han cambiado o no. &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; por si sólo muestra las diferencias en archivos que no están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;. Para mostrar los cambios en los archivos que están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; hay que usar el commando con la opción &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;git diff --staged&amp;lt;/code&amp;gt; (para versiones anteriores a 1.6.1 cambiar &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039; por &amp;#039;&amp;#039;--cached&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git diff: ejemplo&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; se agregaron dos líneas con el mismo contenido, el nombre del archivo. En &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó una línea con el nombre del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
diff --git a/archivoA b/archivoA&lt;br /&gt;
index 7898192..c065858 100644&lt;br /&gt;
--- a/archivoA&lt;br /&gt;
+++ b/archivoA&lt;br /&gt;
@@ -1 +1,2 @@&lt;br /&gt;
-a&lt;br /&gt;
+archivoA&lt;br /&gt;
+archivoA&lt;br /&gt;
diff --git a/archivoB b/archivoB&lt;br /&gt;
index 6178079..df239cf 100644&lt;br /&gt;
--- a/archivoB&lt;br /&gt;
+++ b/archivoB&lt;br /&gt;
@@ -1 +1 @@&lt;br /&gt;
-b&lt;br /&gt;
+archivoB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Historial===&lt;br /&gt;
Para ver el historial se usa el comando &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt;. Se puede usar con varios parámetros para obtener un output más preciso. Para obtener más información ver [http://git-scm.com/book/en/Git-Basics-Viewing-the-Commit-History este link] o usar &amp;lt;code&amp;gt;git help log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Algunos parámetros:&lt;br /&gt;
&lt;br /&gt;
;-(n)&lt;br /&gt;
:(n) es la cantidad de &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; a mostrar (ej: &amp;lt;code&amp;gt;git log -3&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--since, --after&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente a partir de cierta fecha (ej: &amp;lt;code&amp;gt;git log --since=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--until, --before&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente desde cierta fecha (ej: &amp;lt;code&amp;gt;git log --until=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--author&lt;br /&gt;
:Se le proporciona a Git el autor para la búsqueda&lt;br /&gt;
;--stat&lt;br /&gt;
:Se muestran los archivos modificados.&lt;br /&gt;
&lt;br /&gt;
==Git Remoto==&lt;br /&gt;
Para poder colaborar en un proyecto, se necesitan servidores remotos, &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
===Crear nuevo proyecto a partir de un remote===&lt;br /&gt;
El siguiente comando crea una carpeta con el proyecto obtenido desde una fuente externa, crea la carpeta .git y obtiene los archivos del proyecto.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar remote===&lt;br /&gt;
El siguiente comando agrega un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto Git actual, esto solo asocia un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto pero no obtiene los archivos. nombreReferencia es un nombre arbitratio que se le da al remote para referenciarlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add nombreReferencia username@host:/path/to/nombreRepositorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener archivos de remote===&lt;br /&gt;
El siguiente comando obtiene los archivos desde un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; ya agregado &amp;#039;&amp;#039;&amp;#039;pero&amp;#039;&amp;#039;&amp;#039; no los deja en el directorio de trabajo, quedan &amp;quot;escondidos&amp;quot; en la base de datos de Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git fetch nombreReferencia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mezclar lo obtenido en el directorio actual===&lt;br /&gt;
Este comando mezcla la rama de nombreReferencia al directorio actual ([http://stackoverflow.com/questions/3419658/understanding-git-fetch-then-merge más info en stackoverflow]).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git merge nombreReferencia/rama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener y Mezclar (merge) archivos de remote===&lt;br /&gt;
Se obtienen los archivos y luego se mezclan con lo que hay en el directorio de trabajo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git pull nombreReferencia HEAD # Si no especifico HEAD me pide una versión&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subir cambios a remote===&lt;br /&gt;
Se suben los cambios al &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; origin en la branch (rama) master.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push origin master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Listar remotes===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin&lt;br /&gt;
ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos con URLs&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin	/gitExample2/../gitExample (fetch)&lt;br /&gt;
origin	/gitExample2/../gitExample (push)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (fetch)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (push)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener información de un remote===&lt;br /&gt;
Con este comando se obtiene la información del &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; y de las &amp;#039;&amp;#039;branches&amp;#039;&amp;#039; (ramas) que se están &amp;#039;&amp;#039;tracking&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote show ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Renombre remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rename nombreViejo nombreNuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rm remoteName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Otras páginas utiles adentro del Wiki==&lt;br /&gt;
* [[Git, Branching]], &amp;#039;&amp;#039;branching&amp;#039;&amp;#039; es una forma de llevar el desarrollo por diferentes caminos sin que se pisen entre ellos.&lt;br /&gt;
* [[Git, Tagging]], el &amp;#039;&amp;#039;tagging&amp;#039;&amp;#039; sirve para referenciar diferentes &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; en el tiempo.&lt;br /&gt;
* [[Git, Stashing]], el &amp;#039;&amp;#039;stashing&amp;#039;&amp;#039; sirve para limpiar las modificaciones actuales en el espacio de trabajo y guardarlas temporalmente fuera de vista. Se pueden recuperar luego.&lt;br /&gt;
&lt;br /&gt;
==Links útiles==&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Auto-Completion Hacer que Git autocomplete]&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Git-Aliases Hacer alias para comandos]&lt;br /&gt;
&lt;br /&gt;
==Más información==&lt;br /&gt;
* [https://na1.salesforce.com/help/pdfs/en/salesforce_git_developer_cheatsheet.pdf Git Cheat Sheet]&lt;br /&gt;
* [http://ndpsoftware.com/git-cheatsheet.html Git Cheatsheet • NDP Software]&lt;br /&gt;
* [http://git-scm.com/book/en/ Libro Oficial]&lt;br /&gt;
* [http://rogerdudler.github.io/git-guide/ git - the simple guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=299</id>
		<title>Git, lo Básico</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=299"/>
		<updated>2014-04-25T18:47:29Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Configurar autocompletación en Terminal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contexto==&lt;br /&gt;
&lt;br /&gt;
===Los Estados de los archivos===&lt;br /&gt;
Los archivos adentro de una carpeta que usa Git pueden estar &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; o no, esto significa que están asociados al control de versión o no. Los archivos &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; pueden estar en uno de tres estados:&lt;br /&gt;
&lt;br /&gt;
;&amp;#039;&amp;#039;Commited&amp;#039;&amp;#039; (&amp;quot;Comprometido&amp;quot;)&lt;br /&gt;
:El archivos ya quedó guardado en la base de datos local.&lt;br /&gt;
;Modified (Modificado)&lt;br /&gt;
:El archivo se ha modificado pero no se ha &amp;#039;&amp;#039;commited&amp;#039;&amp;#039; (&amp;#039;&amp;#039;comprometido&amp;#039;&amp;#039;) aún.&lt;br /&gt;
;&amp;#039;&amp;#039;Staged&amp;#039;&amp;#039; (&amp;quot;En Escenario&amp;quot;)&lt;br /&gt;
:Se ha marcado el archivo para agregarlo al próximo commit.&lt;br /&gt;
&lt;br /&gt;
===Un flujo común de Git===&lt;br /&gt;
# Se obtiene el proyecto desde un directorio de git&lt;br /&gt;
# Se modifican archivos&lt;br /&gt;
# Se preparan para el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, se hacen &amp;#039;&amp;#039;staged&amp;#039;&amp;#039;&lt;br /&gt;
# Se hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[File:18333fig0106-tn.png|300px|thumb|none|Flujo común de Git]]&lt;br /&gt;
&lt;br /&gt;
==Instalar Git==&lt;br /&gt;
===Obtener Git===&lt;br /&gt;
Git se puede instalar desde diferentes fuentes, [http://git-scm.com/downloads esta] es la oficial. Desde ahí se pueden descargar los comandos y clientes gráficos.&lt;br /&gt;
&lt;br /&gt;
Además hay más programas en Internet que se pueden usar para trabajar con Git. Por ejemplo NetBeans lo soporta.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039;: Es posible que Git ya esté instalado en el sistema. Si se reinstala podría causar algún conflicto. Revisar si está instalado, si la función instalada es suficiente no hacer nada, sino buscar la forma de instalar la versión deseada.&lt;br /&gt;
&lt;br /&gt;
===Configuración===&lt;br /&gt;
Antes de empezar a usar Git se configuran algunas variables para el uso de un usuario. Estas variables se usan para guardar en los repositorios información de quien hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y configurar cosas como el editor a usar. Quedan almacenadas en uno de tres directorios, ordenados por relevancia siendo más relevante el último:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/gitconfig&amp;lt;/code&amp;gt; contiene configuración para todos los usuarios del sistema en todos los repositorios&lt;br /&gt;
* &amp;lt;code&amp;gt;~/.gitconfig&amp;lt;/code&amp;gt; contiene configuración para el usuario actual&lt;br /&gt;
* &amp;lt;code&amp;gt;.git/config&amp;lt;/code&amp;gt; contiene configuración para el repositorio en el que se está trabajando actualmente&lt;br /&gt;
&lt;br /&gt;
A continuación algunas configuraciones básicas pero existen más configuraciones no documentadas aquí:&lt;br /&gt;
&lt;br /&gt;
====Configuración Personal====&lt;br /&gt;
Esta información se usa a la hora de hacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;John Flat&amp;quot;	     # Setea el nombre del usuario&lt;br /&gt;
git config --global user.email john.flat@empresa.com # Setea el mail del usuario&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuración Ambiente de Trabajo====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.editor emacs  # Setea el editor por defecto&lt;br /&gt;
git config --global merge.tool vimdiff # Setea el visualizador de diferencias&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Revisar configuraciones====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --list    # Lista todas las configuraciones, pueden repetirse si se repiten en varios archivos de configuración&lt;br /&gt;
git config {key}     # Muestra el valor de una variable en específico&lt;br /&gt;
git config user.name # Muestra el valor del nombre de usuario guardado en la configuración&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configurar autocompletación en Terminal====&lt;br /&gt;
&lt;br /&gt;
Necesario para SO Macintosh (Ubuntu viene por defecto).&lt;br /&gt;
&lt;br /&gt;
#Agregar el archivo &amp;#039;&amp;#039;&amp;#039;git-completion.bash&amp;#039;&amp;#039;&amp;#039; al home.&lt;br /&gt;
&lt;br /&gt;
Descargar:&amp;lt;br&amp;gt;&lt;br /&gt;
Opción 1 (github.com): https://github.com/git/git/blob/master/contrib/completion/git-completion.bash &amp;lt;br&amp;gt;&lt;br /&gt;
Opción 2 (Wiki): [[Media:Git-completion.bash.zip | Git-completion.bash version 2.0 ]]&lt;br /&gt;
&lt;br /&gt;
#Modificar el archivo &amp;#039;&amp;#039;&amp;#039;.profile&amp;#039;&amp;#039;&amp;#039; por terminal.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
vim ~/.profile &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Agregar &amp;#039;&amp;#039;&amp;#039;source ~/git-completion.bash&amp;#039;&amp;#039;&amp;#039; al principio del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
source ~/git-completion.bash&lt;br /&gt;
&lt;br /&gt;
# MacPorts Installer addition on 2014-03-26_at_11:37:57: adding an appropriate PATH variable for use with MacPorts.&lt;br /&gt;
export PATH=/opt/local/bin:/opt/local/sbin:$PATH&lt;br /&gt;
# Finished adapting your PATH environment variable for use with MacPorts.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Instalar en un servidor===&lt;br /&gt;
Instalar en un servidor es sencillo conceptualmente. Hay que permitir acceso a un directorio con un proyecto Git. El directorio es igual al que hay en un proyecto localmente. También hay que definir para cada usuario si puede hacer &amp;#039;&amp;#039;pull&amp;#039;&amp;#039; y &amp;#039;&amp;#039;push&amp;#039;&amp;#039;. Para esto, una forma sencilla de hacerlo es usando acceso SSH (aunque existen otra formas, ver &amp;#039;&amp;#039;[http://gitolite.com/3-server-usage/git-server.html setting up your own git server]&amp;#039;&amp;#039;), de esta forma también se le puede dar permiso al usuario de lectura y escritura.&lt;br /&gt;
&lt;br /&gt;
Para crear el repositorio hay que ingresar al servidor remoto y ejecutar algunos comandos. Lo siguiente es un ejemplo, la ubicación y el nombre del proyecto pueden cambiar. Por convención se usa el nombre de la carpeta del proyecto con &amp;#039;&amp;#039;.git&amp;#039;&amp;#039;. El comando &amp;lt;code&amp;gt;--bare&amp;lt;/code&amp;gt;, al inicializar el proyecto, indica que se crea sin la estructura de directorio de trabajo, este directorio queda con archivos como los que quedan adentro de la carpeta .git de un repositorio de trabajo local.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git	  # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
mkdir project.git # Se crea una carpeta donde va a quedar el repositorio&lt;br /&gt;
cd project.git    # Se ingresa a la carpeta del proyecto&lt;br /&gt;
git --bare init   # Se inicializa el proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Lo mismo del código anterior se puede lograr así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git		     # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
git --bare init project.git  # Se crea el directorio del proyecto y se inicializa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para obtener el repositorio el usuario puede hacer:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone usuario@servidor.com:/directorio/donde/esta/el/proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se desea hacer usuarios que solo puedan interactuar con Git en este servidor, es buena idea dejar que solo usen un &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; desarrollado para este propósito. Esto significa que no pueden moverse a través de los directorios, crear archivos, ver archivos y más. Para esto, hay que editar el archivo &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; (en Ubuntu por ejemplo), en el usuario que solo va a usar Git, pasar de esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/bin/sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/usr/bin/git-shell&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para más información de cómo interactuar con el servidor remoto, ver [[Git, Branching]], la sección de &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==Comandos de Ayuda==&lt;br /&gt;
Tres formas de obtener ayuda sobre un &amp;lt;verb&amp;gt; (verbo), es decir una acción de Git:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help &amp;lt;verb&amp;gt;&lt;br /&gt;
git &amp;lt;verb&amp;gt; --help&lt;br /&gt;
man git-&amp;lt;verb&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de ayuda&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help config&lt;br /&gt;
git config --help&lt;br /&gt;
man git-config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Crear Repositorios==&lt;br /&gt;
Formas de hacer que un proyecto tenga manejo de versiones usando Git. Todas las formas incluyen un directorio .git que guarda la información de versiones.&lt;br /&gt;
&lt;br /&gt;
===Empezar un proyecto con Git===&lt;br /&gt;
Se crea un directorio nuevo, se navega hacia él y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir nuevoProyecto # Crear nuevo directorio&lt;br /&gt;
cd nuevoProyecto    # Navegar a directorio&lt;br /&gt;
git init	    # Inicializar Git&lt;br /&gt;
touch x		    # Crea un archivo &amp;quot;x&amp;quot; vacío&lt;br /&gt;
git add x	    # Se pasa &amp;quot;x&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, solo un archivo en blanco&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar Git a un proyecto existente===&lt;br /&gt;
Se navega al directorio donde está el proyecto exitente y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd proyectoExistente	 # Se navega al proyecto existente&lt;br /&gt;
git init		 # Inicializar Git&lt;br /&gt;
git add archivoExistente # Se pasa &amp;quot;archivoExistente&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, se agrega archivo existente&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener un proyecto desde una fuente existente===&lt;br /&gt;
Se obtiene una copia del repositorio y se guarda en una carpeta con el nombre del repositorio.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone [url]				    # Forma genérica&lt;br /&gt;
git clone /path/to/repository		    # Obtener copia localmente&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ignorar archivos==&lt;br /&gt;
&lt;br /&gt;
===.gitignore===&lt;br /&gt;
Git puede ignorar algunos archivos, esto se hace manualmente editando (creando) el archivo &amp;#039;&amp;#039;.gitignore&amp;#039;&amp;#039;. A continuación un ejemplo de este archivo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Esto es un comentario que empieza con &amp;#039;#&amp;#039;&lt;br /&gt;
# Omitir todos los archivos que terminan con .log&lt;br /&gt;
*.log&lt;br /&gt;
# Pero track super.log usando la negación&lt;br /&gt;
!super.log&lt;br /&gt;
# Ignorar la carpeta LOG, si existe una carpeta LOG adentro de otra carpeta no se va a ignorar&lt;br /&gt;
/LOG&lt;br /&gt;
# Ignorar todos los archivos en la carpeta error&lt;br /&gt;
error/&lt;br /&gt;
# Ignorar los archivos .txt adentro de la carpeta media&lt;br /&gt;
media/*.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Asumir que algún archivo no ha cambiado===&lt;br /&gt;
El siguiente comando hace que Git no tome en cuenta los cambios del archivo en cuestión.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para deshacer esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --no-assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Local==&lt;br /&gt;
&lt;br /&gt;
===Proceso de guardado de archivos (commit)===&lt;br /&gt;
Para hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; hay que hacer los siguientes pasos:&lt;br /&gt;
# Agregar (o modificar) archivos (por ejemplo usando un editor de texto)&lt;br /&gt;
# Avisarle a git que tiene que llevar a cabo los cambios, por ejemplo agregando un archivo (&amp;lt;code&amp;gt;git add archivoNuevo&amp;lt;/code&amp;gt;)&lt;br /&gt;
# Hacer el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, git commit -m &amp;lt;nowiki&amp;gt;&amp;#039;texto del commit&amp;#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede hacer el commit así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo # Se agrega el archivo a Git&lt;br /&gt;
git commit           # Se realiza el commit&lt;br /&gt;
# No se le entrega mensaje, con lo que se abre el editor de texto configurado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
O&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo               # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo             # Se agrega el archivo a Git&lt;br /&gt;
git commit -m &amp;#039;texto del commit&amp;#039; # Se realiza el commit&lt;br /&gt;
# Se escribe el mensaje directamente y no se abre un editor de texto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siempre es necesario incluir un mensaje en el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; ya que esto permite revisar el historial de lo que se haya hecho antes. De esta forma se puede tener una imagen bastante clara de la evolución del proyecto.&lt;br /&gt;
&lt;br /&gt;
===Hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; viendo las diferencias en los archivos===&lt;br /&gt;
Lo siguiente muestra el editor de texto para agregar un mensaje, en los comentarios muestra los archivos modificados (comportamiento por defecto) y adicionalmente muestra las diferencias en los archivos (&amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Track nuevos archivos===&lt;br /&gt;
Se dice que un archivo está siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; cuando Git lo toma en cuenta. Para esto se ejecuta lo siguiente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se crea nuevo archivo vacío&lt;br /&gt;
git add archivoNuevo # Se hace que Git lo agregue&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar archivos al staging area===&lt;br /&gt;
Los archivos modificados no pasan directamente al siguiente &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, hay que pasarlos al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; antes. El comando es el mismo que para agregar archivos nuevos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo nuevaLinea &amp;gt;&amp;gt; archivoYaEnGit # Se le agrega la línea nuevaLinea a un archivo que ya estaba en Git&lt;br /&gt;
git add archivoYaEnGit		  # Se pasa archivo al staging area&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mover (o renombrar) Archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git mv archivoViejoNombre archivoNuevoNombre # También se puede mover adentro de un directorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv archivoViejoNombre archivoNuevoNombre # Se mueve el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoViejoNombre		 # Se borra de Git el del nombre viejo&lt;br /&gt;
git add archivoNuevoNombre		 # Se agrega el del nombre nuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm archivoABorrar&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm archivoABorrar     # Borra el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoABorrar # Le avisa a Git que el archivo va a ser eliminado en el próximo commit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos en el staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm --cached archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar archivos del staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de archivo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -- archivoAResetear&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios en el directorio de trabajo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard   # Deshace cambios del staging area y del directorio de trabajo&lt;br /&gt;
git clean -f -d    # Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039;&lt;br /&gt;
git clean -f -x -d # CUIDADO! Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039; PERO ADEMÁS quita archivos ignorados (.gitignore)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/questions/1090309/git-undo-all-working-dir-changes-including-new-files stackoverflow]&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;===&lt;br /&gt;
Suponiendo que el Git se encuentra en el siguiente estado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
    ↑&lt;br /&gt;
  master&lt;br /&gt;
&lt;br /&gt;
A, B y C son commits. F es el estado del directorio de trabajo. C es el último commit.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Se pueden hacer algunos comandos para deshacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; definitivamente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 (F)&lt;br /&gt;
A-B&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; manteniendo el index (&amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --soft HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/a/6866485 stackoverflow]&lt;br /&gt;
&lt;br /&gt;
Nota: Para resucitar un commit muerto ver la nota en la fuente.&lt;br /&gt;
&lt;br /&gt;
===Hacer cambios al útlimo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; con &amp;#039;&amp;#039;--amend&amp;#039;&amp;#039;===&lt;br /&gt;
Si hay algún archivo que debería haber hecho parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; anterior, se puede agregar con &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;. Un ejemplo de cómo funciona esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m &amp;#039;primer commit&amp;#039; # Commit inicial&lt;br /&gt;
touch nuevoArchivo	      # Se agrega nuevo archivo al directorio&lt;br /&gt;
git add nuevoArchivo          # Se le avisa a Git que hay un nuevo archivo que trackear&lt;br /&gt;
git commit --amend            # Se actualiza el último commit, debería abrir el editor de texto por defecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estado de Archivos===&lt;br /&gt;
&lt;br /&gt;
Para saber el estado de los archivos existen dos comandos posibles: &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====git status====&lt;br /&gt;
Muestra información del estado de los archivos que han cambiado. Puede mostrar archivos &amp;#039;&amp;#039;untracked&amp;#039;&amp;#039;, &amp;#039;&amp;#039;staged&amp;#039;&amp;#039; y &amp;#039;&amp;#039;modified&amp;#039;&amp;#039;. No muestra información de archivos que no han cambiado desde el último &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo sin cambios&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
nothing to commit (working directory clean)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo de diferentes estados&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
En el siguiente ejemplo, &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; ya están siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; y ya hicieron parte del commit anterior; ambos fueron modificados. &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; no se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; por lo que no va a hacer parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;. &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; y se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;archivoC&amp;#039;&amp;#039; es un archivo nuevo que se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoD&amp;#039;&amp;#039; es un archivo nuevo no &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; por Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
# Changes to be committed:&lt;br /&gt;
#   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoB&lt;br /&gt;
#	new file:   archivoC&lt;br /&gt;
#&lt;br /&gt;
# Changes not staged for commit:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
#   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoA&lt;br /&gt;
#&lt;br /&gt;
# Untracked files:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
#&lt;br /&gt;
#	archivoD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====git diff====&lt;br /&gt;
&amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; se usa para ver las diferencias que han tenido los archivos y no solo saber si han cambiado o no. &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; por si sólo muestra las diferencias en archivos que no están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;. Para mostrar los cambios en los archivos que están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; hay que usar el commando con la opción &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;git diff --staged&amp;lt;/code&amp;gt; (para versiones anteriores a 1.6.1 cambiar &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039; por &amp;#039;&amp;#039;--cached&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git diff: ejemplo&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; se agregaron dos líneas con el mismo contenido, el nombre del archivo. En &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó una línea con el nombre del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
diff --git a/archivoA b/archivoA&lt;br /&gt;
index 7898192..c065858 100644&lt;br /&gt;
--- a/archivoA&lt;br /&gt;
+++ b/archivoA&lt;br /&gt;
@@ -1 +1,2 @@&lt;br /&gt;
-a&lt;br /&gt;
+archivoA&lt;br /&gt;
+archivoA&lt;br /&gt;
diff --git a/archivoB b/archivoB&lt;br /&gt;
index 6178079..df239cf 100644&lt;br /&gt;
--- a/archivoB&lt;br /&gt;
+++ b/archivoB&lt;br /&gt;
@@ -1 +1 @@&lt;br /&gt;
-b&lt;br /&gt;
+archivoB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Historial===&lt;br /&gt;
Para ver el historial se usa el comando &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt;. Se puede usar con varios parámetros para obtener un output más preciso. Para obtener más información ver [http://git-scm.com/book/en/Git-Basics-Viewing-the-Commit-History este link] o usar &amp;lt;code&amp;gt;git help log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Algunos parámetros:&lt;br /&gt;
&lt;br /&gt;
;-(n)&lt;br /&gt;
:(n) es la cantidad de &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; a mostrar (ej: &amp;lt;code&amp;gt;git log -3&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--since, --after&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente a partir de cierta fecha (ej: &amp;lt;code&amp;gt;git log --since=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--until, --before&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente desde cierta fecha (ej: &amp;lt;code&amp;gt;git log --until=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--author&lt;br /&gt;
:Se le proporciona a Git el autor para la búsqueda&lt;br /&gt;
;--stat&lt;br /&gt;
:Se muestran los archivos modificados.&lt;br /&gt;
&lt;br /&gt;
==Git Remoto==&lt;br /&gt;
Para poder colaborar en un proyecto, se necesitan servidores remotos, &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
===Crear nuevo proyecto a partir de un remote===&lt;br /&gt;
El siguiente comando crea una carpeta con el proyecto obtenido desde una fuente externa, crea la carpeta .git y obtiene los archivos del proyecto.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar remote===&lt;br /&gt;
El siguiente comando agrega un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto Git actual, esto solo asocia un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto pero no obtiene los archivos. nombreReferencia es un nombre arbitratio que se le da al remote para referenciarlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add nombreReferencia username@host:/path/to/nombreRepositorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener archivos de remote===&lt;br /&gt;
El siguiente comando obtiene los archivos desde un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; ya agregado &amp;#039;&amp;#039;&amp;#039;pero&amp;#039;&amp;#039;&amp;#039; no los deja en el directorio de trabajo, quedan &amp;quot;escondidos&amp;quot; en la base de datos de Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git fetch nombreReferencia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mezclar lo obtenido en el directorio actual===&lt;br /&gt;
Este comando mezcla la rama de nombreReferencia al directorio actual ([http://stackoverflow.com/questions/3419658/understanding-git-fetch-then-merge más info en stackoverflow]).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git merge nombreReferencia/rama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener y Mezclar (merge) archivos de remote===&lt;br /&gt;
Se obtienen los archivos y luego se mezclan con lo que hay en el directorio de trabajo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git pull nombreReferencia HEAD # Si no especifico HEAD me pide una versión&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subir cambios a remote===&lt;br /&gt;
Se suben los cambios al &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; origin en la branch (rama) master.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push origin master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Listar remotes===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin&lt;br /&gt;
ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos con URLs&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin	/gitExample2/../gitExample (fetch)&lt;br /&gt;
origin	/gitExample2/../gitExample (push)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (fetch)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (push)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener información de un remote===&lt;br /&gt;
Con este comando se obtiene la información del &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; y de las &amp;#039;&amp;#039;branches&amp;#039;&amp;#039; (ramas) que se están &amp;#039;&amp;#039;tracking&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote show ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Renombre remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rename nombreViejo nombreNuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rm remoteName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Otras páginas utiles adentro del Wiki==&lt;br /&gt;
* [[Git, Branching]], &amp;#039;&amp;#039;branching&amp;#039;&amp;#039; es una forma de llevar el desarrollo por diferentes caminos sin que se pisen entre ellos.&lt;br /&gt;
* [[Git, Tagging]], el &amp;#039;&amp;#039;tagging&amp;#039;&amp;#039; sirve para referenciar diferentes &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; en el tiempo.&lt;br /&gt;
* [[Git, Stashing]], el &amp;#039;&amp;#039;stashing&amp;#039;&amp;#039; sirve para limpiar las modificaciones actuales en el espacio de trabajo y guardarlas temporalmente fuera de vista. Se pueden recuperar luego.&lt;br /&gt;
&lt;br /&gt;
==Links útiles==&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Auto-Completion Hacer que Git autocomplete]&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Git-Aliases Hacer alias para comandos]&lt;br /&gt;
&lt;br /&gt;
==Más información==&lt;br /&gt;
* [https://na1.salesforce.com/help/pdfs/en/salesforce_git_developer_cheatsheet.pdf Git Cheat Sheet]&lt;br /&gt;
* [http://ndpsoftware.com/git-cheatsheet.html Git Cheatsheet • NDP Software]&lt;br /&gt;
* [http://git-scm.com/book/en/ Libro Oficial]&lt;br /&gt;
* [http://rogerdudler.github.io/git-guide/ git - the simple guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=298</id>
		<title>Git, lo Básico</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=298"/>
		<updated>2014-04-25T18:46:15Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Configurar autocompletación en Terminal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contexto==&lt;br /&gt;
&lt;br /&gt;
===Los Estados de los archivos===&lt;br /&gt;
Los archivos adentro de una carpeta que usa Git pueden estar &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; o no, esto significa que están asociados al control de versión o no. Los archivos &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; pueden estar en uno de tres estados:&lt;br /&gt;
&lt;br /&gt;
;&amp;#039;&amp;#039;Commited&amp;#039;&amp;#039; (&amp;quot;Comprometido&amp;quot;)&lt;br /&gt;
:El archivos ya quedó guardado en la base de datos local.&lt;br /&gt;
;Modified (Modificado)&lt;br /&gt;
:El archivo se ha modificado pero no se ha &amp;#039;&amp;#039;commited&amp;#039;&amp;#039; (&amp;#039;&amp;#039;comprometido&amp;#039;&amp;#039;) aún.&lt;br /&gt;
;&amp;#039;&amp;#039;Staged&amp;#039;&amp;#039; (&amp;quot;En Escenario&amp;quot;)&lt;br /&gt;
:Se ha marcado el archivo para agregarlo al próximo commit.&lt;br /&gt;
&lt;br /&gt;
===Un flujo común de Git===&lt;br /&gt;
# Se obtiene el proyecto desde un directorio de git&lt;br /&gt;
# Se modifican archivos&lt;br /&gt;
# Se preparan para el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, se hacen &amp;#039;&amp;#039;staged&amp;#039;&amp;#039;&lt;br /&gt;
# Se hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[File:18333fig0106-tn.png|300px|thumb|none|Flujo común de Git]]&lt;br /&gt;
&lt;br /&gt;
==Instalar Git==&lt;br /&gt;
===Obtener Git===&lt;br /&gt;
Git se puede instalar desde diferentes fuentes, [http://git-scm.com/downloads esta] es la oficial. Desde ahí se pueden descargar los comandos y clientes gráficos.&lt;br /&gt;
&lt;br /&gt;
Además hay más programas en Internet que se pueden usar para trabajar con Git. Por ejemplo NetBeans lo soporta.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039;: Es posible que Git ya esté instalado en el sistema. Si se reinstala podría causar algún conflicto. Revisar si está instalado, si la función instalada es suficiente no hacer nada, sino buscar la forma de instalar la versión deseada.&lt;br /&gt;
&lt;br /&gt;
===Configuración===&lt;br /&gt;
Antes de empezar a usar Git se configuran algunas variables para el uso de un usuario. Estas variables se usan para guardar en los repositorios información de quien hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y configurar cosas como el editor a usar. Quedan almacenadas en uno de tres directorios, ordenados por relevancia siendo más relevante el último:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/gitconfig&amp;lt;/code&amp;gt; contiene configuración para todos los usuarios del sistema en todos los repositorios&lt;br /&gt;
* &amp;lt;code&amp;gt;~/.gitconfig&amp;lt;/code&amp;gt; contiene configuración para el usuario actual&lt;br /&gt;
* &amp;lt;code&amp;gt;.git/config&amp;lt;/code&amp;gt; contiene configuración para el repositorio en el que se está trabajando actualmente&lt;br /&gt;
&lt;br /&gt;
A continuación algunas configuraciones básicas pero existen más configuraciones no documentadas aquí:&lt;br /&gt;
&lt;br /&gt;
====Configuración Personal====&lt;br /&gt;
Esta información se usa a la hora de hacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;John Flat&amp;quot;	     # Setea el nombre del usuario&lt;br /&gt;
git config --global user.email john.flat@empresa.com # Setea el mail del usuario&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuración Ambiente de Trabajo====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.editor emacs  # Setea el editor por defecto&lt;br /&gt;
git config --global merge.tool vimdiff # Setea el visualizador de diferencias&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Revisar configuraciones====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --list    # Lista todas las configuraciones, pueden repetirse si se repiten en varios archivos de configuración&lt;br /&gt;
git config {key}     # Muestra el valor de una variable en específico&lt;br /&gt;
git config user.name # Muestra el valor del nombre de usuario guardado en la configuración&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configurar autocompletación en Terminal====&lt;br /&gt;
&lt;br /&gt;
Necesario para SO Macintosh (Ubuntu viene por defecto).&lt;br /&gt;
&lt;br /&gt;
#Agregar el archivo &amp;#039;&amp;#039;&amp;#039;git-completion.bash&amp;#039;&amp;#039;&amp;#039; al home.&lt;br /&gt;
&lt;br /&gt;
Descargar:&amp;lt;br&amp;gt;&lt;br /&gt;
Opción 1 (github.com): https://github.com/git/git/blob/master/contrib/completion/git-completion.bash &amp;lt;br&amp;gt;&lt;br /&gt;
Opción 2 (Wiki): [[Media:Git-completion.bash.zip | Git-completion.bash version 2.0 ]]&lt;br /&gt;
&lt;br /&gt;
#Modificar el archivo &amp;#039;&amp;#039;&amp;#039;.profile&amp;#039;&amp;#039;&amp;#039; por terminal.&lt;br /&gt;
&amp;lt;syntaxheightlight lang=&amp;#039;bash&amp;#039;&amp;gt;&lt;br /&gt;
vim ~/.profile &lt;br /&gt;
&amp;lt;/syntaxleheighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Agregar &amp;#039;&amp;#039;&amp;#039;source ~/git-completion.bash&amp;#039;&amp;#039;&amp;#039; al principio del archivo.&lt;br /&gt;
&amp;lt;syntaxleheightlight lang=&amp;#039;bash&amp;#039;&amp;gt;&lt;br /&gt;
source ~/git-completion.bash&lt;br /&gt;
&lt;br /&gt;
# MacPorts Installer addition on 2014-03-26_at_11:37:57: adding an appropriate PATH variable for use with MacPorts.&lt;br /&gt;
export PATH=/opt/local/bin:/opt/local/sbin:$PATH&lt;br /&gt;
# Finished adapting your PATH environment variable for use with MacPorts.&lt;br /&gt;
&amp;lt;/syntaxheighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Instalar en un servidor===&lt;br /&gt;
Instalar en un servidor es sencillo conceptualmente. Hay que permitir acceso a un directorio con un proyecto Git. El directorio es igual al que hay en un proyecto localmente. También hay que definir para cada usuario si puede hacer &amp;#039;&amp;#039;pull&amp;#039;&amp;#039; y &amp;#039;&amp;#039;push&amp;#039;&amp;#039;. Para esto, una forma sencilla de hacerlo es usando acceso SSH (aunque existen otra formas, ver &amp;#039;&amp;#039;[http://gitolite.com/3-server-usage/git-server.html setting up your own git server]&amp;#039;&amp;#039;), de esta forma también se le puede dar permiso al usuario de lectura y escritura.&lt;br /&gt;
&lt;br /&gt;
Para crear el repositorio hay que ingresar al servidor remoto y ejecutar algunos comandos. Lo siguiente es un ejemplo, la ubicación y el nombre del proyecto pueden cambiar. Por convención se usa el nombre de la carpeta del proyecto con &amp;#039;&amp;#039;.git&amp;#039;&amp;#039;. El comando &amp;lt;code&amp;gt;--bare&amp;lt;/code&amp;gt;, al inicializar el proyecto, indica que se crea sin la estructura de directorio de trabajo, este directorio queda con archivos como los que quedan adentro de la carpeta .git de un repositorio de trabajo local.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git	  # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
mkdir project.git # Se crea una carpeta donde va a quedar el repositorio&lt;br /&gt;
cd project.git    # Se ingresa a la carpeta del proyecto&lt;br /&gt;
git --bare init   # Se inicializa el proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Lo mismo del código anterior se puede lograr así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git		     # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
git --bare init project.git  # Se crea el directorio del proyecto y se inicializa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para obtener el repositorio el usuario puede hacer:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone usuario@servidor.com:/directorio/donde/esta/el/proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se desea hacer usuarios que solo puedan interactuar con Git en este servidor, es buena idea dejar que solo usen un &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; desarrollado para este propósito. Esto significa que no pueden moverse a través de los directorios, crear archivos, ver archivos y más. Para esto, hay que editar el archivo &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; (en Ubuntu por ejemplo), en el usuario que solo va a usar Git, pasar de esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/bin/sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/usr/bin/git-shell&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para más información de cómo interactuar con el servidor remoto, ver [[Git, Branching]], la sección de &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==Comandos de Ayuda==&lt;br /&gt;
Tres formas de obtener ayuda sobre un &amp;lt;verb&amp;gt; (verbo), es decir una acción de Git:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help &amp;lt;verb&amp;gt;&lt;br /&gt;
git &amp;lt;verb&amp;gt; --help&lt;br /&gt;
man git-&amp;lt;verb&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de ayuda&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help config&lt;br /&gt;
git config --help&lt;br /&gt;
man git-config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Crear Repositorios==&lt;br /&gt;
Formas de hacer que un proyecto tenga manejo de versiones usando Git. Todas las formas incluyen un directorio .git que guarda la información de versiones.&lt;br /&gt;
&lt;br /&gt;
===Empezar un proyecto con Git===&lt;br /&gt;
Se crea un directorio nuevo, se navega hacia él y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir nuevoProyecto # Crear nuevo directorio&lt;br /&gt;
cd nuevoProyecto    # Navegar a directorio&lt;br /&gt;
git init	    # Inicializar Git&lt;br /&gt;
touch x		    # Crea un archivo &amp;quot;x&amp;quot; vacío&lt;br /&gt;
git add x	    # Se pasa &amp;quot;x&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, solo un archivo en blanco&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar Git a un proyecto existente===&lt;br /&gt;
Se navega al directorio donde está el proyecto exitente y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd proyectoExistente	 # Se navega al proyecto existente&lt;br /&gt;
git init		 # Inicializar Git&lt;br /&gt;
git add archivoExistente # Se pasa &amp;quot;archivoExistente&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, se agrega archivo existente&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener un proyecto desde una fuente existente===&lt;br /&gt;
Se obtiene una copia del repositorio y se guarda en una carpeta con el nombre del repositorio.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone [url]				    # Forma genérica&lt;br /&gt;
git clone /path/to/repository		    # Obtener copia localmente&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ignorar archivos==&lt;br /&gt;
&lt;br /&gt;
===.gitignore===&lt;br /&gt;
Git puede ignorar algunos archivos, esto se hace manualmente editando (creando) el archivo &amp;#039;&amp;#039;.gitignore&amp;#039;&amp;#039;. A continuación un ejemplo de este archivo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Esto es un comentario que empieza con &amp;#039;#&amp;#039;&lt;br /&gt;
# Omitir todos los archivos que terminan con .log&lt;br /&gt;
*.log&lt;br /&gt;
# Pero track super.log usando la negación&lt;br /&gt;
!super.log&lt;br /&gt;
# Ignorar la carpeta LOG, si existe una carpeta LOG adentro de otra carpeta no se va a ignorar&lt;br /&gt;
/LOG&lt;br /&gt;
# Ignorar todos los archivos en la carpeta error&lt;br /&gt;
error/&lt;br /&gt;
# Ignorar los archivos .txt adentro de la carpeta media&lt;br /&gt;
media/*.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Asumir que algún archivo no ha cambiado===&lt;br /&gt;
El siguiente comando hace que Git no tome en cuenta los cambios del archivo en cuestión.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para deshacer esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --no-assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Local==&lt;br /&gt;
&lt;br /&gt;
===Proceso de guardado de archivos (commit)===&lt;br /&gt;
Para hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; hay que hacer los siguientes pasos:&lt;br /&gt;
# Agregar (o modificar) archivos (por ejemplo usando un editor de texto)&lt;br /&gt;
# Avisarle a git que tiene que llevar a cabo los cambios, por ejemplo agregando un archivo (&amp;lt;code&amp;gt;git add archivoNuevo&amp;lt;/code&amp;gt;)&lt;br /&gt;
# Hacer el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, git commit -m &amp;lt;nowiki&amp;gt;&amp;#039;texto del commit&amp;#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede hacer el commit así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo # Se agrega el archivo a Git&lt;br /&gt;
git commit           # Se realiza el commit&lt;br /&gt;
# No se le entrega mensaje, con lo que se abre el editor de texto configurado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
O&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo               # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo             # Se agrega el archivo a Git&lt;br /&gt;
git commit -m &amp;#039;texto del commit&amp;#039; # Se realiza el commit&lt;br /&gt;
# Se escribe el mensaje directamente y no se abre un editor de texto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siempre es necesario incluir un mensaje en el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; ya que esto permite revisar el historial de lo que se haya hecho antes. De esta forma se puede tener una imagen bastante clara de la evolución del proyecto.&lt;br /&gt;
&lt;br /&gt;
===Hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; viendo las diferencias en los archivos===&lt;br /&gt;
Lo siguiente muestra el editor de texto para agregar un mensaje, en los comentarios muestra los archivos modificados (comportamiento por defecto) y adicionalmente muestra las diferencias en los archivos (&amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Track nuevos archivos===&lt;br /&gt;
Se dice que un archivo está siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; cuando Git lo toma en cuenta. Para esto se ejecuta lo siguiente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se crea nuevo archivo vacío&lt;br /&gt;
git add archivoNuevo # Se hace que Git lo agregue&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar archivos al staging area===&lt;br /&gt;
Los archivos modificados no pasan directamente al siguiente &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, hay que pasarlos al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; antes. El comando es el mismo que para agregar archivos nuevos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo nuevaLinea &amp;gt;&amp;gt; archivoYaEnGit # Se le agrega la línea nuevaLinea a un archivo que ya estaba en Git&lt;br /&gt;
git add archivoYaEnGit		  # Se pasa archivo al staging area&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mover (o renombrar) Archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git mv archivoViejoNombre archivoNuevoNombre # También se puede mover adentro de un directorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv archivoViejoNombre archivoNuevoNombre # Se mueve el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoViejoNombre		 # Se borra de Git el del nombre viejo&lt;br /&gt;
git add archivoNuevoNombre		 # Se agrega el del nombre nuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm archivoABorrar&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm archivoABorrar     # Borra el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoABorrar # Le avisa a Git que el archivo va a ser eliminado en el próximo commit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos en el staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm --cached archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar archivos del staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de archivo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -- archivoAResetear&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios en el directorio de trabajo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard   # Deshace cambios del staging area y del directorio de trabajo&lt;br /&gt;
git clean -f -d    # Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039;&lt;br /&gt;
git clean -f -x -d # CUIDADO! Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039; PERO ADEMÁS quita archivos ignorados (.gitignore)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/questions/1090309/git-undo-all-working-dir-changes-including-new-files stackoverflow]&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;===&lt;br /&gt;
Suponiendo que el Git se encuentra en el siguiente estado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
    ↑&lt;br /&gt;
  master&lt;br /&gt;
&lt;br /&gt;
A, B y C son commits. F es el estado del directorio de trabajo. C es el último commit.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Se pueden hacer algunos comandos para deshacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; definitivamente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 (F)&lt;br /&gt;
A-B&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; manteniendo el index (&amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --soft HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/a/6866485 stackoverflow]&lt;br /&gt;
&lt;br /&gt;
Nota: Para resucitar un commit muerto ver la nota en la fuente.&lt;br /&gt;
&lt;br /&gt;
===Hacer cambios al útlimo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; con &amp;#039;&amp;#039;--amend&amp;#039;&amp;#039;===&lt;br /&gt;
Si hay algún archivo que debería haber hecho parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; anterior, se puede agregar con &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;. Un ejemplo de cómo funciona esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m &amp;#039;primer commit&amp;#039; # Commit inicial&lt;br /&gt;
touch nuevoArchivo	      # Se agrega nuevo archivo al directorio&lt;br /&gt;
git add nuevoArchivo          # Se le avisa a Git que hay un nuevo archivo que trackear&lt;br /&gt;
git commit --amend            # Se actualiza el último commit, debería abrir el editor de texto por defecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estado de Archivos===&lt;br /&gt;
&lt;br /&gt;
Para saber el estado de los archivos existen dos comandos posibles: &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====git status====&lt;br /&gt;
Muestra información del estado de los archivos que han cambiado. Puede mostrar archivos &amp;#039;&amp;#039;untracked&amp;#039;&amp;#039;, &amp;#039;&amp;#039;staged&amp;#039;&amp;#039; y &amp;#039;&amp;#039;modified&amp;#039;&amp;#039;. No muestra información de archivos que no han cambiado desde el último &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo sin cambios&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
nothing to commit (working directory clean)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo de diferentes estados&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
En el siguiente ejemplo, &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; ya están siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; y ya hicieron parte del commit anterior; ambos fueron modificados. &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; no se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; por lo que no va a hacer parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;. &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; y se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;archivoC&amp;#039;&amp;#039; es un archivo nuevo que se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoD&amp;#039;&amp;#039; es un archivo nuevo no &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; por Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
# Changes to be committed:&lt;br /&gt;
#   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoB&lt;br /&gt;
#	new file:   archivoC&lt;br /&gt;
#&lt;br /&gt;
# Changes not staged for commit:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
#   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoA&lt;br /&gt;
#&lt;br /&gt;
# Untracked files:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
#&lt;br /&gt;
#	archivoD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====git diff====&lt;br /&gt;
&amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; se usa para ver las diferencias que han tenido los archivos y no solo saber si han cambiado o no. &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; por si sólo muestra las diferencias en archivos que no están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;. Para mostrar los cambios en los archivos que están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; hay que usar el commando con la opción &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;git diff --staged&amp;lt;/code&amp;gt; (para versiones anteriores a 1.6.1 cambiar &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039; por &amp;#039;&amp;#039;--cached&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git diff: ejemplo&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; se agregaron dos líneas con el mismo contenido, el nombre del archivo. En &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó una línea con el nombre del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
diff --git a/archivoA b/archivoA&lt;br /&gt;
index 7898192..c065858 100644&lt;br /&gt;
--- a/archivoA&lt;br /&gt;
+++ b/archivoA&lt;br /&gt;
@@ -1 +1,2 @@&lt;br /&gt;
-a&lt;br /&gt;
+archivoA&lt;br /&gt;
+archivoA&lt;br /&gt;
diff --git a/archivoB b/archivoB&lt;br /&gt;
index 6178079..df239cf 100644&lt;br /&gt;
--- a/archivoB&lt;br /&gt;
+++ b/archivoB&lt;br /&gt;
@@ -1 +1 @@&lt;br /&gt;
-b&lt;br /&gt;
+archivoB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Historial===&lt;br /&gt;
Para ver el historial se usa el comando &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt;. Se puede usar con varios parámetros para obtener un output más preciso. Para obtener más información ver [http://git-scm.com/book/en/Git-Basics-Viewing-the-Commit-History este link] o usar &amp;lt;code&amp;gt;git help log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Algunos parámetros:&lt;br /&gt;
&lt;br /&gt;
;-(n)&lt;br /&gt;
:(n) es la cantidad de &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; a mostrar (ej: &amp;lt;code&amp;gt;git log -3&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--since, --after&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente a partir de cierta fecha (ej: &amp;lt;code&amp;gt;git log --since=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--until, --before&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente desde cierta fecha (ej: &amp;lt;code&amp;gt;git log --until=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--author&lt;br /&gt;
:Se le proporciona a Git el autor para la búsqueda&lt;br /&gt;
;--stat&lt;br /&gt;
:Se muestran los archivos modificados.&lt;br /&gt;
&lt;br /&gt;
==Git Remoto==&lt;br /&gt;
Para poder colaborar en un proyecto, se necesitan servidores remotos, &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
===Crear nuevo proyecto a partir de un remote===&lt;br /&gt;
El siguiente comando crea una carpeta con el proyecto obtenido desde una fuente externa, crea la carpeta .git y obtiene los archivos del proyecto.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar remote===&lt;br /&gt;
El siguiente comando agrega un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto Git actual, esto solo asocia un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto pero no obtiene los archivos. nombreReferencia es un nombre arbitratio que se le da al remote para referenciarlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add nombreReferencia username@host:/path/to/nombreRepositorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener archivos de remote===&lt;br /&gt;
El siguiente comando obtiene los archivos desde un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; ya agregado &amp;#039;&amp;#039;&amp;#039;pero&amp;#039;&amp;#039;&amp;#039; no los deja en el directorio de trabajo, quedan &amp;quot;escondidos&amp;quot; en la base de datos de Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git fetch nombreReferencia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mezclar lo obtenido en el directorio actual===&lt;br /&gt;
Este comando mezcla la rama de nombreReferencia al directorio actual ([http://stackoverflow.com/questions/3419658/understanding-git-fetch-then-merge más info en stackoverflow]).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git merge nombreReferencia/rama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener y Mezclar (merge) archivos de remote===&lt;br /&gt;
Se obtienen los archivos y luego se mezclan con lo que hay en el directorio de trabajo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git pull nombreReferencia HEAD # Si no especifico HEAD me pide una versión&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subir cambios a remote===&lt;br /&gt;
Se suben los cambios al &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; origin en la branch (rama) master.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push origin master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Listar remotes===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin&lt;br /&gt;
ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos con URLs&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin	/gitExample2/../gitExample (fetch)&lt;br /&gt;
origin	/gitExample2/../gitExample (push)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (fetch)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (push)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener información de un remote===&lt;br /&gt;
Con este comando se obtiene la información del &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; y de las &amp;#039;&amp;#039;branches&amp;#039;&amp;#039; (ramas) que se están &amp;#039;&amp;#039;tracking&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote show ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Renombre remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rename nombreViejo nombreNuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rm remoteName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Otras páginas utiles adentro del Wiki==&lt;br /&gt;
* [[Git, Branching]], &amp;#039;&amp;#039;branching&amp;#039;&amp;#039; es una forma de llevar el desarrollo por diferentes caminos sin que se pisen entre ellos.&lt;br /&gt;
* [[Git, Tagging]], el &amp;#039;&amp;#039;tagging&amp;#039;&amp;#039; sirve para referenciar diferentes &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; en el tiempo.&lt;br /&gt;
* [[Git, Stashing]], el &amp;#039;&amp;#039;stashing&amp;#039;&amp;#039; sirve para limpiar las modificaciones actuales en el espacio de trabajo y guardarlas temporalmente fuera de vista. Se pueden recuperar luego.&lt;br /&gt;
&lt;br /&gt;
==Links útiles==&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Auto-Completion Hacer que Git autocomplete]&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Git-Aliases Hacer alias para comandos]&lt;br /&gt;
&lt;br /&gt;
==Más información==&lt;br /&gt;
* [https://na1.salesforce.com/help/pdfs/en/salesforce_git_developer_cheatsheet.pdf Git Cheat Sheet]&lt;br /&gt;
* [http://ndpsoftware.com/git-cheatsheet.html Git Cheatsheet • NDP Software]&lt;br /&gt;
* [http://git-scm.com/book/en/ Libro Oficial]&lt;br /&gt;
* [http://rogerdudler.github.io/git-guide/ git - the simple guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=297</id>
		<title>Git, lo Básico</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=297"/>
		<updated>2014-04-25T18:43:56Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Configurar autocompletación en Terminal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contexto==&lt;br /&gt;
&lt;br /&gt;
===Los Estados de los archivos===&lt;br /&gt;
Los archivos adentro de una carpeta que usa Git pueden estar &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; o no, esto significa que están asociados al control de versión o no. Los archivos &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; pueden estar en uno de tres estados:&lt;br /&gt;
&lt;br /&gt;
;&amp;#039;&amp;#039;Commited&amp;#039;&amp;#039; (&amp;quot;Comprometido&amp;quot;)&lt;br /&gt;
:El archivos ya quedó guardado en la base de datos local.&lt;br /&gt;
;Modified (Modificado)&lt;br /&gt;
:El archivo se ha modificado pero no se ha &amp;#039;&amp;#039;commited&amp;#039;&amp;#039; (&amp;#039;&amp;#039;comprometido&amp;#039;&amp;#039;) aún.&lt;br /&gt;
;&amp;#039;&amp;#039;Staged&amp;#039;&amp;#039; (&amp;quot;En Escenario&amp;quot;)&lt;br /&gt;
:Se ha marcado el archivo para agregarlo al próximo commit.&lt;br /&gt;
&lt;br /&gt;
===Un flujo común de Git===&lt;br /&gt;
# Se obtiene el proyecto desde un directorio de git&lt;br /&gt;
# Se modifican archivos&lt;br /&gt;
# Se preparan para el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, se hacen &amp;#039;&amp;#039;staged&amp;#039;&amp;#039;&lt;br /&gt;
# Se hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[File:18333fig0106-tn.png|300px|thumb|none|Flujo común de Git]]&lt;br /&gt;
&lt;br /&gt;
==Instalar Git==&lt;br /&gt;
===Obtener Git===&lt;br /&gt;
Git se puede instalar desde diferentes fuentes, [http://git-scm.com/downloads esta] es la oficial. Desde ahí se pueden descargar los comandos y clientes gráficos.&lt;br /&gt;
&lt;br /&gt;
Además hay más programas en Internet que se pueden usar para trabajar con Git. Por ejemplo NetBeans lo soporta.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039;: Es posible que Git ya esté instalado en el sistema. Si se reinstala podría causar algún conflicto. Revisar si está instalado, si la función instalada es suficiente no hacer nada, sino buscar la forma de instalar la versión deseada.&lt;br /&gt;
&lt;br /&gt;
===Configuración===&lt;br /&gt;
Antes de empezar a usar Git se configuran algunas variables para el uso de un usuario. Estas variables se usan para guardar en los repositorios información de quien hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y configurar cosas como el editor a usar. Quedan almacenadas en uno de tres directorios, ordenados por relevancia siendo más relevante el último:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/gitconfig&amp;lt;/code&amp;gt; contiene configuración para todos los usuarios del sistema en todos los repositorios&lt;br /&gt;
* &amp;lt;code&amp;gt;~/.gitconfig&amp;lt;/code&amp;gt; contiene configuración para el usuario actual&lt;br /&gt;
* &amp;lt;code&amp;gt;.git/config&amp;lt;/code&amp;gt; contiene configuración para el repositorio en el que se está trabajando actualmente&lt;br /&gt;
&lt;br /&gt;
A continuación algunas configuraciones básicas pero existen más configuraciones no documentadas aquí:&lt;br /&gt;
&lt;br /&gt;
====Configuración Personal====&lt;br /&gt;
Esta información se usa a la hora de hacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;John Flat&amp;quot;	     # Setea el nombre del usuario&lt;br /&gt;
git config --global user.email john.flat@empresa.com # Setea el mail del usuario&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuración Ambiente de Trabajo====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.editor emacs  # Setea el editor por defecto&lt;br /&gt;
git config --global merge.tool vimdiff # Setea el visualizador de diferencias&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Revisar configuraciones====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --list    # Lista todas las configuraciones, pueden repetirse si se repiten en varios archivos de configuración&lt;br /&gt;
git config {key}     # Muestra el valor de una variable en específico&lt;br /&gt;
git config user.name # Muestra el valor del nombre de usuario guardado en la configuración&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configurar autocompletación en Terminal====&lt;br /&gt;
&lt;br /&gt;
Necesario para SO Macintosh (Ubuntu viene por defecto).&lt;br /&gt;
&lt;br /&gt;
#Agregar el archivo &amp;#039;&amp;#039;&amp;#039;git-completion.bash&amp;#039;&amp;#039;&amp;#039; al home.&lt;br /&gt;
&lt;br /&gt;
Descargar:&amp;lt;br&amp;gt;&lt;br /&gt;
Opción 1 (github.com): https://github.com/git/git/blob/master/contrib/completion/git-completion.bash &amp;lt;br&amp;gt;&lt;br /&gt;
Opción 2 (Wiki): [[Media:Git-completion.bash.zip | Git-completion.bash version 2.0 ]]&lt;br /&gt;
&lt;br /&gt;
#Modificar el archivo &amp;#039;&amp;#039;&amp;#039;.profile&amp;#039;&amp;#039;&amp;#039; por terminal.&lt;br /&gt;
&amp;lt;styleheightlight lang=&amp;#039;bash&amp;#039;&amp;gt;&lt;br /&gt;
vim ~/.profile &lt;br /&gt;
&amp;lt;/styleheighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#Agregar &amp;#039;&amp;#039;&amp;#039;source ~/git-completion.bash&amp;#039;&amp;#039;&amp;#039; al principio del archivo.&lt;br /&gt;
&amp;lt;styleheightlight lang=&amp;#039;bash&amp;#039;&amp;gt;&lt;br /&gt;
source ~/git-completion.bash&lt;br /&gt;
&lt;br /&gt;
# MacPorts Installer addition on 2014-03-26_at_11:37:57: adding an appropriate PATH variable for use with MacPorts.&lt;br /&gt;
export PATH=/opt/local/bin:/opt/local/sbin:$PATH&lt;br /&gt;
# Finished adapting your PATH environment variable for use with MacPorts.&lt;br /&gt;
&amp;lt;/styleheighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Instalar en un servidor===&lt;br /&gt;
Instalar en un servidor es sencillo conceptualmente. Hay que permitir acceso a un directorio con un proyecto Git. El directorio es igual al que hay en un proyecto localmente. También hay que definir para cada usuario si puede hacer &amp;#039;&amp;#039;pull&amp;#039;&amp;#039; y &amp;#039;&amp;#039;push&amp;#039;&amp;#039;. Para esto, una forma sencilla de hacerlo es usando acceso SSH (aunque existen otra formas, ver &amp;#039;&amp;#039;[http://gitolite.com/3-server-usage/git-server.html setting up your own git server]&amp;#039;&amp;#039;), de esta forma también se le puede dar permiso al usuario de lectura y escritura.&lt;br /&gt;
&lt;br /&gt;
Para crear el repositorio hay que ingresar al servidor remoto y ejecutar algunos comandos. Lo siguiente es un ejemplo, la ubicación y el nombre del proyecto pueden cambiar. Por convención se usa el nombre de la carpeta del proyecto con &amp;#039;&amp;#039;.git&amp;#039;&amp;#039;. El comando &amp;lt;code&amp;gt;--bare&amp;lt;/code&amp;gt;, al inicializar el proyecto, indica que se crea sin la estructura de directorio de trabajo, este directorio queda con archivos como los que quedan adentro de la carpeta .git de un repositorio de trabajo local.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git	  # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
mkdir project.git # Se crea una carpeta donde va a quedar el repositorio&lt;br /&gt;
cd project.git    # Se ingresa a la carpeta del proyecto&lt;br /&gt;
git --bare init   # Se inicializa el proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Lo mismo del código anterior se puede lograr así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git		     # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
git --bare init project.git  # Se crea el directorio del proyecto y se inicializa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para obtener el repositorio el usuario puede hacer:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone usuario@servidor.com:/directorio/donde/esta/el/proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se desea hacer usuarios que solo puedan interactuar con Git en este servidor, es buena idea dejar que solo usen un &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; desarrollado para este propósito. Esto significa que no pueden moverse a través de los directorios, crear archivos, ver archivos y más. Para esto, hay que editar el archivo &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; (en Ubuntu por ejemplo), en el usuario que solo va a usar Git, pasar de esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/bin/sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/usr/bin/git-shell&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para más información de cómo interactuar con el servidor remoto, ver [[Git, Branching]], la sección de &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==Comandos de Ayuda==&lt;br /&gt;
Tres formas de obtener ayuda sobre un &amp;lt;verb&amp;gt; (verbo), es decir una acción de Git:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help &amp;lt;verb&amp;gt;&lt;br /&gt;
git &amp;lt;verb&amp;gt; --help&lt;br /&gt;
man git-&amp;lt;verb&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de ayuda&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help config&lt;br /&gt;
git config --help&lt;br /&gt;
man git-config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Crear Repositorios==&lt;br /&gt;
Formas de hacer que un proyecto tenga manejo de versiones usando Git. Todas las formas incluyen un directorio .git que guarda la información de versiones.&lt;br /&gt;
&lt;br /&gt;
===Empezar un proyecto con Git===&lt;br /&gt;
Se crea un directorio nuevo, se navega hacia él y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir nuevoProyecto # Crear nuevo directorio&lt;br /&gt;
cd nuevoProyecto    # Navegar a directorio&lt;br /&gt;
git init	    # Inicializar Git&lt;br /&gt;
touch x		    # Crea un archivo &amp;quot;x&amp;quot; vacío&lt;br /&gt;
git add x	    # Se pasa &amp;quot;x&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, solo un archivo en blanco&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar Git a un proyecto existente===&lt;br /&gt;
Se navega al directorio donde está el proyecto exitente y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd proyectoExistente	 # Se navega al proyecto existente&lt;br /&gt;
git init		 # Inicializar Git&lt;br /&gt;
git add archivoExistente # Se pasa &amp;quot;archivoExistente&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, se agrega archivo existente&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener un proyecto desde una fuente existente===&lt;br /&gt;
Se obtiene una copia del repositorio y se guarda en una carpeta con el nombre del repositorio.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone [url]				    # Forma genérica&lt;br /&gt;
git clone /path/to/repository		    # Obtener copia localmente&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ignorar archivos==&lt;br /&gt;
&lt;br /&gt;
===.gitignore===&lt;br /&gt;
Git puede ignorar algunos archivos, esto se hace manualmente editando (creando) el archivo &amp;#039;&amp;#039;.gitignore&amp;#039;&amp;#039;. A continuación un ejemplo de este archivo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Esto es un comentario que empieza con &amp;#039;#&amp;#039;&lt;br /&gt;
# Omitir todos los archivos que terminan con .log&lt;br /&gt;
*.log&lt;br /&gt;
# Pero track super.log usando la negación&lt;br /&gt;
!super.log&lt;br /&gt;
# Ignorar la carpeta LOG, si existe una carpeta LOG adentro de otra carpeta no se va a ignorar&lt;br /&gt;
/LOG&lt;br /&gt;
# Ignorar todos los archivos en la carpeta error&lt;br /&gt;
error/&lt;br /&gt;
# Ignorar los archivos .txt adentro de la carpeta media&lt;br /&gt;
media/*.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Asumir que algún archivo no ha cambiado===&lt;br /&gt;
El siguiente comando hace que Git no tome en cuenta los cambios del archivo en cuestión.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para deshacer esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --no-assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Local==&lt;br /&gt;
&lt;br /&gt;
===Proceso de guardado de archivos (commit)===&lt;br /&gt;
Para hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; hay que hacer los siguientes pasos:&lt;br /&gt;
# Agregar (o modificar) archivos (por ejemplo usando un editor de texto)&lt;br /&gt;
# Avisarle a git que tiene que llevar a cabo los cambios, por ejemplo agregando un archivo (&amp;lt;code&amp;gt;git add archivoNuevo&amp;lt;/code&amp;gt;)&lt;br /&gt;
# Hacer el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, git commit -m &amp;lt;nowiki&amp;gt;&amp;#039;texto del commit&amp;#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede hacer el commit así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo # Se agrega el archivo a Git&lt;br /&gt;
git commit           # Se realiza el commit&lt;br /&gt;
# No se le entrega mensaje, con lo que se abre el editor de texto configurado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
O&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo               # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo             # Se agrega el archivo a Git&lt;br /&gt;
git commit -m &amp;#039;texto del commit&amp;#039; # Se realiza el commit&lt;br /&gt;
# Se escribe el mensaje directamente y no se abre un editor de texto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siempre es necesario incluir un mensaje en el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; ya que esto permite revisar el historial de lo que se haya hecho antes. De esta forma se puede tener una imagen bastante clara de la evolución del proyecto.&lt;br /&gt;
&lt;br /&gt;
===Hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; viendo las diferencias en los archivos===&lt;br /&gt;
Lo siguiente muestra el editor de texto para agregar un mensaje, en los comentarios muestra los archivos modificados (comportamiento por defecto) y adicionalmente muestra las diferencias en los archivos (&amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Track nuevos archivos===&lt;br /&gt;
Se dice que un archivo está siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; cuando Git lo toma en cuenta. Para esto se ejecuta lo siguiente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se crea nuevo archivo vacío&lt;br /&gt;
git add archivoNuevo # Se hace que Git lo agregue&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar archivos al staging area===&lt;br /&gt;
Los archivos modificados no pasan directamente al siguiente &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, hay que pasarlos al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; antes. El comando es el mismo que para agregar archivos nuevos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo nuevaLinea &amp;gt;&amp;gt; archivoYaEnGit # Se le agrega la línea nuevaLinea a un archivo que ya estaba en Git&lt;br /&gt;
git add archivoYaEnGit		  # Se pasa archivo al staging area&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mover (o renombrar) Archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git mv archivoViejoNombre archivoNuevoNombre # También se puede mover adentro de un directorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv archivoViejoNombre archivoNuevoNombre # Se mueve el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoViejoNombre		 # Se borra de Git el del nombre viejo&lt;br /&gt;
git add archivoNuevoNombre		 # Se agrega el del nombre nuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm archivoABorrar&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm archivoABorrar     # Borra el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoABorrar # Le avisa a Git que el archivo va a ser eliminado en el próximo commit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos en el staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm --cached archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar archivos del staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de archivo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -- archivoAResetear&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios en el directorio de trabajo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard   # Deshace cambios del staging area y del directorio de trabajo&lt;br /&gt;
git clean -f -d    # Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039;&lt;br /&gt;
git clean -f -x -d # CUIDADO! Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039; PERO ADEMÁS quita archivos ignorados (.gitignore)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/questions/1090309/git-undo-all-working-dir-changes-including-new-files stackoverflow]&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;===&lt;br /&gt;
Suponiendo que el Git se encuentra en el siguiente estado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
    ↑&lt;br /&gt;
  master&lt;br /&gt;
&lt;br /&gt;
A, B y C son commits. F es el estado del directorio de trabajo. C es el último commit.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Se pueden hacer algunos comandos para deshacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; definitivamente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 (F)&lt;br /&gt;
A-B&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; manteniendo el index (&amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --soft HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/a/6866485 stackoverflow]&lt;br /&gt;
&lt;br /&gt;
Nota: Para resucitar un commit muerto ver la nota en la fuente.&lt;br /&gt;
&lt;br /&gt;
===Hacer cambios al útlimo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; con &amp;#039;&amp;#039;--amend&amp;#039;&amp;#039;===&lt;br /&gt;
Si hay algún archivo que debería haber hecho parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; anterior, se puede agregar con &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;. Un ejemplo de cómo funciona esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m &amp;#039;primer commit&amp;#039; # Commit inicial&lt;br /&gt;
touch nuevoArchivo	      # Se agrega nuevo archivo al directorio&lt;br /&gt;
git add nuevoArchivo          # Se le avisa a Git que hay un nuevo archivo que trackear&lt;br /&gt;
git commit --amend            # Se actualiza el último commit, debería abrir el editor de texto por defecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estado de Archivos===&lt;br /&gt;
&lt;br /&gt;
Para saber el estado de los archivos existen dos comandos posibles: &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====git status====&lt;br /&gt;
Muestra información del estado de los archivos que han cambiado. Puede mostrar archivos &amp;#039;&amp;#039;untracked&amp;#039;&amp;#039;, &amp;#039;&amp;#039;staged&amp;#039;&amp;#039; y &amp;#039;&amp;#039;modified&amp;#039;&amp;#039;. No muestra información de archivos que no han cambiado desde el último &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo sin cambios&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
nothing to commit (working directory clean)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo de diferentes estados&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
En el siguiente ejemplo, &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; ya están siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; y ya hicieron parte del commit anterior; ambos fueron modificados. &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; no se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; por lo que no va a hacer parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;. &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; y se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;archivoC&amp;#039;&amp;#039; es un archivo nuevo que se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoD&amp;#039;&amp;#039; es un archivo nuevo no &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; por Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
# Changes to be committed:&lt;br /&gt;
#   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoB&lt;br /&gt;
#	new file:   archivoC&lt;br /&gt;
#&lt;br /&gt;
# Changes not staged for commit:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
#   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoA&lt;br /&gt;
#&lt;br /&gt;
# Untracked files:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
#&lt;br /&gt;
#	archivoD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====git diff====&lt;br /&gt;
&amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; se usa para ver las diferencias que han tenido los archivos y no solo saber si han cambiado o no. &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; por si sólo muestra las diferencias en archivos que no están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;. Para mostrar los cambios en los archivos que están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; hay que usar el commando con la opción &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;git diff --staged&amp;lt;/code&amp;gt; (para versiones anteriores a 1.6.1 cambiar &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039; por &amp;#039;&amp;#039;--cached&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git diff: ejemplo&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; se agregaron dos líneas con el mismo contenido, el nombre del archivo. En &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó una línea con el nombre del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
diff --git a/archivoA b/archivoA&lt;br /&gt;
index 7898192..c065858 100644&lt;br /&gt;
--- a/archivoA&lt;br /&gt;
+++ b/archivoA&lt;br /&gt;
@@ -1 +1,2 @@&lt;br /&gt;
-a&lt;br /&gt;
+archivoA&lt;br /&gt;
+archivoA&lt;br /&gt;
diff --git a/archivoB b/archivoB&lt;br /&gt;
index 6178079..df239cf 100644&lt;br /&gt;
--- a/archivoB&lt;br /&gt;
+++ b/archivoB&lt;br /&gt;
@@ -1 +1 @@&lt;br /&gt;
-b&lt;br /&gt;
+archivoB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Historial===&lt;br /&gt;
Para ver el historial se usa el comando &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt;. Se puede usar con varios parámetros para obtener un output más preciso. Para obtener más información ver [http://git-scm.com/book/en/Git-Basics-Viewing-the-Commit-History este link] o usar &amp;lt;code&amp;gt;git help log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Algunos parámetros:&lt;br /&gt;
&lt;br /&gt;
;-(n)&lt;br /&gt;
:(n) es la cantidad de &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; a mostrar (ej: &amp;lt;code&amp;gt;git log -3&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--since, --after&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente a partir de cierta fecha (ej: &amp;lt;code&amp;gt;git log --since=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--until, --before&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente desde cierta fecha (ej: &amp;lt;code&amp;gt;git log --until=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--author&lt;br /&gt;
:Se le proporciona a Git el autor para la búsqueda&lt;br /&gt;
;--stat&lt;br /&gt;
:Se muestran los archivos modificados.&lt;br /&gt;
&lt;br /&gt;
==Git Remoto==&lt;br /&gt;
Para poder colaborar en un proyecto, se necesitan servidores remotos, &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
===Crear nuevo proyecto a partir de un remote===&lt;br /&gt;
El siguiente comando crea una carpeta con el proyecto obtenido desde una fuente externa, crea la carpeta .git y obtiene los archivos del proyecto.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar remote===&lt;br /&gt;
El siguiente comando agrega un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto Git actual, esto solo asocia un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto pero no obtiene los archivos. nombreReferencia es un nombre arbitratio que se le da al remote para referenciarlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add nombreReferencia username@host:/path/to/nombreRepositorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener archivos de remote===&lt;br /&gt;
El siguiente comando obtiene los archivos desde un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; ya agregado &amp;#039;&amp;#039;&amp;#039;pero&amp;#039;&amp;#039;&amp;#039; no los deja en el directorio de trabajo, quedan &amp;quot;escondidos&amp;quot; en la base de datos de Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git fetch nombreReferencia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mezclar lo obtenido en el directorio actual===&lt;br /&gt;
Este comando mezcla la rama de nombreReferencia al directorio actual ([http://stackoverflow.com/questions/3419658/understanding-git-fetch-then-merge más info en stackoverflow]).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git merge nombreReferencia/rama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener y Mezclar (merge) archivos de remote===&lt;br /&gt;
Se obtienen los archivos y luego se mezclan con lo que hay en el directorio de trabajo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git pull nombreReferencia HEAD # Si no especifico HEAD me pide una versión&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subir cambios a remote===&lt;br /&gt;
Se suben los cambios al &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; origin en la branch (rama) master.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push origin master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Listar remotes===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin&lt;br /&gt;
ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos con URLs&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin	/gitExample2/../gitExample (fetch)&lt;br /&gt;
origin	/gitExample2/../gitExample (push)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (fetch)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (push)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener información de un remote===&lt;br /&gt;
Con este comando se obtiene la información del &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; y de las &amp;#039;&amp;#039;branches&amp;#039;&amp;#039; (ramas) que se están &amp;#039;&amp;#039;tracking&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote show ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Renombre remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rename nombreViejo nombreNuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rm remoteName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Otras páginas utiles adentro del Wiki==&lt;br /&gt;
* [[Git, Branching]], &amp;#039;&amp;#039;branching&amp;#039;&amp;#039; es una forma de llevar el desarrollo por diferentes caminos sin que se pisen entre ellos.&lt;br /&gt;
* [[Git, Tagging]], el &amp;#039;&amp;#039;tagging&amp;#039;&amp;#039; sirve para referenciar diferentes &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; en el tiempo.&lt;br /&gt;
* [[Git, Stashing]], el &amp;#039;&amp;#039;stashing&amp;#039;&amp;#039; sirve para limpiar las modificaciones actuales en el espacio de trabajo y guardarlas temporalmente fuera de vista. Se pueden recuperar luego.&lt;br /&gt;
&lt;br /&gt;
==Links útiles==&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Auto-Completion Hacer que Git autocomplete]&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Git-Aliases Hacer alias para comandos]&lt;br /&gt;
&lt;br /&gt;
==Más información==&lt;br /&gt;
* [https://na1.salesforce.com/help/pdfs/en/salesforce_git_developer_cheatsheet.pdf Git Cheat Sheet]&lt;br /&gt;
* [http://ndpsoftware.com/git-cheatsheet.html Git Cheatsheet • NDP Software]&lt;br /&gt;
* [http://git-scm.com/book/en/ Libro Oficial]&lt;br /&gt;
* [http://rogerdudler.github.io/git-guide/ git - the simple guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=296</id>
		<title>Git, lo Básico</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=296"/>
		<updated>2014-04-25T18:38:59Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Configurar autocompletación en Terminal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contexto==&lt;br /&gt;
&lt;br /&gt;
===Los Estados de los archivos===&lt;br /&gt;
Los archivos adentro de una carpeta que usa Git pueden estar &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; o no, esto significa que están asociados al control de versión o no. Los archivos &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; pueden estar en uno de tres estados:&lt;br /&gt;
&lt;br /&gt;
;&amp;#039;&amp;#039;Commited&amp;#039;&amp;#039; (&amp;quot;Comprometido&amp;quot;)&lt;br /&gt;
:El archivos ya quedó guardado en la base de datos local.&lt;br /&gt;
;Modified (Modificado)&lt;br /&gt;
:El archivo se ha modificado pero no se ha &amp;#039;&amp;#039;commited&amp;#039;&amp;#039; (&amp;#039;&amp;#039;comprometido&amp;#039;&amp;#039;) aún.&lt;br /&gt;
;&amp;#039;&amp;#039;Staged&amp;#039;&amp;#039; (&amp;quot;En Escenario&amp;quot;)&lt;br /&gt;
:Se ha marcado el archivo para agregarlo al próximo commit.&lt;br /&gt;
&lt;br /&gt;
===Un flujo común de Git===&lt;br /&gt;
# Se obtiene el proyecto desde un directorio de git&lt;br /&gt;
# Se modifican archivos&lt;br /&gt;
# Se preparan para el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, se hacen &amp;#039;&amp;#039;staged&amp;#039;&amp;#039;&lt;br /&gt;
# Se hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[File:18333fig0106-tn.png|300px|thumb|none|Flujo común de Git]]&lt;br /&gt;
&lt;br /&gt;
==Instalar Git==&lt;br /&gt;
===Obtener Git===&lt;br /&gt;
Git se puede instalar desde diferentes fuentes, [http://git-scm.com/downloads esta] es la oficial. Desde ahí se pueden descargar los comandos y clientes gráficos.&lt;br /&gt;
&lt;br /&gt;
Además hay más programas en Internet que se pueden usar para trabajar con Git. Por ejemplo NetBeans lo soporta.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039;: Es posible que Git ya esté instalado en el sistema. Si se reinstala podría causar algún conflicto. Revisar si está instalado, si la función instalada es suficiente no hacer nada, sino buscar la forma de instalar la versión deseada.&lt;br /&gt;
&lt;br /&gt;
===Configuración===&lt;br /&gt;
Antes de empezar a usar Git se configuran algunas variables para el uso de un usuario. Estas variables se usan para guardar en los repositorios información de quien hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y configurar cosas como el editor a usar. Quedan almacenadas en uno de tres directorios, ordenados por relevancia siendo más relevante el último:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/gitconfig&amp;lt;/code&amp;gt; contiene configuración para todos los usuarios del sistema en todos los repositorios&lt;br /&gt;
* &amp;lt;code&amp;gt;~/.gitconfig&amp;lt;/code&amp;gt; contiene configuración para el usuario actual&lt;br /&gt;
* &amp;lt;code&amp;gt;.git/config&amp;lt;/code&amp;gt; contiene configuración para el repositorio en el que se está trabajando actualmente&lt;br /&gt;
&lt;br /&gt;
A continuación algunas configuraciones básicas pero existen más configuraciones no documentadas aquí:&lt;br /&gt;
&lt;br /&gt;
====Configuración Personal====&lt;br /&gt;
Esta información se usa a la hora de hacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;John Flat&amp;quot;	     # Setea el nombre del usuario&lt;br /&gt;
git config --global user.email john.flat@empresa.com # Setea el mail del usuario&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuración Ambiente de Trabajo====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.editor emacs  # Setea el editor por defecto&lt;br /&gt;
git config --global merge.tool vimdiff # Setea el visualizador de diferencias&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Revisar configuraciones====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --list    # Lista todas las configuraciones, pueden repetirse si se repiten en varios archivos de configuración&lt;br /&gt;
git config {key}     # Muestra el valor de una variable en específico&lt;br /&gt;
git config user.name # Muestra el valor del nombre de usuario guardado en la configuración&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configurar autocompletación en Terminal====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Necesario para SO Macintosh.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Agregar el siguiente archivo al home.&lt;br /&gt;
&lt;br /&gt;
Descargar:&amp;lt;br&amp;gt;&lt;br /&gt;
Opción 1 (github.com): https://github.com/git/git/blob/master/contrib/completion/git-completion.bash &amp;lt;br&amp;gt;&lt;br /&gt;
Opción 2 (Wiki): [[Media:Git-completion.bash.zip | Git-completion.bash version 2.0 ]]&lt;br /&gt;
&lt;br /&gt;
===Instalar en un servidor===&lt;br /&gt;
Instalar en un servidor es sencillo conceptualmente. Hay que permitir acceso a un directorio con un proyecto Git. El directorio es igual al que hay en un proyecto localmente. También hay que definir para cada usuario si puede hacer &amp;#039;&amp;#039;pull&amp;#039;&amp;#039; y &amp;#039;&amp;#039;push&amp;#039;&amp;#039;. Para esto, una forma sencilla de hacerlo es usando acceso SSH (aunque existen otra formas, ver &amp;#039;&amp;#039;[http://gitolite.com/3-server-usage/git-server.html setting up your own git server]&amp;#039;&amp;#039;), de esta forma también se le puede dar permiso al usuario de lectura y escritura.&lt;br /&gt;
&lt;br /&gt;
Para crear el repositorio hay que ingresar al servidor remoto y ejecutar algunos comandos. Lo siguiente es un ejemplo, la ubicación y el nombre del proyecto pueden cambiar. Por convención se usa el nombre de la carpeta del proyecto con &amp;#039;&amp;#039;.git&amp;#039;&amp;#039;. El comando &amp;lt;code&amp;gt;--bare&amp;lt;/code&amp;gt;, al inicializar el proyecto, indica que se crea sin la estructura de directorio de trabajo, este directorio queda con archivos como los que quedan adentro de la carpeta .git de un repositorio de trabajo local.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git	  # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
mkdir project.git # Se crea una carpeta donde va a quedar el repositorio&lt;br /&gt;
cd project.git    # Se ingresa a la carpeta del proyecto&lt;br /&gt;
git --bare init   # Se inicializa el proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Lo mismo del código anterior se puede lograr así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git		     # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
git --bare init project.git  # Se crea el directorio del proyecto y se inicializa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para obtener el repositorio el usuario puede hacer:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone usuario@servidor.com:/directorio/donde/esta/el/proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se desea hacer usuarios que solo puedan interactuar con Git en este servidor, es buena idea dejar que solo usen un &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; desarrollado para este propósito. Esto significa que no pueden moverse a través de los directorios, crear archivos, ver archivos y más. Para esto, hay que editar el archivo &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; (en Ubuntu por ejemplo), en el usuario que solo va a usar Git, pasar de esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/bin/sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/usr/bin/git-shell&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para más información de cómo interactuar con el servidor remoto, ver [[Git, Branching]], la sección de &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==Comandos de Ayuda==&lt;br /&gt;
Tres formas de obtener ayuda sobre un &amp;lt;verb&amp;gt; (verbo), es decir una acción de Git:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help &amp;lt;verb&amp;gt;&lt;br /&gt;
git &amp;lt;verb&amp;gt; --help&lt;br /&gt;
man git-&amp;lt;verb&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de ayuda&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help config&lt;br /&gt;
git config --help&lt;br /&gt;
man git-config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Crear Repositorios==&lt;br /&gt;
Formas de hacer que un proyecto tenga manejo de versiones usando Git. Todas las formas incluyen un directorio .git que guarda la información de versiones.&lt;br /&gt;
&lt;br /&gt;
===Empezar un proyecto con Git===&lt;br /&gt;
Se crea un directorio nuevo, se navega hacia él y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir nuevoProyecto # Crear nuevo directorio&lt;br /&gt;
cd nuevoProyecto    # Navegar a directorio&lt;br /&gt;
git init	    # Inicializar Git&lt;br /&gt;
touch x		    # Crea un archivo &amp;quot;x&amp;quot; vacío&lt;br /&gt;
git add x	    # Se pasa &amp;quot;x&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, solo un archivo en blanco&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar Git a un proyecto existente===&lt;br /&gt;
Se navega al directorio donde está el proyecto exitente y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd proyectoExistente	 # Se navega al proyecto existente&lt;br /&gt;
git init		 # Inicializar Git&lt;br /&gt;
git add archivoExistente # Se pasa &amp;quot;archivoExistente&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, se agrega archivo existente&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener un proyecto desde una fuente existente===&lt;br /&gt;
Se obtiene una copia del repositorio y se guarda en una carpeta con el nombre del repositorio.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone [url]				    # Forma genérica&lt;br /&gt;
git clone /path/to/repository		    # Obtener copia localmente&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ignorar archivos==&lt;br /&gt;
&lt;br /&gt;
===.gitignore===&lt;br /&gt;
Git puede ignorar algunos archivos, esto se hace manualmente editando (creando) el archivo &amp;#039;&amp;#039;.gitignore&amp;#039;&amp;#039;. A continuación un ejemplo de este archivo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Esto es un comentario que empieza con &amp;#039;#&amp;#039;&lt;br /&gt;
# Omitir todos los archivos que terminan con .log&lt;br /&gt;
*.log&lt;br /&gt;
# Pero track super.log usando la negación&lt;br /&gt;
!super.log&lt;br /&gt;
# Ignorar la carpeta LOG, si existe una carpeta LOG adentro de otra carpeta no se va a ignorar&lt;br /&gt;
/LOG&lt;br /&gt;
# Ignorar todos los archivos en la carpeta error&lt;br /&gt;
error/&lt;br /&gt;
# Ignorar los archivos .txt adentro de la carpeta media&lt;br /&gt;
media/*.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Asumir que algún archivo no ha cambiado===&lt;br /&gt;
El siguiente comando hace que Git no tome en cuenta los cambios del archivo en cuestión.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para deshacer esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --no-assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Local==&lt;br /&gt;
&lt;br /&gt;
===Proceso de guardado de archivos (commit)===&lt;br /&gt;
Para hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; hay que hacer los siguientes pasos:&lt;br /&gt;
# Agregar (o modificar) archivos (por ejemplo usando un editor de texto)&lt;br /&gt;
# Avisarle a git que tiene que llevar a cabo los cambios, por ejemplo agregando un archivo (&amp;lt;code&amp;gt;git add archivoNuevo&amp;lt;/code&amp;gt;)&lt;br /&gt;
# Hacer el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, git commit -m &amp;lt;nowiki&amp;gt;&amp;#039;texto del commit&amp;#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede hacer el commit así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo # Se agrega el archivo a Git&lt;br /&gt;
git commit           # Se realiza el commit&lt;br /&gt;
# No se le entrega mensaje, con lo que se abre el editor de texto configurado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
O&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo               # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo             # Se agrega el archivo a Git&lt;br /&gt;
git commit -m &amp;#039;texto del commit&amp;#039; # Se realiza el commit&lt;br /&gt;
# Se escribe el mensaje directamente y no se abre un editor de texto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siempre es necesario incluir un mensaje en el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; ya que esto permite revisar el historial de lo que se haya hecho antes. De esta forma se puede tener una imagen bastante clara de la evolución del proyecto.&lt;br /&gt;
&lt;br /&gt;
===Hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; viendo las diferencias en los archivos===&lt;br /&gt;
Lo siguiente muestra el editor de texto para agregar un mensaje, en los comentarios muestra los archivos modificados (comportamiento por defecto) y adicionalmente muestra las diferencias en los archivos (&amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Track nuevos archivos===&lt;br /&gt;
Se dice que un archivo está siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; cuando Git lo toma en cuenta. Para esto se ejecuta lo siguiente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se crea nuevo archivo vacío&lt;br /&gt;
git add archivoNuevo # Se hace que Git lo agregue&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar archivos al staging area===&lt;br /&gt;
Los archivos modificados no pasan directamente al siguiente &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, hay que pasarlos al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; antes. El comando es el mismo que para agregar archivos nuevos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo nuevaLinea &amp;gt;&amp;gt; archivoYaEnGit # Se le agrega la línea nuevaLinea a un archivo que ya estaba en Git&lt;br /&gt;
git add archivoYaEnGit		  # Se pasa archivo al staging area&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mover (o renombrar) Archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git mv archivoViejoNombre archivoNuevoNombre # También se puede mover adentro de un directorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv archivoViejoNombre archivoNuevoNombre # Se mueve el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoViejoNombre		 # Se borra de Git el del nombre viejo&lt;br /&gt;
git add archivoNuevoNombre		 # Se agrega el del nombre nuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm archivoABorrar&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm archivoABorrar     # Borra el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoABorrar # Le avisa a Git que el archivo va a ser eliminado en el próximo commit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos en el staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm --cached archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar archivos del staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de archivo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -- archivoAResetear&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios en el directorio de trabajo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard   # Deshace cambios del staging area y del directorio de trabajo&lt;br /&gt;
git clean -f -d    # Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039;&lt;br /&gt;
git clean -f -x -d # CUIDADO! Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039; PERO ADEMÁS quita archivos ignorados (.gitignore)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/questions/1090309/git-undo-all-working-dir-changes-including-new-files stackoverflow]&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;===&lt;br /&gt;
Suponiendo que el Git se encuentra en el siguiente estado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
    ↑&lt;br /&gt;
  master&lt;br /&gt;
&lt;br /&gt;
A, B y C son commits. F es el estado del directorio de trabajo. C es el último commit.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Se pueden hacer algunos comandos para deshacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; definitivamente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 (F)&lt;br /&gt;
A-B&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; manteniendo el index (&amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --soft HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/a/6866485 stackoverflow]&lt;br /&gt;
&lt;br /&gt;
Nota: Para resucitar un commit muerto ver la nota en la fuente.&lt;br /&gt;
&lt;br /&gt;
===Hacer cambios al útlimo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; con &amp;#039;&amp;#039;--amend&amp;#039;&amp;#039;===&lt;br /&gt;
Si hay algún archivo que debería haber hecho parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; anterior, se puede agregar con &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;. Un ejemplo de cómo funciona esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m &amp;#039;primer commit&amp;#039; # Commit inicial&lt;br /&gt;
touch nuevoArchivo	      # Se agrega nuevo archivo al directorio&lt;br /&gt;
git add nuevoArchivo          # Se le avisa a Git que hay un nuevo archivo que trackear&lt;br /&gt;
git commit --amend            # Se actualiza el último commit, debería abrir el editor de texto por defecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estado de Archivos===&lt;br /&gt;
&lt;br /&gt;
Para saber el estado de los archivos existen dos comandos posibles: &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====git status====&lt;br /&gt;
Muestra información del estado de los archivos que han cambiado. Puede mostrar archivos &amp;#039;&amp;#039;untracked&amp;#039;&amp;#039;, &amp;#039;&amp;#039;staged&amp;#039;&amp;#039; y &amp;#039;&amp;#039;modified&amp;#039;&amp;#039;. No muestra información de archivos que no han cambiado desde el último &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo sin cambios&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
nothing to commit (working directory clean)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo de diferentes estados&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
En el siguiente ejemplo, &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; ya están siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; y ya hicieron parte del commit anterior; ambos fueron modificados. &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; no se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; por lo que no va a hacer parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;. &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; y se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;archivoC&amp;#039;&amp;#039; es un archivo nuevo que se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoD&amp;#039;&amp;#039; es un archivo nuevo no &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; por Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
# Changes to be committed:&lt;br /&gt;
#   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoB&lt;br /&gt;
#	new file:   archivoC&lt;br /&gt;
#&lt;br /&gt;
# Changes not staged for commit:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
#   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoA&lt;br /&gt;
#&lt;br /&gt;
# Untracked files:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
#&lt;br /&gt;
#	archivoD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====git diff====&lt;br /&gt;
&amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; se usa para ver las diferencias que han tenido los archivos y no solo saber si han cambiado o no. &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; por si sólo muestra las diferencias en archivos que no están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;. Para mostrar los cambios en los archivos que están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; hay que usar el commando con la opción &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;git diff --staged&amp;lt;/code&amp;gt; (para versiones anteriores a 1.6.1 cambiar &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039; por &amp;#039;&amp;#039;--cached&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git diff: ejemplo&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; se agregaron dos líneas con el mismo contenido, el nombre del archivo. En &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó una línea con el nombre del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
diff --git a/archivoA b/archivoA&lt;br /&gt;
index 7898192..c065858 100644&lt;br /&gt;
--- a/archivoA&lt;br /&gt;
+++ b/archivoA&lt;br /&gt;
@@ -1 +1,2 @@&lt;br /&gt;
-a&lt;br /&gt;
+archivoA&lt;br /&gt;
+archivoA&lt;br /&gt;
diff --git a/archivoB b/archivoB&lt;br /&gt;
index 6178079..df239cf 100644&lt;br /&gt;
--- a/archivoB&lt;br /&gt;
+++ b/archivoB&lt;br /&gt;
@@ -1 +1 @@&lt;br /&gt;
-b&lt;br /&gt;
+archivoB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Historial===&lt;br /&gt;
Para ver el historial se usa el comando &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt;. Se puede usar con varios parámetros para obtener un output más preciso. Para obtener más información ver [http://git-scm.com/book/en/Git-Basics-Viewing-the-Commit-History este link] o usar &amp;lt;code&amp;gt;git help log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Algunos parámetros:&lt;br /&gt;
&lt;br /&gt;
;-(n)&lt;br /&gt;
:(n) es la cantidad de &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; a mostrar (ej: &amp;lt;code&amp;gt;git log -3&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--since, --after&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente a partir de cierta fecha (ej: &amp;lt;code&amp;gt;git log --since=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--until, --before&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente desde cierta fecha (ej: &amp;lt;code&amp;gt;git log --until=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--author&lt;br /&gt;
:Se le proporciona a Git el autor para la búsqueda&lt;br /&gt;
;--stat&lt;br /&gt;
:Se muestran los archivos modificados.&lt;br /&gt;
&lt;br /&gt;
==Git Remoto==&lt;br /&gt;
Para poder colaborar en un proyecto, se necesitan servidores remotos, &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
===Crear nuevo proyecto a partir de un remote===&lt;br /&gt;
El siguiente comando crea una carpeta con el proyecto obtenido desde una fuente externa, crea la carpeta .git y obtiene los archivos del proyecto.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar remote===&lt;br /&gt;
El siguiente comando agrega un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto Git actual, esto solo asocia un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto pero no obtiene los archivos. nombreReferencia es un nombre arbitratio que se le da al remote para referenciarlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add nombreReferencia username@host:/path/to/nombreRepositorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener archivos de remote===&lt;br /&gt;
El siguiente comando obtiene los archivos desde un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; ya agregado &amp;#039;&amp;#039;&amp;#039;pero&amp;#039;&amp;#039;&amp;#039; no los deja en el directorio de trabajo, quedan &amp;quot;escondidos&amp;quot; en la base de datos de Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git fetch nombreReferencia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mezclar lo obtenido en el directorio actual===&lt;br /&gt;
Este comando mezcla la rama de nombreReferencia al directorio actual ([http://stackoverflow.com/questions/3419658/understanding-git-fetch-then-merge más info en stackoverflow]).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git merge nombreReferencia/rama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener y Mezclar (merge) archivos de remote===&lt;br /&gt;
Se obtienen los archivos y luego se mezclan con lo que hay en el directorio de trabajo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git pull nombreReferencia HEAD # Si no especifico HEAD me pide una versión&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subir cambios a remote===&lt;br /&gt;
Se suben los cambios al &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; origin en la branch (rama) master.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push origin master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Listar remotes===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin&lt;br /&gt;
ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos con URLs&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin	/gitExample2/../gitExample (fetch)&lt;br /&gt;
origin	/gitExample2/../gitExample (push)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (fetch)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (push)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener información de un remote===&lt;br /&gt;
Con este comando se obtiene la información del &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; y de las &amp;#039;&amp;#039;branches&amp;#039;&amp;#039; (ramas) que se están &amp;#039;&amp;#039;tracking&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote show ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Renombre remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rename nombreViejo nombreNuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rm remoteName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Otras páginas utiles adentro del Wiki==&lt;br /&gt;
* [[Git, Branching]], &amp;#039;&amp;#039;branching&amp;#039;&amp;#039; es una forma de llevar el desarrollo por diferentes caminos sin que se pisen entre ellos.&lt;br /&gt;
* [[Git, Tagging]], el &amp;#039;&amp;#039;tagging&amp;#039;&amp;#039; sirve para referenciar diferentes &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; en el tiempo.&lt;br /&gt;
* [[Git, Stashing]], el &amp;#039;&amp;#039;stashing&amp;#039;&amp;#039; sirve para limpiar las modificaciones actuales en el espacio de trabajo y guardarlas temporalmente fuera de vista. Se pueden recuperar luego.&lt;br /&gt;
&lt;br /&gt;
==Links útiles==&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Auto-Completion Hacer que Git autocomplete]&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Git-Aliases Hacer alias para comandos]&lt;br /&gt;
&lt;br /&gt;
==Más información==&lt;br /&gt;
* [https://na1.salesforce.com/help/pdfs/en/salesforce_git_developer_cheatsheet.pdf Git Cheat Sheet]&lt;br /&gt;
* [http://ndpsoftware.com/git-cheatsheet.html Git Cheatsheet • NDP Software]&lt;br /&gt;
* [http://git-scm.com/book/en/ Libro Oficial]&lt;br /&gt;
* [http://rogerdudler.github.io/git-guide/ git - the simple guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=295</id>
		<title>Git, lo Básico</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=295"/>
		<updated>2014-04-25T18:37:04Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Configurar autocompletación en Terminal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contexto==&lt;br /&gt;
&lt;br /&gt;
===Los Estados de los archivos===&lt;br /&gt;
Los archivos adentro de una carpeta que usa Git pueden estar &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; o no, esto significa que están asociados al control de versión o no. Los archivos &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; pueden estar en uno de tres estados:&lt;br /&gt;
&lt;br /&gt;
;&amp;#039;&amp;#039;Commited&amp;#039;&amp;#039; (&amp;quot;Comprometido&amp;quot;)&lt;br /&gt;
:El archivos ya quedó guardado en la base de datos local.&lt;br /&gt;
;Modified (Modificado)&lt;br /&gt;
:El archivo se ha modificado pero no se ha &amp;#039;&amp;#039;commited&amp;#039;&amp;#039; (&amp;#039;&amp;#039;comprometido&amp;#039;&amp;#039;) aún.&lt;br /&gt;
;&amp;#039;&amp;#039;Staged&amp;#039;&amp;#039; (&amp;quot;En Escenario&amp;quot;)&lt;br /&gt;
:Se ha marcado el archivo para agregarlo al próximo commit.&lt;br /&gt;
&lt;br /&gt;
===Un flujo común de Git===&lt;br /&gt;
# Se obtiene el proyecto desde un directorio de git&lt;br /&gt;
# Se modifican archivos&lt;br /&gt;
# Se preparan para el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, se hacen &amp;#039;&amp;#039;staged&amp;#039;&amp;#039;&lt;br /&gt;
# Se hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[File:18333fig0106-tn.png|300px|thumb|none|Flujo común de Git]]&lt;br /&gt;
&lt;br /&gt;
==Instalar Git==&lt;br /&gt;
===Obtener Git===&lt;br /&gt;
Git se puede instalar desde diferentes fuentes, [http://git-scm.com/downloads esta] es la oficial. Desde ahí se pueden descargar los comandos y clientes gráficos.&lt;br /&gt;
&lt;br /&gt;
Además hay más programas en Internet que se pueden usar para trabajar con Git. Por ejemplo NetBeans lo soporta.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039;: Es posible que Git ya esté instalado en el sistema. Si se reinstala podría causar algún conflicto. Revisar si está instalado, si la función instalada es suficiente no hacer nada, sino buscar la forma de instalar la versión deseada.&lt;br /&gt;
&lt;br /&gt;
===Configuración===&lt;br /&gt;
Antes de empezar a usar Git se configuran algunas variables para el uso de un usuario. Estas variables se usan para guardar en los repositorios información de quien hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y configurar cosas como el editor a usar. Quedan almacenadas en uno de tres directorios, ordenados por relevancia siendo más relevante el último:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/gitconfig&amp;lt;/code&amp;gt; contiene configuración para todos los usuarios del sistema en todos los repositorios&lt;br /&gt;
* &amp;lt;code&amp;gt;~/.gitconfig&amp;lt;/code&amp;gt; contiene configuración para el usuario actual&lt;br /&gt;
* &amp;lt;code&amp;gt;.git/config&amp;lt;/code&amp;gt; contiene configuración para el repositorio en el que se está trabajando actualmente&lt;br /&gt;
&lt;br /&gt;
A continuación algunas configuraciones básicas pero existen más configuraciones no documentadas aquí:&lt;br /&gt;
&lt;br /&gt;
====Configuración Personal====&lt;br /&gt;
Esta información se usa a la hora de hacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;John Flat&amp;quot;	     # Setea el nombre del usuario&lt;br /&gt;
git config --global user.email john.flat@empresa.com # Setea el mail del usuario&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuración Ambiente de Trabajo====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.editor emacs  # Setea el editor por defecto&lt;br /&gt;
git config --global merge.tool vimdiff # Setea el visualizador de diferencias&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Revisar configuraciones====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --list    # Lista todas las configuraciones, pueden repetirse si se repiten en varios archivos de configuración&lt;br /&gt;
git config {key}     # Muestra el valor de una variable en específico&lt;br /&gt;
git config user.name # Muestra el valor del nombre de usuario guardado en la configuración&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configurar autocompletación en Terminal====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Necesario para SO Macintosh.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Agregar el siguiente archivo al home.&lt;br /&gt;
&lt;br /&gt;
Descargar:&amp;lt;br&amp;gt;&lt;br /&gt;
Opción 1 (github.com): https://github.com/git/git/blob/master/contrib/completion/git-completion.bash &amp;lt;br&amp;gt;&lt;br /&gt;
Opción 2 (Wiki): [Media:Git-completion.bash.zip]&lt;br /&gt;
&lt;br /&gt;
===Instalar en un servidor===&lt;br /&gt;
Instalar en un servidor es sencillo conceptualmente. Hay que permitir acceso a un directorio con un proyecto Git. El directorio es igual al que hay en un proyecto localmente. También hay que definir para cada usuario si puede hacer &amp;#039;&amp;#039;pull&amp;#039;&amp;#039; y &amp;#039;&amp;#039;push&amp;#039;&amp;#039;. Para esto, una forma sencilla de hacerlo es usando acceso SSH (aunque existen otra formas, ver &amp;#039;&amp;#039;[http://gitolite.com/3-server-usage/git-server.html setting up your own git server]&amp;#039;&amp;#039;), de esta forma también se le puede dar permiso al usuario de lectura y escritura.&lt;br /&gt;
&lt;br /&gt;
Para crear el repositorio hay que ingresar al servidor remoto y ejecutar algunos comandos. Lo siguiente es un ejemplo, la ubicación y el nombre del proyecto pueden cambiar. Por convención se usa el nombre de la carpeta del proyecto con &amp;#039;&amp;#039;.git&amp;#039;&amp;#039;. El comando &amp;lt;code&amp;gt;--bare&amp;lt;/code&amp;gt;, al inicializar el proyecto, indica que se crea sin la estructura de directorio de trabajo, este directorio queda con archivos como los que quedan adentro de la carpeta .git de un repositorio de trabajo local.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git	  # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
mkdir project.git # Se crea una carpeta donde va a quedar el repositorio&lt;br /&gt;
cd project.git    # Se ingresa a la carpeta del proyecto&lt;br /&gt;
git --bare init   # Se inicializa el proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Lo mismo del código anterior se puede lograr así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git		     # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
git --bare init project.git  # Se crea el directorio del proyecto y se inicializa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para obtener el repositorio el usuario puede hacer:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone usuario@servidor.com:/directorio/donde/esta/el/proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se desea hacer usuarios que solo puedan interactuar con Git en este servidor, es buena idea dejar que solo usen un &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; desarrollado para este propósito. Esto significa que no pueden moverse a través de los directorios, crear archivos, ver archivos y más. Para esto, hay que editar el archivo &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; (en Ubuntu por ejemplo), en el usuario que solo va a usar Git, pasar de esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/bin/sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/usr/bin/git-shell&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para más información de cómo interactuar con el servidor remoto, ver [[Git, Branching]], la sección de &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==Comandos de Ayuda==&lt;br /&gt;
Tres formas de obtener ayuda sobre un &amp;lt;verb&amp;gt; (verbo), es decir una acción de Git:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help &amp;lt;verb&amp;gt;&lt;br /&gt;
git &amp;lt;verb&amp;gt; --help&lt;br /&gt;
man git-&amp;lt;verb&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de ayuda&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help config&lt;br /&gt;
git config --help&lt;br /&gt;
man git-config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Crear Repositorios==&lt;br /&gt;
Formas de hacer que un proyecto tenga manejo de versiones usando Git. Todas las formas incluyen un directorio .git que guarda la información de versiones.&lt;br /&gt;
&lt;br /&gt;
===Empezar un proyecto con Git===&lt;br /&gt;
Se crea un directorio nuevo, se navega hacia él y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir nuevoProyecto # Crear nuevo directorio&lt;br /&gt;
cd nuevoProyecto    # Navegar a directorio&lt;br /&gt;
git init	    # Inicializar Git&lt;br /&gt;
touch x		    # Crea un archivo &amp;quot;x&amp;quot; vacío&lt;br /&gt;
git add x	    # Se pasa &amp;quot;x&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, solo un archivo en blanco&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar Git a un proyecto existente===&lt;br /&gt;
Se navega al directorio donde está el proyecto exitente y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd proyectoExistente	 # Se navega al proyecto existente&lt;br /&gt;
git init		 # Inicializar Git&lt;br /&gt;
git add archivoExistente # Se pasa &amp;quot;archivoExistente&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, se agrega archivo existente&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener un proyecto desde una fuente existente===&lt;br /&gt;
Se obtiene una copia del repositorio y se guarda en una carpeta con el nombre del repositorio.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone [url]				    # Forma genérica&lt;br /&gt;
git clone /path/to/repository		    # Obtener copia localmente&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ignorar archivos==&lt;br /&gt;
&lt;br /&gt;
===.gitignore===&lt;br /&gt;
Git puede ignorar algunos archivos, esto se hace manualmente editando (creando) el archivo &amp;#039;&amp;#039;.gitignore&amp;#039;&amp;#039;. A continuación un ejemplo de este archivo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Esto es un comentario que empieza con &amp;#039;#&amp;#039;&lt;br /&gt;
# Omitir todos los archivos que terminan con .log&lt;br /&gt;
*.log&lt;br /&gt;
# Pero track super.log usando la negación&lt;br /&gt;
!super.log&lt;br /&gt;
# Ignorar la carpeta LOG, si existe una carpeta LOG adentro de otra carpeta no se va a ignorar&lt;br /&gt;
/LOG&lt;br /&gt;
# Ignorar todos los archivos en la carpeta error&lt;br /&gt;
error/&lt;br /&gt;
# Ignorar los archivos .txt adentro de la carpeta media&lt;br /&gt;
media/*.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Asumir que algún archivo no ha cambiado===&lt;br /&gt;
El siguiente comando hace que Git no tome en cuenta los cambios del archivo en cuestión.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para deshacer esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --no-assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Local==&lt;br /&gt;
&lt;br /&gt;
===Proceso de guardado de archivos (commit)===&lt;br /&gt;
Para hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; hay que hacer los siguientes pasos:&lt;br /&gt;
# Agregar (o modificar) archivos (por ejemplo usando un editor de texto)&lt;br /&gt;
# Avisarle a git que tiene que llevar a cabo los cambios, por ejemplo agregando un archivo (&amp;lt;code&amp;gt;git add archivoNuevo&amp;lt;/code&amp;gt;)&lt;br /&gt;
# Hacer el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, git commit -m &amp;lt;nowiki&amp;gt;&amp;#039;texto del commit&amp;#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede hacer el commit así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo # Se agrega el archivo a Git&lt;br /&gt;
git commit           # Se realiza el commit&lt;br /&gt;
# No se le entrega mensaje, con lo que se abre el editor de texto configurado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
O&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo               # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo             # Se agrega el archivo a Git&lt;br /&gt;
git commit -m &amp;#039;texto del commit&amp;#039; # Se realiza el commit&lt;br /&gt;
# Se escribe el mensaje directamente y no se abre un editor de texto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siempre es necesario incluir un mensaje en el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; ya que esto permite revisar el historial de lo que se haya hecho antes. De esta forma se puede tener una imagen bastante clara de la evolución del proyecto.&lt;br /&gt;
&lt;br /&gt;
===Hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; viendo las diferencias en los archivos===&lt;br /&gt;
Lo siguiente muestra el editor de texto para agregar un mensaje, en los comentarios muestra los archivos modificados (comportamiento por defecto) y adicionalmente muestra las diferencias en los archivos (&amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Track nuevos archivos===&lt;br /&gt;
Se dice que un archivo está siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; cuando Git lo toma en cuenta. Para esto se ejecuta lo siguiente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se crea nuevo archivo vacío&lt;br /&gt;
git add archivoNuevo # Se hace que Git lo agregue&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar archivos al staging area===&lt;br /&gt;
Los archivos modificados no pasan directamente al siguiente &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, hay que pasarlos al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; antes. El comando es el mismo que para agregar archivos nuevos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo nuevaLinea &amp;gt;&amp;gt; archivoYaEnGit # Se le agrega la línea nuevaLinea a un archivo que ya estaba en Git&lt;br /&gt;
git add archivoYaEnGit		  # Se pasa archivo al staging area&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mover (o renombrar) Archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git mv archivoViejoNombre archivoNuevoNombre # También se puede mover adentro de un directorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv archivoViejoNombre archivoNuevoNombre # Se mueve el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoViejoNombre		 # Se borra de Git el del nombre viejo&lt;br /&gt;
git add archivoNuevoNombre		 # Se agrega el del nombre nuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm archivoABorrar&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm archivoABorrar     # Borra el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoABorrar # Le avisa a Git que el archivo va a ser eliminado en el próximo commit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos en el staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm --cached archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar archivos del staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de archivo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -- archivoAResetear&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios en el directorio de trabajo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard   # Deshace cambios del staging area y del directorio de trabajo&lt;br /&gt;
git clean -f -d    # Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039;&lt;br /&gt;
git clean -f -x -d # CUIDADO! Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039; PERO ADEMÁS quita archivos ignorados (.gitignore)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/questions/1090309/git-undo-all-working-dir-changes-including-new-files stackoverflow]&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;===&lt;br /&gt;
Suponiendo que el Git se encuentra en el siguiente estado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
    ↑&lt;br /&gt;
  master&lt;br /&gt;
&lt;br /&gt;
A, B y C son commits. F es el estado del directorio de trabajo. C es el último commit.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Se pueden hacer algunos comandos para deshacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; definitivamente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 (F)&lt;br /&gt;
A-B&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; manteniendo el index (&amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --soft HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/a/6866485 stackoverflow]&lt;br /&gt;
&lt;br /&gt;
Nota: Para resucitar un commit muerto ver la nota en la fuente.&lt;br /&gt;
&lt;br /&gt;
===Hacer cambios al útlimo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; con &amp;#039;&amp;#039;--amend&amp;#039;&amp;#039;===&lt;br /&gt;
Si hay algún archivo que debería haber hecho parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; anterior, se puede agregar con &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;. Un ejemplo de cómo funciona esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m &amp;#039;primer commit&amp;#039; # Commit inicial&lt;br /&gt;
touch nuevoArchivo	      # Se agrega nuevo archivo al directorio&lt;br /&gt;
git add nuevoArchivo          # Se le avisa a Git que hay un nuevo archivo que trackear&lt;br /&gt;
git commit --amend            # Se actualiza el último commit, debería abrir el editor de texto por defecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estado de Archivos===&lt;br /&gt;
&lt;br /&gt;
Para saber el estado de los archivos existen dos comandos posibles: &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====git status====&lt;br /&gt;
Muestra información del estado de los archivos que han cambiado. Puede mostrar archivos &amp;#039;&amp;#039;untracked&amp;#039;&amp;#039;, &amp;#039;&amp;#039;staged&amp;#039;&amp;#039; y &amp;#039;&amp;#039;modified&amp;#039;&amp;#039;. No muestra información de archivos que no han cambiado desde el último &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo sin cambios&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
nothing to commit (working directory clean)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo de diferentes estados&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
En el siguiente ejemplo, &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; ya están siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; y ya hicieron parte del commit anterior; ambos fueron modificados. &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; no se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; por lo que no va a hacer parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;. &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; y se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;archivoC&amp;#039;&amp;#039; es un archivo nuevo que se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoD&amp;#039;&amp;#039; es un archivo nuevo no &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; por Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
# Changes to be committed:&lt;br /&gt;
#   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoB&lt;br /&gt;
#	new file:   archivoC&lt;br /&gt;
#&lt;br /&gt;
# Changes not staged for commit:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
#   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoA&lt;br /&gt;
#&lt;br /&gt;
# Untracked files:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
#&lt;br /&gt;
#	archivoD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====git diff====&lt;br /&gt;
&amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; se usa para ver las diferencias que han tenido los archivos y no solo saber si han cambiado o no. &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; por si sólo muestra las diferencias en archivos que no están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;. Para mostrar los cambios en los archivos que están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; hay que usar el commando con la opción &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;git diff --staged&amp;lt;/code&amp;gt; (para versiones anteriores a 1.6.1 cambiar &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039; por &amp;#039;&amp;#039;--cached&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git diff: ejemplo&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; se agregaron dos líneas con el mismo contenido, el nombre del archivo. En &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó una línea con el nombre del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
diff --git a/archivoA b/archivoA&lt;br /&gt;
index 7898192..c065858 100644&lt;br /&gt;
--- a/archivoA&lt;br /&gt;
+++ b/archivoA&lt;br /&gt;
@@ -1 +1,2 @@&lt;br /&gt;
-a&lt;br /&gt;
+archivoA&lt;br /&gt;
+archivoA&lt;br /&gt;
diff --git a/archivoB b/archivoB&lt;br /&gt;
index 6178079..df239cf 100644&lt;br /&gt;
--- a/archivoB&lt;br /&gt;
+++ b/archivoB&lt;br /&gt;
@@ -1 +1 @@&lt;br /&gt;
-b&lt;br /&gt;
+archivoB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Historial===&lt;br /&gt;
Para ver el historial se usa el comando &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt;. Se puede usar con varios parámetros para obtener un output más preciso. Para obtener más información ver [http://git-scm.com/book/en/Git-Basics-Viewing-the-Commit-History este link] o usar &amp;lt;code&amp;gt;git help log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Algunos parámetros:&lt;br /&gt;
&lt;br /&gt;
;-(n)&lt;br /&gt;
:(n) es la cantidad de &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; a mostrar (ej: &amp;lt;code&amp;gt;git log -3&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--since, --after&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente a partir de cierta fecha (ej: &amp;lt;code&amp;gt;git log --since=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--until, --before&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente desde cierta fecha (ej: &amp;lt;code&amp;gt;git log --until=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--author&lt;br /&gt;
:Se le proporciona a Git el autor para la búsqueda&lt;br /&gt;
;--stat&lt;br /&gt;
:Se muestran los archivos modificados.&lt;br /&gt;
&lt;br /&gt;
==Git Remoto==&lt;br /&gt;
Para poder colaborar en un proyecto, se necesitan servidores remotos, &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
===Crear nuevo proyecto a partir de un remote===&lt;br /&gt;
El siguiente comando crea una carpeta con el proyecto obtenido desde una fuente externa, crea la carpeta .git y obtiene los archivos del proyecto.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar remote===&lt;br /&gt;
El siguiente comando agrega un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto Git actual, esto solo asocia un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto pero no obtiene los archivos. nombreReferencia es un nombre arbitratio que se le da al remote para referenciarlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add nombreReferencia username@host:/path/to/nombreRepositorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener archivos de remote===&lt;br /&gt;
El siguiente comando obtiene los archivos desde un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; ya agregado &amp;#039;&amp;#039;&amp;#039;pero&amp;#039;&amp;#039;&amp;#039; no los deja en el directorio de trabajo, quedan &amp;quot;escondidos&amp;quot; en la base de datos de Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git fetch nombreReferencia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mezclar lo obtenido en el directorio actual===&lt;br /&gt;
Este comando mezcla la rama de nombreReferencia al directorio actual ([http://stackoverflow.com/questions/3419658/understanding-git-fetch-then-merge más info en stackoverflow]).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git merge nombreReferencia/rama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener y Mezclar (merge) archivos de remote===&lt;br /&gt;
Se obtienen los archivos y luego se mezclan con lo que hay en el directorio de trabajo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git pull nombreReferencia HEAD # Si no especifico HEAD me pide una versión&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subir cambios a remote===&lt;br /&gt;
Se suben los cambios al &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; origin en la branch (rama) master.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push origin master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Listar remotes===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin&lt;br /&gt;
ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos con URLs&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin	/gitExample2/../gitExample (fetch)&lt;br /&gt;
origin	/gitExample2/../gitExample (push)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (fetch)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (push)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener información de un remote===&lt;br /&gt;
Con este comando se obtiene la información del &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; y de las &amp;#039;&amp;#039;branches&amp;#039;&amp;#039; (ramas) que se están &amp;#039;&amp;#039;tracking&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote show ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Renombre remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rename nombreViejo nombreNuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rm remoteName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Otras páginas utiles adentro del Wiki==&lt;br /&gt;
* [[Git, Branching]], &amp;#039;&amp;#039;branching&amp;#039;&amp;#039; es una forma de llevar el desarrollo por diferentes caminos sin que se pisen entre ellos.&lt;br /&gt;
* [[Git, Tagging]], el &amp;#039;&amp;#039;tagging&amp;#039;&amp;#039; sirve para referenciar diferentes &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; en el tiempo.&lt;br /&gt;
* [[Git, Stashing]], el &amp;#039;&amp;#039;stashing&amp;#039;&amp;#039; sirve para limpiar las modificaciones actuales en el espacio de trabajo y guardarlas temporalmente fuera de vista. Se pueden recuperar luego.&lt;br /&gt;
&lt;br /&gt;
==Links útiles==&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Auto-Completion Hacer que Git autocomplete]&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Git-Aliases Hacer alias para comandos]&lt;br /&gt;
&lt;br /&gt;
==Más información==&lt;br /&gt;
* [https://na1.salesforce.com/help/pdfs/en/salesforce_git_developer_cheatsheet.pdf Git Cheat Sheet]&lt;br /&gt;
* [http://ndpsoftware.com/git-cheatsheet.html Git Cheatsheet • NDP Software]&lt;br /&gt;
* [http://git-scm.com/book/en/ Libro Oficial]&lt;br /&gt;
* [http://rogerdudler.github.io/git-guide/ git - the simple guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=File:Git-completion.bash.zip&amp;diff=294</id>
		<title>File:Git-completion.bash.zip</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=File:Git-completion.bash.zip&amp;diff=294"/>
		<updated>2014-04-25T18:36:13Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=293</id>
		<title>Git, lo Básico</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Git,_lo_B%C3%A1sico&amp;diff=293"/>
		<updated>2014-04-25T18:34:18Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Configuración */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Contexto==&lt;br /&gt;
&lt;br /&gt;
===Los Estados de los archivos===&lt;br /&gt;
Los archivos adentro de una carpeta que usa Git pueden estar &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; o no, esto significa que están asociados al control de versión o no. Los archivos &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; pueden estar en uno de tres estados:&lt;br /&gt;
&lt;br /&gt;
;&amp;#039;&amp;#039;Commited&amp;#039;&amp;#039; (&amp;quot;Comprometido&amp;quot;)&lt;br /&gt;
:El archivos ya quedó guardado en la base de datos local.&lt;br /&gt;
;Modified (Modificado)&lt;br /&gt;
:El archivo se ha modificado pero no se ha &amp;#039;&amp;#039;commited&amp;#039;&amp;#039; (&amp;#039;&amp;#039;comprometido&amp;#039;&amp;#039;) aún.&lt;br /&gt;
;&amp;#039;&amp;#039;Staged&amp;#039;&amp;#039; (&amp;quot;En Escenario&amp;quot;)&lt;br /&gt;
:Se ha marcado el archivo para agregarlo al próximo commit.&lt;br /&gt;
&lt;br /&gt;
===Un flujo común de Git===&lt;br /&gt;
# Se obtiene el proyecto desde un directorio de git&lt;br /&gt;
# Se modifican archivos&lt;br /&gt;
# Se preparan para el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, se hacen &amp;#039;&amp;#039;staged&amp;#039;&amp;#039;&lt;br /&gt;
# Se hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
[[File:18333fig0106-tn.png|300px|thumb|none|Flujo común de Git]]&lt;br /&gt;
&lt;br /&gt;
==Instalar Git==&lt;br /&gt;
===Obtener Git===&lt;br /&gt;
Git se puede instalar desde diferentes fuentes, [http://git-scm.com/downloads esta] es la oficial. Desde ahí se pueden descargar los comandos y clientes gráficos.&lt;br /&gt;
&lt;br /&gt;
Además hay más programas en Internet que se pueden usar para trabajar con Git. Por ejemplo NetBeans lo soporta.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039;: Es posible que Git ya esté instalado en el sistema. Si se reinstala podría causar algún conflicto. Revisar si está instalado, si la función instalada es suficiente no hacer nada, sino buscar la forma de instalar la versión deseada.&lt;br /&gt;
&lt;br /&gt;
===Configuración===&lt;br /&gt;
Antes de empezar a usar Git se configuran algunas variables para el uso de un usuario. Estas variables se usan para guardar en los repositorios información de quien hace el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y configurar cosas como el editor a usar. Quedan almacenadas en uno de tres directorios, ordenados por relevancia siendo más relevante el último:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/gitconfig&amp;lt;/code&amp;gt; contiene configuración para todos los usuarios del sistema en todos los repositorios&lt;br /&gt;
* &amp;lt;code&amp;gt;~/.gitconfig&amp;lt;/code&amp;gt; contiene configuración para el usuario actual&lt;br /&gt;
* &amp;lt;code&amp;gt;.git/config&amp;lt;/code&amp;gt; contiene configuración para el repositorio en el que se está trabajando actualmente&lt;br /&gt;
&lt;br /&gt;
A continuación algunas configuraciones básicas pero existen más configuraciones no documentadas aquí:&lt;br /&gt;
&lt;br /&gt;
====Configuración Personal====&lt;br /&gt;
Esta información se usa a la hora de hacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;John Flat&amp;quot;	     # Setea el nombre del usuario&lt;br /&gt;
git config --global user.email john.flat@empresa.com # Setea el mail del usuario&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configuración Ambiente de Trabajo====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --global core.editor emacs  # Setea el editor por defecto&lt;br /&gt;
git config --global merge.tool vimdiff # Setea el visualizador de diferencias&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Revisar configuraciones====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git config --list    # Lista todas las configuraciones, pueden repetirse si se repiten en varios archivos de configuración&lt;br /&gt;
git config {key}     # Muestra el valor de una variable en específico&lt;br /&gt;
git config user.name # Muestra el valor del nombre de usuario guardado en la configuración&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configurar autocompletación en Terminal====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Necesario para SO Macintosh.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Agregar el siguiente archivo al home.&lt;br /&gt;
&lt;br /&gt;
Descargar:&amp;lt;br&amp;gt;&lt;br /&gt;
Opción 1 (Git): https://github.com/git/git/blob/master/contrib/completion/git-completion.bash&lt;br /&gt;
Versión 2.0:&lt;br /&gt;
&lt;br /&gt;
===Instalar en un servidor===&lt;br /&gt;
Instalar en un servidor es sencillo conceptualmente. Hay que permitir acceso a un directorio con un proyecto Git. El directorio es igual al que hay en un proyecto localmente. También hay que definir para cada usuario si puede hacer &amp;#039;&amp;#039;pull&amp;#039;&amp;#039; y &amp;#039;&amp;#039;push&amp;#039;&amp;#039;. Para esto, una forma sencilla de hacerlo es usando acceso SSH (aunque existen otra formas, ver &amp;#039;&amp;#039;[http://gitolite.com/3-server-usage/git-server.html setting up your own git server]&amp;#039;&amp;#039;), de esta forma también se le puede dar permiso al usuario de lectura y escritura.&lt;br /&gt;
&lt;br /&gt;
Para crear el repositorio hay que ingresar al servidor remoto y ejecutar algunos comandos. Lo siguiente es un ejemplo, la ubicación y el nombre del proyecto pueden cambiar. Por convención se usa el nombre de la carpeta del proyecto con &amp;#039;&amp;#039;.git&amp;#039;&amp;#039;. El comando &amp;lt;code&amp;gt;--bare&amp;lt;/code&amp;gt;, al inicializar el proyecto, indica que se crea sin la estructura de directorio de trabajo, este directorio queda con archivos como los que quedan adentro de la carpeta .git de un repositorio de trabajo local.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git	  # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
mkdir project.git # Se crea una carpeta donde va a quedar el repositorio&lt;br /&gt;
cd project.git    # Se ingresa a la carpeta del proyecto&lt;br /&gt;
git --bare init   # Se inicializa el proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Lo mismo del código anterior se puede lograr así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /opt/git		     # Se navega a la ubicación donde se quiere dejar el repositorio&lt;br /&gt;
git --bare init project.git  # Se crea el directorio del proyecto y se inicializa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para obtener el repositorio el usuario puede hacer:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone usuario@servidor.com:/directorio/donde/esta/el/proyecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si se desea hacer usuarios que solo puedan interactuar con Git en este servidor, es buena idea dejar que solo usen un &amp;#039;&amp;#039;shell&amp;#039;&amp;#039; desarrollado para este propósito. Esto significa que no pueden moverse a través de los directorios, crear archivos, ver archivos y más. Para esto, hay que editar el archivo &amp;lt;code&amp;gt;/etc/passwd&amp;lt;/code&amp;gt; (en Ubuntu por ejemplo), en el usuario que solo va a usar Git, pasar de esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/bin/sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
a esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nombreUsuario:x:1000:1000::/home/nombreUsuario:/usr/bin/git-shell&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para más información de cómo interactuar con el servidor remoto, ver [[Git, Branching]], la sección de &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
==Comandos de Ayuda==&lt;br /&gt;
Tres formas de obtener ayuda sobre un &amp;lt;verb&amp;gt; (verbo), es decir una acción de Git:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help &amp;lt;verb&amp;gt;&lt;br /&gt;
git &amp;lt;verb&amp;gt; --help&lt;br /&gt;
man git-&amp;lt;verb&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ejemplo de ayuda&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git help config&lt;br /&gt;
git config --help&lt;br /&gt;
man git-config&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Crear Repositorios==&lt;br /&gt;
Formas de hacer que un proyecto tenga manejo de versiones usando Git. Todas las formas incluyen un directorio .git que guarda la información de versiones.&lt;br /&gt;
&lt;br /&gt;
===Empezar un proyecto con Git===&lt;br /&gt;
Se crea un directorio nuevo, se navega hacia él y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir nuevoProyecto # Crear nuevo directorio&lt;br /&gt;
cd nuevoProyecto    # Navegar a directorio&lt;br /&gt;
git init	    # Inicializar Git&lt;br /&gt;
touch x		    # Crea un archivo &amp;quot;x&amp;quot; vacío&lt;br /&gt;
git add x	    # Se pasa &amp;quot;x&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, solo un archivo en blanco&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar Git a un proyecto existente===&lt;br /&gt;
Se navega al directorio donde está el proyecto exitente y se inicializa Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd proyectoExistente	 # Se navega al proyecto existente&lt;br /&gt;
git init		 # Inicializar Git&lt;br /&gt;
git add archivoExistente # Se pasa &amp;quot;archivoExistente&amp;quot; al staging area, es decir, se prepara para el commit&lt;br /&gt;
git commit -m &amp;#039;Commit inicial, se agrega archivo existente&amp;#039; # Se hace el commit y queda guardado localmente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener un proyecto desde una fuente existente===&lt;br /&gt;
Se obtiene una copia del repositorio y se guarda en una carpeta con el nombre del repositorio.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone [url]				    # Forma genérica&lt;br /&gt;
git clone /path/to/repository		    # Obtener copia localmente&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ignorar archivos==&lt;br /&gt;
&lt;br /&gt;
===.gitignore===&lt;br /&gt;
Git puede ignorar algunos archivos, esto se hace manualmente editando (creando) el archivo &amp;#039;&amp;#039;.gitignore&amp;#039;&amp;#039;. A continuación un ejemplo de este archivo:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Esto es un comentario que empieza con &amp;#039;#&amp;#039;&lt;br /&gt;
# Omitir todos los archivos que terminan con .log&lt;br /&gt;
*.log&lt;br /&gt;
# Pero track super.log usando la negación&lt;br /&gt;
!super.log&lt;br /&gt;
# Ignorar la carpeta LOG, si existe una carpeta LOG adentro de otra carpeta no se va a ignorar&lt;br /&gt;
/LOG&lt;br /&gt;
# Ignorar todos los archivos en la carpeta error&lt;br /&gt;
error/&lt;br /&gt;
# Ignorar los archivos .txt adentro de la carpeta media&lt;br /&gt;
media/*.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Asumir que algún archivo no ha cambiado===&lt;br /&gt;
El siguiente comando hace que Git no tome en cuenta los cambios del archivo en cuestión.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para deshacer esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git update-index --no-assume-unchanged archivoParaNoTomarEnCuenta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Git Local==&lt;br /&gt;
&lt;br /&gt;
===Proceso de guardado de archivos (commit)===&lt;br /&gt;
Para hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; hay que hacer los siguientes pasos:&lt;br /&gt;
# Agregar (o modificar) archivos (por ejemplo usando un editor de texto)&lt;br /&gt;
# Avisarle a git que tiene que llevar a cabo los cambios, por ejemplo agregando un archivo (&amp;lt;code&amp;gt;git add archivoNuevo&amp;lt;/code&amp;gt;)&lt;br /&gt;
# Hacer el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, git commit -m &amp;lt;nowiki&amp;gt;&amp;#039;texto del commit&amp;#039;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se puede hacer el commit así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo # Se agrega el archivo a Git&lt;br /&gt;
git commit           # Se realiza el commit&lt;br /&gt;
# No se le entrega mensaje, con lo que se abre el editor de texto configurado&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
O&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo               # Se agrega un nuevo archivo al directorio de trabajo&lt;br /&gt;
git add archivoNuevo             # Se agrega el archivo a Git&lt;br /&gt;
git commit -m &amp;#039;texto del commit&amp;#039; # Se realiza el commit&lt;br /&gt;
# Se escribe el mensaje directamente y no se abre un editor de texto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Siempre es necesario incluir un mensaje en el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; ya que esto permite revisar el historial de lo que se haya hecho antes. De esta forma se puede tener una imagen bastante clara de la evolución del proyecto.&lt;br /&gt;
&lt;br /&gt;
===Hacer un &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; viendo las diferencias en los archivos===&lt;br /&gt;
Lo siguiente muestra el editor de texto para agregar un mensaje, en los comentarios muestra los archivos modificados (comportamiento por defecto) y adicionalmente muestra las diferencias en los archivos (&amp;lt;code&amp;gt;-v&amp;lt;/code&amp;gt;).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Track nuevos archivos===&lt;br /&gt;
Se dice que un archivo está siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; cuando Git lo toma en cuenta. Para esto se ejecuta lo siguiente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
touch archivoNuevo   # Se crea nuevo archivo vacío&lt;br /&gt;
git add archivoNuevo # Se hace que Git lo agregue&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar archivos al staging area===&lt;br /&gt;
Los archivos modificados no pasan directamente al siguiente &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;, hay que pasarlos al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; antes. El comando es el mismo que para agregar archivos nuevos.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo nuevaLinea &amp;gt;&amp;gt; archivoYaEnGit # Se le agrega la línea nuevaLinea a un archivo que ya estaba en Git&lt;br /&gt;
git add archivoYaEnGit		  # Se pasa archivo al staging area&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mover (o renombrar) Archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git mv archivoViejoNombre archivoNuevoNombre # También se puede mover adentro de un directorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mv archivoViejoNombre archivoNuevoNombre # Se mueve el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoViejoNombre		 # Se borra de Git el del nombre viejo&lt;br /&gt;
git add archivoNuevoNombre		 # Se agrega el del nombre nuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm archivoABorrar&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Esta operación reemplaza los siguientes comandos:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
rm archivoABorrar     # Borra el archivo usando un comando del sistema operativo&lt;br /&gt;
git rm archivoABorrar # Le avisa a Git que el archivo va a ser eliminado en el próximo commit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Borrar archivos en el staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git rm --cached archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar archivos del staging area===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD archivoNoStaging&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de archivo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git checkout -- archivoAResetear&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios en el directorio de trabajo===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard   # Deshace cambios del staging area y del directorio de trabajo&lt;br /&gt;
git clean -f -d    # Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039;&lt;br /&gt;
git clean -f -x -d # CUIDADO! Quita archivos no &amp;#039;&amp;#039;trackeados&amp;#039;&amp;#039; PERO ADEMÁS quita archivos ignorados (.gitignore)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/questions/1090309/git-undo-all-working-dir-changes-including-new-files stackoverflow]&lt;br /&gt;
&lt;br /&gt;
===Revertir cambios de &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;===&lt;br /&gt;
Suponiendo que el Git se encuentra en el siguiente estado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
    ↑&lt;br /&gt;
  master&lt;br /&gt;
&lt;br /&gt;
A, B y C son commits. F es el estado del directorio de trabajo. C es el último commit.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Se pueden hacer algunos comandos para deshacer &amp;#039;&amp;#039;commits&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; definitivamente:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --hard HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 (F)&lt;br /&gt;
A-B&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Borrar el &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; pero mantener los cambios hechos en archivos hasta antes del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;y&amp;#039;&amp;#039;&amp;#039; manteniendo el index (&amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git reset --soft HEAD~1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
El estado de Git queda así:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
   (F)&lt;br /&gt;
A-B-C&lt;br /&gt;
  ↑&lt;br /&gt;
master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
Fuente: [http://stackoverflow.com/a/6866485 stackoverflow]&lt;br /&gt;
&lt;br /&gt;
Nota: Para resucitar un commit muerto ver la nota en la fuente.&lt;br /&gt;
&lt;br /&gt;
===Hacer cambios al útlimo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; con &amp;#039;&amp;#039;--amend&amp;#039;&amp;#039;===&lt;br /&gt;
Si hay algún archivo que debería haber hecho parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; anterior, se puede agregar con &amp;lt;code&amp;gt;git commit --amend&amp;lt;/code&amp;gt;. Un ejemplo de cómo funciona esto:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git commit -m &amp;#039;primer commit&amp;#039; # Commit inicial&lt;br /&gt;
touch nuevoArchivo	      # Se agrega nuevo archivo al directorio&lt;br /&gt;
git add nuevoArchivo          # Se le avisa a Git que hay un nuevo archivo que trackear&lt;br /&gt;
git commit --amend            # Se actualiza el último commit, debería abrir el editor de texto por defecto&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estado de Archivos===&lt;br /&gt;
&lt;br /&gt;
Para saber el estado de los archivos existen dos comandos posibles: &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
====git status====&lt;br /&gt;
Muestra información del estado de los archivos que han cambiado. Puede mostrar archivos &amp;#039;&amp;#039;untracked&amp;#039;&amp;#039;, &amp;#039;&amp;#039;staged&amp;#039;&amp;#039; y &amp;#039;&amp;#039;modified&amp;#039;&amp;#039;. No muestra información de archivos que no han cambiado desde el último &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo sin cambios&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
nothing to commit (working directory clean)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git status: ejemplo de diferentes estados&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
En el siguiente ejemplo, &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; ya están siendo &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; y ya hicieron parte del commit anterior; ambos fueron modificados. &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; no se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; por lo que no va a hacer parte del &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;. &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó al &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; y se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;archivoC&amp;#039;&amp;#039; es un archivo nuevo que se va a guardar en el próximo &amp;#039;&amp;#039;commit&amp;#039;&amp;#039; y &amp;#039;&amp;#039;archivoD&amp;#039;&amp;#039; es un archivo nuevo no &amp;#039;&amp;#039;tracked&amp;#039;&amp;#039; por Git.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# On branch master&lt;br /&gt;
# Changes to be committed:&lt;br /&gt;
#   (use &amp;quot;git reset HEAD &amp;lt;file&amp;gt;...&amp;quot; to unstage)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoB&lt;br /&gt;
#	new file:   archivoC&lt;br /&gt;
#&lt;br /&gt;
# Changes not staged for commit:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to update what will be committed)&lt;br /&gt;
#   (use &amp;quot;git checkout -- &amp;lt;file&amp;gt;...&amp;quot; to discard changes in working directory)&lt;br /&gt;
#&lt;br /&gt;
#	modified:   archivoA&lt;br /&gt;
#&lt;br /&gt;
# Untracked files:&lt;br /&gt;
#   (use &amp;quot;git add &amp;lt;file&amp;gt;...&amp;quot; to include in what will be committed)&lt;br /&gt;
#&lt;br /&gt;
#	archivoD&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====git diff====&lt;br /&gt;
&amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; se usa para ver las diferencias que han tenido los archivos y no solo saber si han cambiado o no. &amp;lt;code&amp;gt;git diff&amp;lt;/code&amp;gt; por si sólo muestra las diferencias en archivos que no están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039;. Para mostrar los cambios en los archivos que están en el &amp;#039;&amp;#039;staging area&amp;#039;&amp;#039; hay que usar el commando con la opción &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;git diff --staged&amp;lt;/code&amp;gt; (para versiones anteriores a 1.6.1 cambiar &amp;#039;&amp;#039;--staged&amp;#039;&amp;#039; por &amp;#039;&amp;#039;--cached&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
git diff: ejemplo&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En &amp;#039;&amp;#039;archivoA&amp;#039;&amp;#039; se agregaron dos líneas con el mismo contenido, el nombre del archivo. En &amp;#039;&amp;#039;archivoB&amp;#039;&amp;#039; se agregó una línea con el nombre del archivo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
diff --git a/archivoA b/archivoA&lt;br /&gt;
index 7898192..c065858 100644&lt;br /&gt;
--- a/archivoA&lt;br /&gt;
+++ b/archivoA&lt;br /&gt;
@@ -1 +1,2 @@&lt;br /&gt;
-a&lt;br /&gt;
+archivoA&lt;br /&gt;
+archivoA&lt;br /&gt;
diff --git a/archivoB b/archivoB&lt;br /&gt;
index 6178079..df239cf 100644&lt;br /&gt;
--- a/archivoB&lt;br /&gt;
+++ b/archivoB&lt;br /&gt;
@@ -1 +1 @@&lt;br /&gt;
-b&lt;br /&gt;
+archivoB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Historial===&lt;br /&gt;
Para ver el historial se usa el comando &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt;. Se puede usar con varios parámetros para obtener un output más preciso. Para obtener más información ver [http://git-scm.com/book/en/Git-Basics-Viewing-the-Commit-History este link] o usar &amp;lt;code&amp;gt;git help log&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Algunos parámetros:&lt;br /&gt;
&lt;br /&gt;
;-(n)&lt;br /&gt;
:(n) es la cantidad de &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; a mostrar (ej: &amp;lt;code&amp;gt;git log -3&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--since, --after&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente a partir de cierta fecha (ej: &amp;lt;code&amp;gt;git log --since=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--until, --before&lt;br /&gt;
:Se le entrega un valor de fecha y muestra &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; solamente desde cierta fecha (ej: &amp;lt;code&amp;gt;git log --until=2.weeks&amp;lt;/code&amp;gt;)&lt;br /&gt;
;--author&lt;br /&gt;
:Se le proporciona a Git el autor para la búsqueda&lt;br /&gt;
;--stat&lt;br /&gt;
:Se muestran los archivos modificados.&lt;br /&gt;
&lt;br /&gt;
==Git Remoto==&lt;br /&gt;
Para poder colaborar en un proyecto, se necesitan servidores remotos, &amp;#039;&amp;#039;remotes&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
===Crear nuevo proyecto a partir de un remote===&lt;br /&gt;
El siguiente comando crea una carpeta con el proyecto obtenido desde una fuente externa, crea la carpeta .git y obtiene los archivos del proyecto.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone username@host:/path/to/repository # Obtener copia remotamente&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Agregar remote===&lt;br /&gt;
El siguiente comando agrega un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto Git actual, esto solo asocia un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; al proyecto pero no obtiene los archivos. nombreReferencia es un nombre arbitratio que se le da al remote para referenciarlo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote add nombreReferencia username@host:/path/to/nombreRepositorio&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener archivos de remote===&lt;br /&gt;
El siguiente comando obtiene los archivos desde un &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; ya agregado &amp;#039;&amp;#039;&amp;#039;pero&amp;#039;&amp;#039;&amp;#039; no los deja en el directorio de trabajo, quedan &amp;quot;escondidos&amp;quot; en la base de datos de Git.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git fetch nombreReferencia&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mezclar lo obtenido en el directorio actual===&lt;br /&gt;
Este comando mezcla la rama de nombreReferencia al directorio actual ([http://stackoverflow.com/questions/3419658/understanding-git-fetch-then-merge más info en stackoverflow]).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git merge nombreReferencia/rama&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener y Mezclar (merge) archivos de remote===&lt;br /&gt;
Se obtienen los archivos y luego se mezclan con lo que hay en el directorio de trabajo.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git pull nombreReferencia HEAD # Si no especifico HEAD me pide una versión&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subir cambios a remote===&lt;br /&gt;
Se suben los cambios al &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; origin en la branch (rama) master.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git push origin master&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Listar remotes===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git diff&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin&lt;br /&gt;
ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
Listar remotos con URLs&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultado:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
origin	/gitExample2/../gitExample (fetch)&lt;br /&gt;
origin	/gitExample2/../gitExample (push)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (fetch)&lt;br /&gt;
ticgit	git://github.com/schacon/ticgit.git (push)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Obtener información de un remote===&lt;br /&gt;
Con este comando se obtiene la información del &amp;#039;&amp;#039;remote&amp;#039;&amp;#039; y de las &amp;#039;&amp;#039;branches&amp;#039;&amp;#039; (ramas) que se están &amp;#039;&amp;#039;tracking&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote show ticgit&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Renombre remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rename nombreViejo nombreNuevo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Quitar remote===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git remote rm remoteName&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Otras páginas utiles adentro del Wiki==&lt;br /&gt;
* [[Git, Branching]], &amp;#039;&amp;#039;branching&amp;#039;&amp;#039; es una forma de llevar el desarrollo por diferentes caminos sin que se pisen entre ellos.&lt;br /&gt;
* [[Git, Tagging]], el &amp;#039;&amp;#039;tagging&amp;#039;&amp;#039; sirve para referenciar diferentes &amp;#039;&amp;#039;commits&amp;#039;&amp;#039; en el tiempo.&lt;br /&gt;
* [[Git, Stashing]], el &amp;#039;&amp;#039;stashing&amp;#039;&amp;#039; sirve para limpiar las modificaciones actuales en el espacio de trabajo y guardarlas temporalmente fuera de vista. Se pueden recuperar luego.&lt;br /&gt;
&lt;br /&gt;
==Links útiles==&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Auto-Completion Hacer que Git autocomplete]&lt;br /&gt;
* [http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Git-Aliases Hacer alias para comandos]&lt;br /&gt;
&lt;br /&gt;
==Más información==&lt;br /&gt;
* [https://na1.salesforce.com/help/pdfs/en/salesforce_git_developer_cheatsheet.pdf Git Cheat Sheet]&lt;br /&gt;
* [http://ndpsoftware.com/git-cheatsheet.html Git Cheatsheet • NDP Software]&lt;br /&gt;
* [http://git-scm.com/book/en/ Libro Oficial]&lt;br /&gt;
* [http://rogerdudler.github.io/git-guide/ git - the simple guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Git]]&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Generar_diccionario_de_datos_con_MySQL_Workbench&amp;diff=292</id>
		<title>Generar diccionario de datos con MySQL Workbench</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Generar_diccionario_de_datos_con_MySQL_Workbench&amp;diff=292"/>
		<updated>2014-04-22T15:31:12Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Instalación del Plugin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Instalación del Plugin ==&lt;br /&gt;
&lt;br /&gt;
# Descargamos el archivo [[Media:Plungin_MW.zip | Plugin Diccionario de Datos MysqlWorbench]].&lt;br /&gt;
# Ahora descomprimimos la carpeta que esta dentro del paquete que descargamos.&lt;br /&gt;
# Abrimos MySQL  Workbench y seleccionamos en el menu superior la opción &amp;#039;&amp;#039;&amp;#039;Scripting&amp;#039;&amp;#039;&amp;#039; y luego &amp;#039;&amp;#039;&amp;#039;Install Plugin/Module&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Se abrirá una ventana y buscamos el archivo datadict_grt.py en la carpeta que descomprimimos en el paso 2.&lt;br /&gt;
# Aparecerá el resultado de la instalación.&lt;br /&gt;
# Reiniciamos MySQL Workbench.&lt;br /&gt;
&lt;br /&gt;
== Generar el diccionario de datos ==&lt;br /&gt;
&lt;br /&gt;
# Abrimos nuestro modelo ERR (al que queremos generar nuestro diccionario).&lt;br /&gt;
# Una vez abierto vamos al menú superior y seleccionamos la opción &amp;#039;&amp;#039;&amp;#039;Tools&amp;#039;&amp;#039;&amp;#039;, luego &amp;#039;&amp;#039;&amp;#039;Catalog&amp;#039;&amp;#039;&amp;#039; , y por último &amp;#039;&amp;#039;&amp;#039;Generate HTML Data Dictionary&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Aparecerá una ventana donde daremos nombre al archivo a generar y seleccionaremos la ruta donde queremos almacenar el archivo .html, damos click en el botón guardar y aparecerá el resultado de la acción.&lt;br /&gt;
# Ahora si buscamos el archivo en la ruta indicada y lo abrimos se abrira nuestro navegador web con el diccionario de datos.&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Generar_diccionario_de_datos_con_MySQL_Workbench&amp;diff=291</id>
		<title>Generar diccionario de datos con MySQL Workbench</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Generar_diccionario_de_datos_con_MySQL_Workbench&amp;diff=291"/>
		<updated>2014-04-22T15:30:23Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Instalación del Plugin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Instalación del Plugin ==&lt;br /&gt;
&lt;br /&gt;
# Vamos a la dirección [[Media:Plungin_MW.zip | asd]] y descargamos el archivo.&lt;br /&gt;
# Ahora descomprimimos la carpeta que esta dentro del paquete que descargamos.&lt;br /&gt;
# Abrimos MySQL  Workbench y seleccionamos en el menu superior la opción &amp;#039;&amp;#039;&amp;#039;Scripting&amp;#039;&amp;#039;&amp;#039; y luego &amp;#039;&amp;#039;&amp;#039;Install Plugin/Module&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Se abrirá una ventana y buscamos el archivo datadict_grt.py en la carpeta que descomprimimos en el paso 2.&lt;br /&gt;
# Aparecerá el resultado de la instalación.&lt;br /&gt;
# Reiniciamos MySQL Workbench.&lt;br /&gt;
&lt;br /&gt;
== Generar el diccionario de datos ==&lt;br /&gt;
&lt;br /&gt;
# Abrimos nuestro modelo ERR (al que queremos generar nuestro diccionario).&lt;br /&gt;
# Una vez abierto vamos al menú superior y seleccionamos la opción &amp;#039;&amp;#039;&amp;#039;Tools&amp;#039;&amp;#039;&amp;#039;, luego &amp;#039;&amp;#039;&amp;#039;Catalog&amp;#039;&amp;#039;&amp;#039; , y por último &amp;#039;&amp;#039;&amp;#039;Generate HTML Data Dictionary&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Aparecerá una ventana donde daremos nombre al archivo a generar y seleccionaremos la ruta donde queremos almacenar el archivo .html, damos click en el botón guardar y aparecerá el resultado de la acción.&lt;br /&gt;
# Ahora si buscamos el archivo en la ruta indicada y lo abrimos se abrira nuestro navegador web con el diccionario de datos.&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=Generar_diccionario_de_datos_con_MySQL_Workbench&amp;diff=290</id>
		<title>Generar diccionario de datos con MySQL Workbench</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=Generar_diccionario_de_datos_con_MySQL_Workbench&amp;diff=290"/>
		<updated>2014-04-22T15:30:03Z</updated>

		<summary type="html">&lt;p&gt;Alex: /* Instalación del Plugin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Instalación del Plugin ==&lt;br /&gt;
&lt;br /&gt;
# Vamos a la dirección [[Media:Plungin_MW.zip asd]] y descargamos el archivo.&lt;br /&gt;
# Ahora descomprimimos la carpeta que esta dentro del paquete que descargamos.&lt;br /&gt;
# Abrimos MySQL  Workbench y seleccionamos en el menu superior la opción &amp;#039;&amp;#039;&amp;#039;Scripting&amp;#039;&amp;#039;&amp;#039; y luego &amp;#039;&amp;#039;&amp;#039;Install Plugin/Module&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Se abrirá una ventana y buscamos el archivo datadict_grt.py en la carpeta que descomprimimos en el paso 2.&lt;br /&gt;
# Aparecerá el resultado de la instalación.&lt;br /&gt;
# Reiniciamos MySQL Workbench.&lt;br /&gt;
&lt;br /&gt;
== Generar el diccionario de datos ==&lt;br /&gt;
&lt;br /&gt;
# Abrimos nuestro modelo ERR (al que queremos generar nuestro diccionario).&lt;br /&gt;
# Una vez abierto vamos al menú superior y seleccionamos la opción &amp;#039;&amp;#039;&amp;#039;Tools&amp;#039;&amp;#039;&amp;#039;, luego &amp;#039;&amp;#039;&amp;#039;Catalog&amp;#039;&amp;#039;&amp;#039; , y por último &amp;#039;&amp;#039;&amp;#039;Generate HTML Data Dictionary&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
# Aparecerá una ventana donde daremos nombre al archivo a generar y seleccionaremos la ruta donde queremos almacenar el archivo .html, damos click en el botón guardar y aparecerá el resultado de la acción.&lt;br /&gt;
# Ahora si buscamos el archivo en la ruta indicada y lo abrimos se abrira nuestro navegador web con el diccionario de datos.&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>http://wiki.caballero.co/index.php?title=File:Plungin_MW.zip&amp;diff=289</id>
		<title>File:Plungin MW.zip</title>
		<link rel="alternate" type="text/html" href="http://wiki.caballero.co/index.php?title=File:Plungin_MW.zip&amp;diff=289"/>
		<updated>2014-04-22T15:29:20Z</updated>

		<summary type="html">&lt;p&gt;Alex: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>