This commit is contained in:
bleeptrack 2021-01-05 16:44:17 +01:00
parent 82b8e8f458
commit 9109394271
7 changed files with 257 additions and 0 deletions

View file

@ -1,3 +1,4 @@
stash
index
time-machine
low-level

5
levels/stash/sequence Normal file
View file

@ -0,0 +1,5 @@
stash
stash-pop
stash-clear
stash-branch
stash-merge

45
levels/stash/stash Normal file
View file

@ -0,0 +1,45 @@
title = Stashing
cards = checkout commit-auto merge reset-hard
[description]
You will encounter situations in which you are working on your project but you need to
put your current changes aride temporarily. To do so, you can use the stash function. Use
git stash push
to add your current changes to the stash stack.
---
tipp1
---
tipp2
---
tipp3
[setup]
echo "Apple Pie:" > recipe
git add .
git commit -m "creating a recipe"
echo "- 4 Apples" >> recipe
git add .
git commit -m "Adding ingredients"
echo "- 500g Flour" >> recipe
git checkout main
[win]
# Did you stash the current changes?
test "$(git stash list | wc -l)" -ge 1
[actions]
[congrats]
Nice stash you got there! :)

50
levels/stash/stash-branch Normal file
View file

@ -0,0 +1,50 @@
title = Branch from stash
cards = checkout commit-auto merge reset-hard
[description]
If you want to keep your changes but they don't belong to the main branch, you can easily
create a new branch from your stashed shanges. Just use
git stash branch <branchname> <stash>
If you just want to use the latest stash entry, you can leave the <stash> option empty.
Create a new branch from the stashed changes!
Clear you stash stack!
---
tipp1
---
tipp2
---
tipp3
[setup]
echo "Apple Pie:" > recipe
git add .
git commit -m "creating a recipe"
echo "- 4 Apples" >> recipe
git add .
git commit -m "Adding ingredients"
echo "- 500g Flour" >> recipe
git stash push
git checkout main
[win]
# Did you clear your stash stack?
test "$(git branch --list| wc -l)" -ge 2
[actions]
[congrats]
All clear! :)

57
levels/stash/stash-clear Normal file
View file

@ -0,0 +1,57 @@
title = Clear the Stash
cards = checkout commit-auto merge reset-hard
[description]
If you want to inspect your stash stack, use the command
git stash list
Oh, you don't want to keep your stashed changes? There are way too many? Then go ahead and clear the stack with
git stash clear
If you only want to discard a certain stash entry, you can use
git stash drop <stash>
Clear you stash stack!
---
tipp1
---
tipp2
---
tipp3
[setup]
echo "Apple Pie:" > recipe
git add .
git commit -m "creating a recipe"
echo "- 4 Apples" >> recipe
git add .
git commit -m "Adding ingredients"
echo "- 500g Flour" >> recipe
git stash push
echo "- 200g Sugar" >> recipe
git stash push
echo "- Pinch of Salt" >> recipe
git stash push
git checkout main
[win]
# Did you clear your stash stack?
test "$(git stash list | wc -l)" -eq 0
[actions]
[congrats]
All clear! :)

53
levels/stash/stash-merge Normal file
View file

@ -0,0 +1,53 @@
title = Merging popped stash
cards = checkout commit-auto merge reset-hard
[description]
When you want to reapply your changes but you already continued working on your file, you might get
a merge conflict! Let's practise this situation.
Pop the changes from the stash with
git stash pop
and resolve the merge conflict. Commit the resolved changes and clear the stash stack afterwards.
---
tipp1
---
tipp2
---
tipp3
[setup]
echo "Apple Pie:" > recipe
git add .
git commit -m "creating a recipe"
echo "- 4 Apples" >> recipe
git add .
git commit -m "Adding ingredients"
echo "- 500g Flour" >> recipe
git stash push
echo "- Pinch of Salt" >> recipe
git checkout main
[win]
# Did you resolve the confict and commit?
{ git show HEAD | grep "Flour"; } && { git show HEAD | grep "Salt"; }
# Did you clear stash stack?
test "$(git stash list | wc -l)" -eq 0
[actions]
[congrats]
Yay, you got your changes back! :)

46
levels/stash/stash-pop Normal file
View file

@ -0,0 +1,46 @@
title = Pop from Stash
cards = checkout commit-auto merge reset-hard
[description]
When you stashed your changes and you want to apply them back to your current working directory, you can use
git stash pop
This will remove the changes from the stash stack. If you also want to keep the changes on the stash stack, use
git stash apply
---
tipp1
---
tipp2
---
tipp3
[setup]
echo "Apple Pie:" > recipe
git add .
git commit -m "creating a recipe"
echo "- 4 Apples" >> recipe
git add .
git commit -m "Adding ingredients"
echo "- 500g Flour" >> recipe
git stash push
git checkout main
[win]
# Did you pop the changes from the stash stack?
test "$(git stash list | wc -l)" -eq 0
[actions]
[congrats]
Yay, you got your changes back! :)