
The replaces the NextJS site powering FreeSewing.dev with a Docusaurus setup. It's part of my efforts to simplify FreeSewing's setup so we can focus on our core value proposition.
103 lines
2.9 KiB
Text
103 lines
2.9 KiB
Text
---
|
|
title: Save often, then rewrite history like a boss
|
|
---
|
|
|
|
Git keeps track of everything so if we commit often
|
|
we have the possibility to go back to a previous commit
|
|
whenever we mess up somehow.
|
|
|
|
The downside is that now we've got a bunch of commits that
|
|
detail it took us 12 attempts to get it right and they might also
|
|
have commit message that are [not so great][1].
|
|
|
|
No need to worry, even the best among do these quick saves without
|
|
spending much time to write a meaningful commit message:
|
|
|
|
```bash
|
|
git add . && git commit -m "save"
|
|
```
|
|
|
|
The way you can get the best of both worlds is by _rewriting history_.
|
|
Save as many times you want, and when you've gotten to the point where
|
|
you feel like you've hit a good milestone, roll them all back and commit
|
|
anew with a nice commit message that makes it seem you had it all figured
|
|
out in one commit.
|
|
|
|
## Rolling back history
|
|
|
|
Before we roll back history, we need to figure out how many quick-save-commits
|
|
we did. Run the following command to bring up the commit log:
|
|
|
|
```bash
|
|
git log
|
|
```
|
|
|
|
Below is example output:
|
|
|
|
```txt
|
|
commit 7f5be3eb8612e5cd5be80532c46514d679a6cd58 (HEAD -> develop)
|
|
Author: Joost De Cock <joost@joost.at>
|
|
Date: Sun Jan 16 17:06:01 2022 +0100
|
|
|
|
spoke too soon, now it's ok
|
|
|
|
commit 67c6bc266912c5088f3211346602ba07d5754eae
|
|
Author: Joost De Cock <joost@joost.at>
|
|
Date: Sun Jan 16 17:05:47 2022 +0100
|
|
|
|
think I've got it
|
|
|
|
commit da62f7acca413a28235c72290a939f36ccd77cae
|
|
Author: Joost De Cock <joost@joost.at>
|
|
Date: Sun Jan 16 17:05:20 2022 +0100
|
|
|
|
another save
|
|
|
|
commit f217f3c4f9cd23f2033eab4d9cd98e9506b86641
|
|
Author: Joost De Cock <joost@joost.at>
|
|
Date: Sun Jan 16 17:05:07 2022 +0100
|
|
|
|
save
|
|
|
|
commit 5e26513da4c622abcaa2724e675cee5f3e9a2f87
|
|
Merge: cf961b039e 7e72569567
|
|
Author: Joost De Cock <joost@joost.at>
|
|
Date: Sun Jan 16 13:48:15 2022 +0100
|
|
|
|
Merge branch 'develop' of github.com:freesewing/freesewing into develop
|
|
```
|
|
|
|
As you can see, there's **4** commits that make up our recent work.
|
|
To roll back history and go back 4 commits, run this command:
|
|
|
|
```bash
|
|
git reset --soft HEAD~4
|
|
```
|
|
|
|
:::tip
|
|
|
|
The `4` in the command above should be updated if you want to
|
|
roll back more or less commits.
|
|
|
|
:::
|
|
|
|
After this command, the output of `git log` will now no longer include
|
|
our hasty commits:
|
|
|
|
```txt
|
|
commit 5e26513da4c622abcaa2724e675cee5f3e9a2f87 (HEAD -> develop)
|
|
Merge: cf961b039e 7e72569567
|
|
Author: Joost De Cock <joost@joost.at>
|
|
Date: Sun Jan 16 13:48:15 2022 +0100
|
|
|
|
Merge branch 'develop' of github.com:freesewing/freesewing into develop
|
|
```
|
|
|
|
Instead, all the previous changes are now staged, and we can do a new commit,
|
|
and rewrite our for quick-save commits into one commit that only commits the
|
|
end result of our repeated attempts.
|
|
|
|
This approach keeps the commit history clean, not to mention that it makes
|
|
you look like a total boss who gets everything right at the first attempt.
|
|
|
|
[1]: https://github.com/freesewing/freesewing/commit/5204ff5c16327962108e1629716e045275d3bf84
|