Make a save you can go back to¶
Verified: 2026-10-13
In developers' words: Git and GitHub: a repository, a commit, a tag
By the end of this level your app has a save on GitHub named v1-works, and when something breaks you type one sentence to go back to it.
"Where did the working version go?"¶
It worked on Tuesday. You asked for one more thing, and it broke. You pressed Rollback, it said "Rollback completed", and it is still broken. The version that worked is in there somewhere, and you cannot ask for it, because it has no name. That is how a week of work disappears.
Rollback is the platform's autosave: one slot, no name, written over. Developers make their own save before they change anything, give it a name, and go back to it by name when a change breaks something. Your AI tool does it when you tell it to. Three sentences, four minutes, and you keep it for as long as you build.
Without a save, every change is a bet with your whole app¶
- The AI changes many files at once, fast, in ways you did not read. One wrong guess and the working version is gone. "Try again" is not undo. It is another guess.
- The platform's undo is not yours. It saves when it wants, keeps one slot, and cannot tell a good version from a broken one. By the time you need it, it has written over the one you wanted.
- You hit this wall in days, not years. Developers lost work for decades before this habit stuck. With an AI typing, you make a week of changes in an afternoon, and lose them in a minute.
- You can't avoid it. Almost all software is kept this way: the apps you use, the tool you are typing into, your own project. Its words will keep turning up in what your AI tells you. Better to learn them now, on purpose, than later, mid-crash.
- Four minutes now, or a weekend later. After this, "it broke" costs you one sentence.
The level in one picture¶
your app lives here, on their servers
- AUTOSAVEone slot, no name, no date
the repository: a copy of your app on GitHub, under your own account
- 2working: home, contactMon 5 Oct
- 3working: menu, sign-upv1-worksTue 6 Oct
the one with a name on it
- broke: one more thingToday, 09:12
every file as it was on Tuesday
Put a copy of your app on GitHub¶
A repository is a copy of your app on GitHub, under your own account, not on the platform: your save files, on your own drive, where nothing the platform does can write over them.
On Claude Code or Cursor, open your app's folder in the tool and paste this. On Lovable and Bolt.new it is a button in the project's settings, under "GitHub".
Prompt: Connect this project to a new private GitHub repository under my own account, named after the folder my project is in, whatever that folder is called. When it is done, give me the repository link and tell me which files are not in it, and why.
✓ A link with your name in it, like github.com/your-username/your-app, and .env left
out: it holds your secrets. A page asking you to authorise the tool is your own account letting
your own tool in. Say yes.
- Before
Your app: a folder of files on your computer.
- After the prompt
The folder is copied into your repository: one copy on your computer, one on GitHub, under your own account. Nothing in the app changes.
Save every file, exactly as it is now¶
A commit is a snapshot of your app: every file at one moment, dated, with a message that says what works.
Replace the part in angle brackets, brackets included, with what you have seen working, like
working: home page, contact form, menu. Not checked yet? working: unchecked is a fine
message.
Prompt: Save everything exactly as it is right now, as one commit, with the message "working:
<what works today, in a few words>". Tell me the commit's short id, then put it on GitHub. If there is nothing new to save, say that you checked, and tell me the latest commit's short id instead and whether it is on GitHub.
✓ One line with a short id, like a1b2c3d working: home page, contact form, menu. Right
after step 1 it may say "nothing new to save" and give that commit's id instead. Same thing.
- Before
Every file of your app, as it is right now.
- After the prompt
One commit in your repository: dated, with your message and a short id like
a1b2c3d.
Name it something you'll recognise in three weeks¶
A tag is a name on a commit. The message says what the
commit holds; the tag is how you ask for it back. Many commits will say "working:", and only one
is v1-works.
Prompt: Name the latest commit
v1-works, as a tag, and put the tag on GitHub too, so I can come back to it by that name later. Tell me how I ask you to go back to it.
✓ One line saying v1-works exists, and one sentence on how to go back.
- Before
The commit from step 2, known by its message and its id.
Keep that sentence. It is your load button, and the one line on this page to remember: "go back to v1-works".
Break it on purpose, then load the save¶
Your headline is safe in v1-works, so break it. On purpose. Four prompts, one at a time.
Prompt 1: Change my home page's headline to the word TEST, and save that as a new commit with the message
test, on this computer only, not on GitHub.Prompt 2: What does my home page's headline say right now?
It says TEST, in words. You do not need to start the app.
Prompt 3: Put every file back exactly as it was at
v1-works, and throw the test commit away, so my history looks as if it never happened.
It may ask permission for a command with "reset" or "hard" in it. Say yes: it changes only your computer, and v1-works is already on GitHub.
Prompt 4: What does my home page's headline say right now?
Your real one.
- Prompt 1
The headline is TEST, in a new commit called
test, on this computer only. - Prompt 2
Asked, the tool reads it back: TEST.
- Prompt 3
The
testcommit is thrown away andv1-worksis loaded. - Prompt 4
Your real headline is back. That is the undo.
That is your undo. Next Tuesday, when it breaks for real, you type "go back to v1-works" and
it is over.
Loading a save brings back your app, not its data¶
One limit. Going back to a commit puts your app back. It does not put your users' data back: what they typed stays as it is, good or bad. Level 5 covers the data.
Common problems¶
It asked for a name and email.
Give the ones on your GitHub account and send the prompt again.
The copy got the folder's name.
Rather have your app's name? Add "named sunny-side-cafe instead of the folder's name" to the step 1 prompt, lowercase with dashes. The name is hard to change later.
It refused the "reset" command.
Ask "put the files back the way
v1-workshas them and move my main line back to it, without that command". A refusal can cancel the other things it was doing in the same breath, so ask what it did before the refusal, and for one step at a time.It said I am "ahead" of GitHub, or mentioned a hidden copy.
"Ahead" is what "this computer only" means, and prompt 3 puts it right. The hidden copy is harmless and goes on its own. Last, ask "are my saves the same as on GitHub?" It should say yes.
Where it is on GitHub.
Not on the front page. Open the menu that says "main" and switch to Tags:
v1-worksis there. A small file called.gitignoreis the list of what was left out. If.envis on the page, say "take.envoff GitHub and keep it out".On Lovable and Bolt.new.
They commit on their own schedule and list the commits in a version history; each lands in your repository on GitHub. The top entry is your latest commit, and its short id is the name you use. Restoring from the version history is the same undo. Not yet tested there.
Each thing on this page, with its three names¶
| In the game | Developers say | Plain |
|---|---|---|
| your save files | repository |
a copy of your app on GitHub |
| a save | commit |
every file, right now, dated |
| the note on a save | commit message |
what works today, in a few words |
| the name on a save | tag |
v1-works |
| load | "go back to v1-works" |
go back to a save |
| autosave | rollback |
the platform's own undo |
Next · Level 2 "Which change broke it?" See what a change will touch before you say yes.