title = Branching out
cards = checkout commit-auto merge reset-hard

[description]

You can use these little blue labels to give names to different timelines! This makes it easier to remember what happened where.

One of your colleagues messed up here - can you help reordering the branches correctly using the "reset" card?

When you do commits or merges while you're on a branch, the branch will grow with you. Try that while you eat that donut.

Finally, merge all timelines together, in a way so that the "main" branch points to the result. That's base reality!

---
tipp1
---
tipp2
---
tipp3

[setup]

echo "A friendly old lady.
Sells delicious baguettes." > mary

echo "A rebellious teenager.
Sells good coffee." > larry

echo "A snail. Literally a snail.
Sells donuts with an unspecified, slimy filling." > gary

echo "You do not have a baguette.

You do not have coffee.

You do not have a donut." > you

git add .
git commit -m "The Beginning"

git checkout -b coffee
echo "You have a baguette.

You do not have coffee.

You do not have a donut." > you
git add .
git commit -m "You buy a baguette"

echo "You ate a baguette.

You do not have coffee.

You do not have a donut." > you
git add .
git commit -m "You eat the baguette"

git checkout -b baguette main
echo "You do not have a baguette.

You have coffee.

You do not have a donut." > you
git add .
git commit -m "You buy some coffee"

echo "You do not have a baguette.

You drank coffee.

You do not have a donut." > you
git add .
git commit -m "You drink the coffee"

git checkout -b donut main
echo "You do not have a baguette.

You do not have coffee.

You have a donut." > you
git add .
git commit -m "You buy a donut"

git checkout --detach main

[win]

# Did you eat a baguette on the main branch?
git show main:you | grep "You ate.*baguette"

# Did you drink a coffee on the main branch?
git show main:you | grep "You drank.*coffee"

# Did you eat a donut on the main branch?
git show main:you | grep "You ate.*donut"

[actions]

test "$(git rev-parse HEAD^)" = "$(git rev-parse donut)" && hint "Ooops, your branch ref is still on the old commit."

[congrats]

Nice! It's often convenient to stay on branches most of the time!