Tech

Developer proposes Jujutsu workflow to mitigate Git rigour fatigue

A new guide suggests using the Jujutsu version control system to create improvised commits during development, then reorganising the history at the end to maintain clean, atomic changesets without the friction of strict real-time discipline.

Author
Owen Mercer
Markets and Finance Editor
Published
Draft
Source: Hacker News · original
Tech
No image available
Ike Saunders outlines a method for deferring commit hygiene to reduce cognitive load during complex software development

Ike Saunders has published a guide titled "Defeating Git Rigour Fatigue with Jujutsu" on his website, ikesau.co, proposing a workflow designed to address the mental load associated with maintaining strict commit hygiene during the development of large software features. The article argues that the conventional requirement to write "Good Commits" in real time is often difficult to sustain, leading to what Saunders terms "rigour fatigue."

The core of the proposed method involves allowing developers to create improvised commits, including temporary debugging state, throughout the coding process. Rather than forcing atomic commits as changes are made, the workflow encourages capturing all changes in an initial "messy" branch. Saunders details the use of the command `jj new -B messy-first` to establish this branch, effectively creating a container for all subsequent modifications without immediate concern for logical separation.

Once development is complete, the workflow utilises Jujutsu commands to reorganise the history. Saunders recommends using `jj squash --from messy-first..messy-last --into messy-first` to consolidate all changes into a single commit. This is followed by an interactive squashing process using `jj squash -i`, which allows the developer to separate distinct logical changes, such as type definitions versus user interface updates, into their own separate commits.

This approach aims to resolve the issue where later commits overwrite earlier work, causing the narrative of the code changes to break. By deferring the organisation of the commit history, developers can iterate quickly on compartmentalised changesets. Saunders notes that while commands like `jj absorb` and `jj squash` help, they still require effort, making the deferred workflow a more efficient alternative for managing complex, non-linear development tasks.

The guide highlights that this method allows the final "everything commit" to be emptied and replaced with clean, scoped commits that facilitate easier code reviews. Saunders contends that for large features, this strategy is easier than maintaining strict Git rigour for the entire lifecycle of the feature, effectively decoupling the act of coding from the discipline of version control hygiene.

Continue reading

More from Tech

Read next: Apple to roll out manual EQ controls for AirPods in iOS 27 update
Read next: Apple rolls out visionOS 27, integrating AI-driven Siri into Vision Pro headset
Read next: Apple Overhauls Siri with Google Gemini Partnership and Standalone App at WWDC 2026