Soilpunk 🌏🤘 - Joulethief

Git as Archiving: MySpace-Style Pages (90 min)

Goal: introduce Git as an archiving practice (history, provenance, selection), then do a playful branch-based website exercise published live.

Agenda (90 min)

  1. Context: what Git is, what it does, who uses it (10 min)
  2. Install + quick sanity check (10 min)
  3. Core concepts + core commands (20 min)
  4. Forgejo: accounts + clone/push permissions (10 min)
  5. Exercise: branch a page, publish live, iterate (35 min)
  6. Wrap-up: good practices + next steps (5 min)

What is Git

Archiving analogy:

What Git is not

Ecosystem

Typical workflow terms:

Workshop outcome

Each participant will:

Install Git

Check first:

git --version

If missing:

Minimum requirement: you can run git in a terminal.

Configure identity (once)

git config --global user.name  "Your Name"
git config --global user.email "you@example.com"

Check:

git config --global --list

This shows up in commit metadata (provenance).

Core concept: three areas

  1. Working tree: your files right now
  2. Staging area (index): selection for the next deposit
  3. Repository history: commits (deposits)

This is why Git feels "archival":

Commands: the essential set

You listed most, but for usability we add 3:

Recommended minimal set for today:

Command: git init

Create a repository in the current folder.

git init

Creates a .git/ directory containing history + metadata.

For the exercise we will use git clone instead of git init.

Command: git status (your dashboard)

git status

Shows:

If you only remember one command: remember this.

Command: git add (selection)

Stage files for the next commit (deposit).

git add index.html
git add assets/

Stage everything (use carefully):

git add .

Staging is curatorial: select what belongs together.

Command: git commit (deposit + metadata)

git commit -m "Add MySpace-style profile page"

Good commit message pattern:

Command: git diff (what changed)

Unstaged changes:

git diff

Staged changes:

git diff --staged

Command: git log (inventory)

git log --oneline --decorate --graph -n 10

Gives a quick "finding aid" of deposits.

Command: git branch and git checkout

List branches:

git branch

Create a branch:

git branch people/yourname

Switch to branch:

git checkout people/yourname

Shortcut (create + switch):

git checkout -b people/yourname

Branches are parallel dossiers: safe space for changes.

Command: git push / git pull

Push your branch to the server:

git push -u origin people/yourname

Pull updates from server:

git pull

During the exercise you mostly push your branch. Pull is mainly for getting new changes on main (if needed).

Optional: git rm

Remove a tracked file and stage the removal:

git rm old.html
git commit -m "Remove old page"

For this workshop you probably will not need it.

Forgejo: what we use today

Rules for today:

Forgejo: account setup

  1. Create account at: git.<your-domain>
  2. Confirm you can sign in
  3. Add SSH key (optional) OR use HTTPS credentials

We will provide:

Exercise overview

You will build a deliberately simple “MySpace-style” page:

Workflow loop:

clone -> branch -> edit -> status -> add -> commit -> push -> view -> iterate

Exercise: step 1 (clone)

git clone <REPO_URL>
cd <REPO_NAME>

Sanity check:

git status
git branch

Exercise: step 2 (create your branch)

Choose a slug: lowercase, no spaces. Example: people/alex.

git checkout -b people/<your-slug>

Confirm:

git status

Exercise: step 3 (edit the page)

Edit the root index.html (and optionally style.css, assets/).

Make a visible change first:

Then check changes:

git diff
git status

Exercise: step 4 (stage + commit)

git add index.html
git commit -m "Customize profile page for <your-slug>"

If you added assets:

git add assets/
git commit -m "Add assets for <your-slug>"

Small commits win. One change = one deposit.

Exercise: step 5 (push your branch)

git push -u origin people/<your-slug>

If prompted for credentials, use your Forgejo login method.

Exercise: step 6 (view live)

Open the gallery:

Find your card:

Iterate:

edit -> status -> add -> commit -> push -> refresh

Common problems (fast fixes)

Wrong branch:

git branch
git checkout people/<your-slug>

Nothing staged:

git status
git add index.html

Push rejected (main protected):

Auth issues:

Concept recap in archiving terms

Suggested “good enough” commit messages

Bad:

Better:

Rule: message should still make sense in 6 months.

Optional extension (if time remains)

Wrap-up

You should now be able to:

Next steps:

End: remind participants their branches will be removed after the workshop.