---
title: "🥇 Main Branch: The One Where the Old Commands Win"
date: 2026-04-23
author: Andrea Griffiths
language: en
issue: 24
excerpt: "There's a lot of purple AI-generated noise out there right now. Let's cut through it with Git 2.54's new history command and the switch/restore split you should actually be using."
tags: ["git-2.54", "git-history", "git-switch", "git-restore", "copilot-cli", "google-cloud-next"]
canonical_url: https://mainbranch.beehiiv.com/p/3a07d360-73a8-4ed8-8e69-d56bcaacab67
---

Hiya friends,

There's a lot of purple AI-generated noise out there right now. This week I want to cut through it with two things that actually matter: a Git release that's been quietly sitting in your terminal, and a debugging command most devs skip entirely.

## 🚢 What Shipped

### Git 2.54 ships git history — and it's the rebase fix you didn't know you needed

[Git 2.54](https://github.blog/open-source/git/highlights-from-git-2-54/) dropped April 20 with a new experimental command: **git history**. It does two things: `reword` lets you fix a commit message without spinning up a full interactive rebase. `split` breaks one commit into two.

```bash
# Fix a typo in the last commit message
git history reword HEAD~1

# Split a commit into two
git history split HEAD~2
```

It won't work on histories with merge commits and refuses to proceed if it would cause a conflict. That's by design. It runs without touching your working tree, so it's safe to script.

Also in 2.54: `git rebase --trailer` appends a trailer like `Reviewed-by:` to every rebased commit in one shot.

If you're shipping AI-generated code fast, your commit history is probably a mess. `git history` is how you clean it up.

### git switch and git restore exist. Time to use them.

In 2019 Git split `git checkout` into two commands. `git switch` for branches, `git restore` for files. Clearer intent, less room for mistakes. The old command still works. It just wasn't designed to do one thing well.

`git switch` handles branches:

```bash
git switch main # switch to main
git switch -c my-feature # create and switch in one step
git switch - # go back to previous branch
```

`git restore` handles files:

```bash
git restore README.md # discard unstaged changes to a file
git restore --staged README.md # unstage a file without losing changes
```

The difference matters. With `git checkout`, `git checkout README.md` and `git checkout main` look nearly identical. One restores a file. One switches branches. That ambiguity has caused real data loss.

AI-generated scripts still use `git checkout` everywhere. Now you know the modern version — and you can spot when the generated code is behind.

## 🎧 What I'm Watching

**Copilot CLI update: chronicle, plugins, and fleet mode | GitHub Checkout** by Ryan Hecht, GitHub

Ryan is the PM behind Copilot CLI and one of the clearest explainers I know. This episode covers `/chronicle`, the plugin marketplace, and what's next for the best harness IMO.

Worth your time if: you're curious where agentic terminal workflows are actually heading. [Watch on YouTube](https://www.youtube.com/watch?v=9oAcwmrUE44)

## 🔧 What I'm Using

I tried both Claude's design tool and Google Stitch for UI generation. Stitch won, and it wasn't close. This week Google also open-sourced [DESIGN.md](https://DESIGN.md) — a plain markdown spec that gives AI agents your actual design system: not just hex codes, but the why behind each token.

Drop it in your project root and any coding agent generates on-brand UI without you re-explaining your brand every single prompt. Less purple for all!

## ✨ This Week

Google Cloud Next has me in Vegas, and today at 3:30pm I'm doing a lightning talk from the GitHub booth on multi-model AI workflows. If you're here, come say hi. That's also why this landed in your inbox on a Thursday.

With gratitude,  
I'll see you next week,  
Andrea

---

📌 **P.S.:** I think I found my next career…JK…or am I 😀

![DJ MainBranch at Vegas pool party](/images/dj-mainbranch.jpg)

*DJ MainBranch reporting for duty!*

---

**Audio Version**: This newsletter is also available as audio, generated using [Fish Audio](https://fish.audio/?fpr=andrea63) with my cloned voice. Fish Audio makes it incredibly easy to create natural-sounding speech from text — I simply paste the newsletter content and get high-quality audio in seconds.