<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Git on livingIT</title>
		<link>https://livingit.de/es/tags/git/</link>
		<description>Recent content in Git on livingIT</description>
		<generator>Hugo</generator>
		<language>es</language>
		
		
		
		
			<lastBuildDate>Thu, 01 Oct 2026 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://livingit.de/es/tags/git/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Los bookmarks no son ramas, y ese es el punto</title>
				<link>https://livingit.de/es/software/jj-08-bookmarks-vs-branches/</link>
				<pubDate>Thu, 01 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-08-bookmarks-vs-branches/</guid>
				<description>&lt;h1 id=&#34;los-bookmarks-no-son-ramas-y-ese-es-el-punto&#34;&gt;Los bookmarks no son ramas, y ese es el punto&lt;/h1&gt;&#xA;&lt;p&gt;Parte 8 de 9.&lt;/p&gt;&#xA;&lt;p&gt;Llamar &amp;ldquo;bookmarks&amp;rdquo; en lugar de &amp;ldquo;ramas&amp;rdquo; a los punteros con nombre de jj parecía&#xA;vocabulario innecesario al principio. No lo es. Una rama de Git avanza automáticamente&#xA;cada vez que haces commit mientras está en checkout: la referencia y tu línea de&#xA;trabajo actual son la misma cosa hasta que cambias explícitamente. Un bookmark de jj&#xA;está desacoplado de eso: puedes estar trabajando varios commits más allá del último&#xA;sitio al que apunta un bookmark, y simplemente se queda ahí hasta que lo mueves con&#xA;&lt;code&gt;jj bookmark set&lt;/code&gt; o haciendo rebase del commit al que está adjunto.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Los compañeros que nunca tocan jj no necesitan saber que existe</title>
				<link>https://livingit.de/es/software/jj-09-git-only-teammates-dont-need-to-care/</link>
				<pubDate>Thu, 01 Oct 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-09-git-only-teammates-dont-need-to-care/</guid>
				<description>&lt;h1 id=&#34;los-compañeros-que-nunca-tocan-jj-no-necesitan-saber-que-existe&#34;&gt;Los compañeros que nunca tocan jj no necesitan saber que existe&lt;/h1&gt;&#xA;&lt;p&gt;Parte 9 de 9.&lt;/p&gt;&#xA;&lt;p&gt;Esta era la pregunta que más importaba antes de adoptar nada de esto para trabajo de&#xA;verdad: qué pasa cuando un comentario de revisión de un PR viene de alguien que usa&#xA;&lt;code&gt;git&lt;/code&gt; a secas, o cuando yo mismo recurro por costumbre a un comando &lt;code&gt;git&lt;/code&gt; a secas. La&#xA;respuesta resultó ser la parte menos dramática de toda la serie: no pasa nada&#xA;especial, porque el modo colocado significa que jj está leyendo y escribiendo la&#xA;misma base de datos de objetos de Git que todos los demás. Un commit empujado con&#xA;&lt;code&gt;git push&lt;/code&gt; y un commit empujado con &lt;code&gt;jj git push&lt;/code&gt; son el mismo tipo de objeto al otro&#xA;lado.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Editar el historial sin contener la respiración</title>
				<link>https://livingit.de/es/software/jj-07-editing-history-without-holding-my-breath/</link>
				<pubDate>Mon, 28 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-07-editing-history-without-holding-my-breath/</guid>
				<description>&lt;h1 id=&#34;editar-el-historial-sin-contener-la-respiración&#34;&gt;Editar el historial sin contener la respiración&lt;/h1&gt;&#xA;&lt;p&gt;Parte 7 de 9.&lt;/p&gt;&#xA;&lt;p&gt;Los tres movimientos que cubre esta lección (empezar trabajo nuevo, editar trabajo&#xA;existente, empezar trabajo nuevo desde un punto del pasado) se corresponden con cosas&#xA;que ya hacía constantemente en Git. La diferencia es cuánto solía prepararme para&#xA;ellas.&lt;/p&gt;&#xA;&lt;p&gt;Que &lt;code&gt;jj new&lt;/code&gt; cierre la copia de trabajo actual y abra una vacía no tiene nada de&#xA;notable, es básicamente &lt;code&gt;git commit&lt;/code&gt; con el paso de staging eliminado. El que cambió&#xA;cómo trabajo es &lt;code&gt;jj edit &amp;lt;change-id&amp;gt;&lt;/code&gt;. Arreglar algo dos commits atrás solía&#xA;significar &lt;code&gt;git rebase -i&lt;/code&gt;, elegir &lt;code&gt;edit&lt;/code&gt; en la línea correcta, hacer el arreglo,&#xA;&lt;code&gt;git rebase --continue&lt;/code&gt;, y esperar que nada más abajo entrara en conflicto por el&#xA;camino. Con jj, &lt;code&gt;jj edit&lt;/code&gt; simplemente mueve la copia de trabajo a ese commit.&#xA;Cualquier archivo que toque lo enmienda directamente. Los descendientes reciben rebase&#xA;automáticamente la próxima vez que jj necesite mostrarme el grafo. Sin estado de HEAD&#xA;desanclado, sin un rebase de varios pasos que abandonar a mitad de camino si cambio&#xA;de opinión: &lt;code&gt;jj undo&lt;/code&gt; cubre eso.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Conseguir que jj log hable del remoto</title>
				<link>https://livingit.de/es/software/jj-06-a-log-that-tells-me-about-the-remote/</link>
				<pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-06-a-log-that-tells-me-about-the-remote/</guid>
				<description>&lt;h1 id=&#34;conseguir-que-jj-log-hable-del-remoto&#34;&gt;Conseguir que jj log hable del remoto&lt;/h1&gt;&#xA;&lt;p&gt;Parte 6 de 9.&lt;/p&gt;&#xA;&lt;p&gt;Lo que me hizo confiar en &lt;code&gt;jj log&lt;/code&gt; como herramienta de uso diario en lugar de como una&#xA;curiosidad fue ver aparecer en él el estado del remoto sin ceremonia adicional.&#xA;&lt;code&gt;jj git fetch&lt;/code&gt; actualiza la vista que jj tiene de cada bookmark remoto, y la plantilla&#xA;de log por defecto ya anota los commits con los bookmarks (locales, remotos, o ambos)&#xA;que apuntan a ellos.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hacer que jj se parezca a Tokyo Night</title>
				<link>https://livingit.de/es/software/jj-05-tokyo-night-in-the-terminal/</link>
				<pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-05-tokyo-night-in-the-terminal/</guid>
				<description>&lt;h1 id=&#34;hacer-que-jj-se-parezca-a-tokyo-night&#34;&gt;Hacer que jj se parezca a Tokyo Night&lt;/h1&gt;&#xA;&lt;p&gt;Parte 5 de 9.&lt;/p&gt;&#xA;&lt;p&gt;Esta es la lección menos esencial de la serie y en la que más disfrute inmediato&#xA;invertí. jj no incluye presets de temas: incluye una tabla de configuración&#xA;&lt;code&gt;[colors]&lt;/code&gt; en la que cada clave es una etiqueta de estilo adjunta a una salida&#xA;basada en plantillas (&lt;code&gt;change_id&lt;/code&gt;, &lt;code&gt;bookmarks&lt;/code&gt;, &lt;code&gt;conflict&lt;/code&gt;, y demás), y el valor es&#xA;un nombre de color, una cadena hexadecimal, o una tabla para negrita, cursiva,&#xA;subrayado. Ese es un mecanismo más general que un cambiador de tema fijo, a costa de&#xA;tener que construir el tema uno mismo.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Forkeando repositorios con jj</title>
				<link>https://livingit.de/es/software/working-with-forked-repositories/</link>
				<pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/working-with-forked-repositories/</guid>
				<description>&lt;h1 id=&#34;forkeando-repositorios-con-jj&#34;&gt;Forkeando repositorios con jj&lt;/h1&gt;&#xA;&lt;p&gt;&amp;ldquo;Fork&amp;rdquo; es una de las palabras más usadas en el trabajo diario con GitHub, GitLab,&#xA;Gitea, Forgejo o Bitbucket, y no existe ni en git ni en jj. &lt;code&gt;git help&lt;/code&gt; no tiene&#xA;ningún comando &lt;code&gt;fork&lt;/code&gt;, y &lt;code&gt;jj help&lt;/code&gt; tampoco. Todo lo que hace que forkear parezca&#xA;una extensión natural del control de versiones es una funcionalidad de la&#xA;plataforma de hosting, añadida sobre una herramienta que solo entiende de&#xA;repositorios, commits y refs - y esa frontera jj ni siquiera la toca. Los&#xA;ejemplos de abajo usan jj en todo momento, en modo colocated.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Cómo está construido jj realmente por debajo</title>
				<link>https://livingit.de/es/software/jj-04-how-jj-is-built/</link>
				<pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-04-how-jj-is-built/</guid>
				<description>&lt;h1 id=&#34;cómo-está-construido-jj-realmente-por-debajo&#34;&gt;Cómo está construido jj realmente por debajo&lt;/h1&gt;&#xA;&lt;p&gt;Parte 4 de 9.&lt;/p&gt;&#xA;&lt;p&gt;El modelo mental del artículo anterior (la copia de trabajo como un commit, el&#xA;identificador de cambio separado del identificador de commit) es la historia de cara&#xA;al usuario. Tras leer los documentos de diseño y la disposición del código fuente de&#xA;jj durante un rato más de lo estrictamente necesario, la arquitectura subyacente&#xA;explica &lt;em&gt;por qué&lt;/em&gt; ese modelo se sostiene, y por qué el modo colocado no se siente como&#xA;ejecutar dos sistemas de control de versiones pegados con cinta adhesiva.&lt;/p&gt;</description>
			</item>
			<item>
				<title>El vocabulario que jj toma prestado de Git, cambia y descarta</title>
				<link>https://livingit.de/es/software/jj-vocabulary-vs-git/</link>
				<pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-vocabulary-vs-git/</guid>
				<description>&lt;h1 id=&#34;el-vocabulario-que-jj-toma-prestado-de-git-cambia-y-descarta&#34;&gt;El vocabulario que jj toma prestado de Git, cambia y descarta&lt;/h1&gt;&#xA;&lt;p&gt;La trampa con &lt;code&gt;jj&lt;/code&gt; es que reutiliza varias palabras de Git para cosas distintas, en&#xA;lugar de inventar términos nuevos de principio a fin. Eso es peor que una ruptura limpia,&#xA;al menos al principio: una palabra genuinamente nueva obliga a buscarla, una familiar&#xA;deja asumir que ya la conoces.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Branch se convirtió en bookmark, y la diferencia no es cosmética.&lt;/strong&gt; Un branch de Git&#xA;siempre sigue su punta - haces commit sobre él y avanza contigo, automáticamente. Un&#xA;bookmark de jj no hace nada de eso; se queda donde lo dejaste hasta que lo mueves con&#xA;&lt;code&gt;jj bookmark set&lt;/code&gt;. La primera vez que hice commit tres veces esperando que mi bookmark de&#xA;feature me siguiera y descubrí que seguía apuntando al primer commit, esto dejó de ser&#xA;una rareza de nombres y pasó a ser un hecho que tuve que interiorizar de verdad.&lt;/p&gt;</description>
			</item>
			<item>
				<title>La copia de trabajo es un commit</title>
				<link>https://livingit.de/es/software/jj-03-working-copy-as-a-commit/</link>
				<pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-03-working-copy-as-a-commit/</guid>
				<description>&lt;h1 id=&#34;la-copia-de-trabajo-es-un-commit-y-otras-cosas-que-tardaron-un-momento-en-encajar&#34;&gt;La copia de trabajo es un commit, y otras cosas que tardaron un momento en encajar&lt;/h1&gt;&#xA;&lt;p&gt;Parte 3 de 9.&lt;/p&gt;&#xA;&lt;p&gt;El modelo mental de Git tiene tres capas: directorio de trabajo, índice (área de&#xA;staging) y commits. La mayor parte de la fricción del día a día que asocio con Git,&#xA;&lt;code&gt;git add -p&lt;/code&gt;, olvidarme de preparar un archivo, &lt;code&gt;git status&lt;/code&gt; mostrando secciones&#xA;solapadas de &amp;ldquo;preparado&amp;rdquo; y &amp;ldquo;sin preparar&amp;rdquo; para el mismo archivo, viene de gestionar&#xA;la frontera entre las dos primeras.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Modo colocado</title>
				<link>https://livingit.de/es/software/jj-02-colocated-mode-first-impressions/</link>
				<pubDate>Sun, 13 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-02-colocated-mode-first-impressions/</guid>
				<description>&lt;h1 id=&#34;modo-colocado-dos-almacenes-un-directorio&#34;&gt;Modo colocado: dos almacenes, un directorio&lt;/h1&gt;&#xA;&lt;p&gt;Parte 2 de 9.&lt;/p&gt;&#xA;&lt;p&gt;La instalación en sí no tiene nada de particular: un gestor de paquetes o un&#xA;&lt;code&gt;cargo install&lt;/code&gt;, luego una configuración de &lt;code&gt;user.name&lt;/code&gt;/&lt;code&gt;user.email&lt;/code&gt;, con la misma&#xA;forma que la configuración de primera ejecución de Git. La parte interesante empieza&#xA;en &lt;code&gt;jj git init --colocate&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ejecuta eso dentro de un checkout de Git existente y deja un directorio &lt;code&gt;.jj&lt;/code&gt; junto a&#xA;&lt;code&gt;.git&lt;/code&gt;, añade &lt;code&gt;.jj/&lt;/code&gt; a &lt;code&gt;.git/info/exclude&lt;/code&gt; para que nunca aparezca como sin seguir, e&#xA;importa las ramas actuales y &lt;code&gt;HEAD&lt;/code&gt; como commits de jj. Nada en &lt;code&gt;.git&lt;/code&gt; se reescribe.&#xA;Si borrara &lt;code&gt;.jj&lt;/code&gt; ahora mismo, el repositorio sería exactamente el repo Git puro que&#xA;era antes, sin perder nada.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Por qué mirar siquiera Jujutsu</title>
				<link>https://livingit.de/es/software/jj-01-why-jj/</link>
				<pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate>
				<guid>https://livingit.de/es/software/jj-01-why-jj/</guid>
				<description>&lt;h1 id=&#34;por-qué-mirar-siquiera-jujutsu&#34;&gt;Por qué mirar siquiera Jujutsu&lt;/h1&gt;&#xA;&lt;p&gt;Parte 1 de 9 de una serie sobre aprender &lt;code&gt;jj&lt;/code&gt; en modo colocado.&lt;/p&gt;&#xA;&lt;p&gt;Git funciona. Quince años después, el ecosistema a su alrededor es enorme y cada&#xA;compañero de equipo ya lo conoce. Ese es un listón alto para cualquier cosa que&#xA;pretenda reemplazarlo, y Jujutsu (&lt;code&gt;jj&lt;/code&gt;) no intenta superar ese listón de un salto:&#xA;intenta sentarse encima de los mismos repositorios Git que todo el mundo ya tiene,&#xA;de modo que adoptarlo es una elección personal en lugar de una migración de equipo.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
