Git from the inside out
Certain systems can best be understood as black boxes. You put some commands in and magic happens. Git was not designed to be such a system and early users of git know this.<p>During the last 5 years, many GUIs have filled in this gap, making it increasingly likely to find people completely stuck because they miss knowledge of the foundations.<p>Git is a utility to manage an append-only repository of tree-objects, blobs and commits. To help humans, git adds<p>- human-readable pointers (branches, HEAD, stash)<p>- an method to incrementally add changes (staging&#x2F;index&#x2F;working area)<p>- a method to append tree-objects, blobs and commits from repository to another<p>- some commands which alleviate steps in common tasks<p>These last set of commands cause pain, as users without foundational knowledge, do not realize these commands are compounding many small steps.