On timeline and reality management with git

By Joel K. Pettersson. Added 2022-05-03. Updated 2022-05-03.

Other musings of mine on time travel are here. Illustrations by myself in the past.

Git is a version control system used by software developers to manage the branching, merging, and timeline-arrangement of reality. While one might fear the arising of temporal paradoxes and accompanying existential threats, such fears are unfounded, as basic features of the design ensure existential stability. In particular, old objects are never overwritten by new ones, but new ones are rather created to exist alongside the old ones.

While fears concerning the rewriting of history are often expressed, they are based on simple misunderstandings, such as thinking that the old is truly replaced by the new, rather than existing alongside it. While the main references are usually updated to point to the new rather than to the old, don't worry – the objects of which the new is composed are distinct from those of which the old is composed, and the old objects remain in existence at least until after the last active references to them are dropped, so just hold on to yourself, and wherever you are and have been, you'll still be there along with your personal history.

An older timeline may be superseded by a newer one, but the old contents remain there (or at least somewhere) in parallel, possibly branching out from a common point in history. Old contents are dropped only if nothing refers to them any longer. Thus, anyone and anything playing any kind of active role in existence, even that of being pointed to as a long-superseded branch of reality, is assured of existential continuity. But just because something exists doesn't mean you need to pay attention to it – indeed, lots and lots of old stuff and stuffy old ones remain archived and seldom looked-at while newer and more exciting realities emerge.

Image 1
That old branch looks a bit stale. Time to clear out the cobwebs?

Branching and merging

A branch of reality is a line of events. Several lines may extend from each event, so that reality branches out over time. Several lines may also reach from different directions to the same destination, so that several realities end up turning into one.

Image 2
Reality merge ahead? Let's do this...

Some reality-defining developers prefer to add events linearly to a main branch one by one, while other developers line up their events in side branches before integrating them into the main branches. As work proceeds, one or several branches may be main destinations of added events to occur, given that several histories could be worked on at any given time, so to say. Sometimes merges between branches are smaller and sometimes they are larger.

Other than merging realities by connecting timelines, there's also another way of bringing together events from several histories. Bits and pieces of an alternative history can be cherry-picked and crammed into a timeline, or a portion of the past yanked out and perhaps replaced with something else, resulting in a new line of events which others are pushed to adopt.

To further describe the two main styles of integrating things, they are:

The resulting descriptions of the history may look quite differently, but otherwise the result is the same.

Image 3
BANG! Merge conflicts can be frustrating...

When it's not altogether clear how adjacent versions of reality are supposed to be related after events are rearranged or brought together, such conflicts may rupture the fabric of the new versions of reality. Fragments of the befores and the afters may pile up as debris, until the developer wades through the debris and brings it all together in some way.

Image 4
It took work, but wow! A successful merge can be mind-expanding!