<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Workflow on Commentary of Takao</title><link>https://takao.blog/es/tags/workflow/</link><description>Recent content in Workflow on Commentary of Takao</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>Commentary of Takao</copyright><lastBuildDate>Sun, 12 Jul 2026 04:12:51 +0900</lastBuildDate><atom:link href="https://takao.blog/es/tags/workflow/index.xml" rel="self" type="application/rss+xml"/><item><title>Git checkout, restore y switch: Diferencias y cuándo usar cada uno</title><link>https://takao.blog/es/web/git-checkout-restore-switch-commands/</link><pubDate>Wed, 25 Mar 2026 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/git-checkout-restore-switch-commands/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/git-checkout-restore-switch-commands-es.png" alt="Featured image of post Git checkout, restore y switch: Diferencias y cuándo usar cada uno" /&gt;&lt;p&gt;Git 2.23 introdujo &lt;code&gt;git switch&lt;/code&gt; y &lt;code&gt;git restore&lt;/code&gt; para reemplazar los usos sobrecargados de &lt;code&gt;git checkout&lt;/code&gt;. Cada comando tiene una responsabilidad única.&lt;/p&gt;
&lt;h2 id="git-switch"&gt;git switch
&lt;/h2&gt;&lt;p&gt;Cambia de rama. Equivalente a &lt;code&gt;git checkout &amp;lt;rama&amp;gt;&lt;/code&gt;. &lt;code&gt;-c&lt;/code&gt; crea y cambia a una nueva rama. &lt;code&gt;-&lt;/code&gt; vuelve a la rama anterior.&lt;/p&gt;
&lt;h2 id="git-restore"&gt;git restore
&lt;/h2&gt;&lt;p&gt;Restaura archivos del working tree o staging. &lt;code&gt;git restore archivo&lt;/code&gt; descarta cambios locales. &lt;code&gt;--staged&lt;/code&gt; quita archivos del staging.&lt;/p&gt;
&lt;h2 id="git-checkout-legacy"&gt;git checkout (legacy)
&lt;/h2&gt;&lt;p&gt;Aún funciona pero es sobrecargado. Puede cambiar ramas o restaurar archivos. Para scripts y automatización, prefiere switch y restore.&lt;/p&gt;</description></item><item><title>Git Merge vs Rebase: Mejores prácticas</title><link>https://takao.blog/es/web/git-merge-vs-rebase-best-practice/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/git-merge-vs-rebase-best-practice/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/git-merge-vs-rebase-best-practice-es.png" alt="Featured image of post Git Merge vs Rebase: Mejores prácticas" /&gt;&lt;p&gt;Merge y rebase son dos estrategias para integrar cambios. Cada una tiene ventajas según el contexto y la política del equipo.&lt;/p&gt;
&lt;h2 id="merge"&gt;Merge
&lt;/h2&gt;&lt;p&gt;Crea un commit de merge que preserva el historial exacto. Útil para ramas públicas y compartidas. Traza claramente cuándo y cómo se integraron los cambios.&lt;/p&gt;
&lt;h2 id="rebase"&gt;Rebase
&lt;/h2&gt;&lt;p&gt;Reescribe el historial aplicando commits de una rama sobre otra línea. Resulta en un historial lineal y limpio. No recomendado para ramas compartidas.&lt;/p&gt;</description></item><item><title>Revertir merges en Git de forma segura</title><link>https://takao.blog/es/web/git-revert-merge-commit-safe/</link><pubDate>Tue, 25 Nov 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/git-revert-merge-commit-safe/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/git-revert-merge-commit-safe-es.png" alt="Featured image of post Revertir merges en Git de forma segura" /&gt;&lt;p&gt;Revertir un merge commit es diferente a revertir un commit normal. Git necesita saber de qué lado del merge se revierte para evitar conflictos futuros.&lt;/p&gt;
&lt;h2 id="el-problema"&gt;El problema
&lt;/h2&gt;&lt;p&gt;Revertir un merge con &lt;code&gt;git revert -m 1&lt;/code&gt; revierte contra la primera rama (main). Si luego reintentas mergear la rama original, los cambios revertidos no reaparecen.&lt;/p&gt;
&lt;h2 id="cómo-revertir-correctamente"&gt;Cómo revertir correctamente
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;git revert -m 1 &amp;lt;merge-commit-hash&amp;gt;&lt;/code&gt; para revertir contra main. Si necesitas reintroducir los cambios, revierte el revert: &lt;code&gt;git revert &amp;lt;revert-commit-hash&amp;gt;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Técnicas avanzadas de Git Stash</title><link>https://takao.blog/es/web/git-stash-advanced-techniques/</link><pubDate>Wed, 20 Aug 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/git-stash-advanced-techniques/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/git-stash-advanced-techniques-es.png" alt="Featured image of post Técnicas avanzadas de Git Stash" /&gt;&lt;p&gt;&lt;code&gt;git stash&lt;/code&gt; guarda cambios temporales sin commitearlos. Más allá del uso básico, stash ofrece opciones avanzadas para flujos complejos.&lt;/p&gt;
&lt;h2 id="stash-parcial"&gt;Stash parcial
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;git stash -p&lt;/code&gt; selecciona interactivamente qué cambios guardar. Útil cuando solo quieres stash una parte de los cambios.&lt;/p&gt;
&lt;h2 id="stash-con-archivos-no-rastreados"&gt;Stash con archivos no rastreados
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;git stash -u&lt;/code&gt; (o &lt;code&gt;--include-untracked&lt;/code&gt;) guarda también archivos nuevos. &lt;code&gt;-a&lt;/code&gt; guarda incluso archivos ignorados.&lt;/p&gt;
&lt;h2 id="stash-nombrado"&gt;Stash nombrado
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;git stash push -m &amp;quot;mensaje descriptivo&amp;quot;&lt;/code&gt; crea un stash con nombre. Listarlos con &lt;code&gt;git stash list&lt;/code&gt; y buscar con &lt;code&gt;git stash show -p &amp;lt;stash&amp;gt;&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Git Worktree: Trabajar en múltiples ramas simultáneamente</title><link>https://takao.blog/es/web/git-worktree-multi-branches/</link><pubDate>Tue, 20 May 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/git-worktree-multi-branches/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/git-worktree-multi-branches-es.png" alt="Featured image of post Git Worktree: Trabajar en múltiples ramas simultáneamente" /&gt;&lt;p&gt;&lt;code&gt;git worktree&lt;/code&gt; permite tener múltiples copias del repositorio en diferentes directorios, cada una en una rama distinta. Sin cambiar de rama ni stash.&lt;/p&gt;
&lt;h2 id="uso-básico"&gt;Uso básico
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;git worktree add ../rama-feature feature-branch&lt;/code&gt; crea un directorio &lt;code&gt;../rama-feature&lt;/code&gt; con la rama activa. Puedes trabajar en ambas simultáneamente.&lt;/p&gt;
&lt;h2 id="casos-de-uso"&gt;Casos de uso
&lt;/h2&gt;&lt;p&gt;Revisar un PR mientras trabajas en otra rama. Ejecutar tests en paralelo. Mantener una rama de producción abierta para hotfixes rápidos.&lt;/p&gt;
&lt;h2 id="gestión"&gt;Gestión
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;git worktree list&lt;/code&gt; muestra todos los worktrees. &lt;code&gt;git worktree prune&lt;/code&gt; elimina referencias a directorios eliminados. Cada worktree comparte objetos pero tiene su propio index y HEAD.&lt;/p&gt;</description></item><item><title>Git Cherry-Pick: Casos de uso prácticos</title><link>https://takao.blog/es/web/git-cherry-pick-usecases/</link><pubDate>Tue, 25 Mar 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/git-cherry-pick-usecases/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/git-cherry-pick-usecases-es.png" alt="Featured image of post Git Cherry-Pick: Casos de uso prácticos" /&gt;&lt;p&gt;&lt;code&gt;git cherry-pick&lt;/code&gt; aplica commits específicos de una rama a otra. Esencial para hotfixes y selección selectiva de cambios.&lt;/p&gt;
&lt;h2 id="hotfixes-en-producción"&gt;Hotfixes en producción
&lt;/h2&gt;&lt;p&gt;Corrige un bug en main, luego cherry-pick el commit a release branches. Evita mergear toda la rama main con características incompletas.&lt;/p&gt;
&lt;h2 id="backport-de-cambios"&gt;Backport de cambios
&lt;/h2&gt;&lt;p&gt;Aplica parches seleccionados de una versión reciente a versiones anteriores mantenidas. Común en proyectos con LTS.&lt;/p&gt;
&lt;h2 id="reordenar-commits"&gt;Reordenar commits
&lt;/h2&gt;&lt;p&gt;Extrae commits de una rama de características y aplícalos en orden diferente. Útil cuando commits interdependientes se mezclan.&lt;/p&gt;</description></item><item><title>Git Rebase Interactivo: Flujo de trabajo avanzado</title><link>https://takao.blog/es/web/git-rebase-interactive-flow/</link><pubDate>Thu, 20 Feb 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/es/web/git-rebase-interactive-flow/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/git-rebase-interactive-flow-es.png" alt="Featured image of post Git Rebase Interactivo: Flujo de trabajo avanzado" /&gt;&lt;p&gt;&lt;code&gt;git rebase -i&lt;/code&gt; permite editar, reordenar, combinar y eliminar commits antes de integrarlos. Esencial para mantener un historial limpio.&lt;/p&gt;
&lt;h2 id="comandos-del-rebase-interactivo"&gt;Comandos del rebase interactivo
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pick&lt;/code&gt;: mantener commit. &lt;code&gt;reword&lt;/code&gt;: cambiar mensaje. &lt;code&gt;edit&lt;/code&gt;: modificar contenido. &lt;code&gt;squash&lt;/code&gt;: combinar con anterior. &lt;code&gt;fixup&lt;/code&gt;: combinar sin mensaje. &lt;code&gt;drop&lt;/code&gt;: eliminar.&lt;/p&gt;
&lt;h2 id="flujo-típico"&gt;Flujo típico
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;git rebase -i HEAD~3&lt;/code&gt; para últimos 3 commits. 2. Reordenar para agrupar cambios relacionados. 3. Squash commits de WIP. 4. Reword mensajes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="resolución-de-conflictos"&gt;Resolución de conflictos
&lt;/h2&gt;&lt;p&gt;Git se detiene en cada conflicto. Resuelve, &lt;code&gt;git add&lt;/code&gt;, &lt;code&gt;git rebase --continue&lt;/code&gt;. Usa &lt;code&gt;--skip&lt;/code&gt; para omitir un commit, &lt;code&gt;--abort&lt;/code&gt; para cancelar todo.&lt;/p&gt;</description></item></channel></rss>