Feineigle.com - Git for Humans

Home · Book Reports · 2018 · Git for Humans

Published: August 15, 2018
Tags:  Git · Programming



The book in...
One sentence:
A simple, no frills, introduction to the basic Git commands and concepts that will get you started and serve most of your daily needs.

Five sentences:
First you'll learn, less than exactly, what version control in, and how you've probably used some rudimentary version control already, without ever knowing it. Next you'll learn a handful of basic commands that will take care of 90% of your day-to-day needs. While you can use Git completely locally, if you want to collaborate you'll inevitably need to share your work; this is done with remote repositories, of which the basics are covered.. Finally you'll take a stroll down memory lane with the log command, which allows you to view the history of your project in any number of useful formats. While this is only the most basic of introductions, there are several quality links provided to more detailed books, online references, and tutorials to build on the solid foundation thus provided.

designates my notes. / designates important.


Thoughts

This is an extremely short read. While it provided everything expected, it is still quite the crash course. There is enough to get you started, but that is all. You’ll need to follow up if you are doing more than the most basic of operations. That said, it was a great introduction to whet you appetite.

The book follows the typical introductory tech book format: first an explanation of version control is given, using a basic example of saving multiple copies of a file with different (dated) names. Git, as the author states multiple times, is simply a more complex, and powerful, way of doing just that.

Apparently Git also provides a very low level of abstraction and doesn’t hide much, which can be a blessing or a curse depending on your perspective. What is nice is that Git won’t do anything unless you explicitly tell it to.

From here it moves through the most basic commands: init, clone, status, add, and commit. These should cover most of your day-to-day use claims the author. With my minimal understanding of Git, using it only locally, I can mostly agree.

Next branches are covered, but it an high level fashion. There is no concrete tutorial like examples. Instead you get advice like: branches should, although there are no hard and fast rules, contain topics; you shouldn’t let your master and topic branches get too far apart; you should merge the master into topic or vice versa to keep them reasonably up to date.

That said, some teams use branches differently. One team may say: everything on master is deployable. Another might have release branches while master is cutting edge and less tested.

Merging is covered, also in high level detail. When merging a commit is made automatically, but you can override this to customize the message, but that is probably not necessary. The dreaded merge conflict and their resolution is touched on, again in high level.

Remote repositories are covered, but, like the other coverage, only in the most basic fashion. There is a good explanation of SSH and HTTPS remote access and there is a simple discussion of the basic remote commands: push, pull, fetch.

While it mentions that anyone can easily set up their own private remote, there are no details on how to do this. It does belabor that SSH will be read and write access, while HTTP can allow for only read access (or read/write).

Lastly how to look through the history with the log command is covered. Again, little detail beyond formatting is looked at.

Overall I’d say it is a worthwhile read, although there is nothing but the most basics here. If you want to learn more, there are several references to more detailed books and tutorials provided.

Further Reading


Table of Contents


· 01: Thinking in Versions

· 02: Basics

· 03: Branches

page 54:
(master) $: git checkout -b new-homepage
Switched to a new branch 'new-homepage'
(new-homepage) $:
page 57:
page 64:
page 65:
page 66:
(new-homepage) $: git merge master
Updating c7038f8..1c4b16a
Fast-forward
  Makefile            | 7 ++
  Rakefile            | 15 ++--
page 70:

· 04: Remotes

page 74:
page 77:
page 83:
page 86:
page 87:
page 90:

· 05: History

page 94:
$: git log --pretty=oneline
45b1ec87cd2fde95a110dfe3028e93d25c9af186 Rename styles.css to main.css
bf8144d4690d3f6052dc7f42135e3e9944b96b5a Initial commit
page 95:
$: git log --oneline master..new-homepage
bce44eb Bigger navigation buttons
056c8fd Update hero area w/ new background image
7e53652 Make font loading async
$: git log --oneline new-homepage..master
5514d53 Fix JavaScript bug on products page
4af326c Support for Microsoft Edge