42
Introduction - Steve's Tutorial on Jujutsu, an alternative front-end to git
(steveklabnik.github.io)
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
It is simply not my experience that cleaning up commits after committing early is difficult in git. Amending a commit is a single
-a
flag away from thegit commit
command. The opposite problem is when you do too much work and want to split it into multiple commit rather than a huge one, in which casegit add -p
is again a single flag away fromgit add
.In general, git’s entire model is to allow you to work first, and do administrative tasks (including tidying up your commit history etc) later.
And almost nothing is truly destructive in git, the vast majority of cases can be fixed by judicious use of
git reflog
.The only cases I’ve ran into where git repos became corrupted were caused by external tools, mainly GUIs that label buttons with git commands that do something different when clicked (like the button labeled
push
actually doinggit push —all
for no good reason, and such things) with users that have no idea how git works that have been trained just by telling them “click this to save your work, click this to get the last version of the code”I have to admit that in spite of having used git for about 20 years, I never used reflog. And even with magit I did stuff like rebase rarely. I found it costing too much time to read the man pages again every time and meditate what would happen with "reset xyz".
Fair, git’s documentation can definitely be too terse despite being very extensive and could really benefit from examples and common use cases sections. I only use a fraction of what git offers, but what I do use I use often, which definitely contributes to my happiness with git: I seldomly need to look things up
Now, jujutsu covers almost the same with < 10% of that complexity and less than 10% of the documentation - simpler but the same power.