<?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 Binary Yoga</title><link>https://yogirk.dev/tags/git/</link><description>Recent content in Git on Binary Yoga</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 06 Apr 2026 17:33:22 +0530</lastBuildDate><atom:link href="https://yogirk.dev/tags/git/index.xml" rel="self" type="application/rss+xml"/><item><title>Git Worktrees Are Not Branches</title><link>https://yogirk.dev/til/git-worktrees-are-not-branches/</link><pubDate>Mon, 06 Apr 2026 17:33:22 +0530</pubDate><guid>https://yogirk.dev/til/git-worktrees-are-not-branches/</guid><description>&lt;p&gt;Today I ran into a scenario where using Git worktree would have avoided a lot of work. Close to 2K lines of reconciliation, because I was trying to redesign the deliberation report viewer for &lt;a href="https://github.com/yogirk/agent-council"&gt;agent-council&lt;/a&gt; in 2 different branches, with 2 different agents - Claude, Gemini/Stitch. So I ended up with 2 versions of &lt;code&gt;viewer.ts&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The reflog tells the story. This is from branch#1&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HEAD@&lt;span style="color:#f92672"&gt;{&lt;/span&gt;13&lt;span style="color:#f92672"&gt;}&lt;/span&gt; checkout: main → v0.3.0-epistemic-debugger
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HEAD@&lt;span style="color:#f92672"&gt;{&lt;/span&gt;12&lt;span style="color:#f92672"&gt;}&lt;/span&gt; commit 230ed90: v0.3.0 &lt;span style="color:#f92672"&gt;(&lt;/span&gt;big feature commit, touches viewer.ts&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HEAD@&lt;span style="color:#f92672"&gt;{&lt;/span&gt;11&lt;span style="color:#f92672"&gt;}&lt;/span&gt; commit f4623ce: &lt;span style="color:#e6db74"&gt;&amp;#34;10 design audit fixes for viewer&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HEAD@&lt;span style="color:#f92672"&gt;{&lt;/span&gt;10&lt;span style="color:#f92672"&gt;}&lt;/span&gt; reset: moving to HEAD
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HEAD@&lt;span style="color:#f92672"&gt;{&lt;/span&gt;9&lt;span style="color:#f92672"&gt;}&lt;/span&gt; rebase &lt;span style="color:#f92672"&gt;(&lt;/span&gt;start&lt;span style="color:#f92672"&gt;)&lt;/span&gt;: checkout origin/main
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HEAD@&lt;span style="color:#f92672"&gt;{&lt;/span&gt;8&lt;span style="color:#f92672"&gt;}&lt;/span&gt; rebase &lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;continue&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt;: → produces 64c6778
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HEAD@&lt;span style="color:#f92672"&gt;{&lt;/span&gt;7&lt;span style="color:#f92672"&gt;}&lt;/span&gt; rebase &lt;span style="color:#f92672"&gt;(&lt;/span&gt;finish&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Meanwhile &lt;a href="https://github.com/yogirk/agent-council/pull/5"&gt;PR#5&lt;/a&gt;, from a different branch was also the redesign that I finally wanted to stick with. This was merged first and then the &lt;code&gt;v0.3.0-epistemic-debugger&lt;/code&gt; got rebased onto the updated main immediately after. The damage of the collision is that the diff between pre-rebase and post-rebase, there was 2258 lines changes in viewer.ts alone, which was just reconciliation from the rebase - not feature work. Claude Code handled the rebase, but still - not efficient.&lt;/p&gt;</description></item></channel></rss>