git-save
git-save is a Git command designed for commitless version
control. The instruction git save
is equivalent to git
add . && git commit --allow-empty-message -m ""
.
What is commitless version control?
Commitless version control is a software development method with two rules:
- Make saves instead of commits. A save is like a commit,
except
- it has no commit message, and
- it includes all changes in all files.
- Don't worry about keeping a clean, thematically organized commit history. A save should contain all changes made since the last save, regardless of theme.
In summary,
What is git-save?
git-save is a tool that makes it easy to use Git as a commitless version control system. It has a simple interface:
$ git save
In combination with a file watcher, saves can be performed automatically whenever you write to the files in your project:
$ watch example.doc | while read; do git save; done
Benefits
For the single developer, commitless version control presents several benefits:
- Lower commit hurdle. Using git-save is as easy as saving a Microsoft Word document.
- More comprehensive history. Because saves don't need to be complete, isolated or even well-written, they can be made much more often. This results in a much more comprehensive history, where changes that normally wouldn't make it into a commit are included as well.
- Lower risk of losing work. Because saves are made more often than commits, and saves automatically capture all changes, not just a carefully selected few, potentially important changes rarely remain uncommitted, hanging in the air and easily lost.
Additionally, if commitless version control were to become popular, it might have a few more far-reaching positive effects:
- Improved tooling. Lacking commit messages, developers would be forced to rely more on information about which files were changed and in which ways -- which version control tools would be forced to convey better. This information is ultimately more precise than a commit message.
- Beginner-friendliness. Without the requirement to keep a clean commit history, and the accompanying mental burden, it would be much easier for beginners to get into the habit of putting their projects under version control.