### Git Tutorials and Resources #### Resource Pages - **Understanding Git** http://www.queness.com/post/16139/understanding-git A collection of links to articles, tutorials, cheat sheets, and clients - **7 Useful Git Tips for Beginners** http://sixrevisions.com/web-development/git-tips/ High-level directions for learning Git, including links to many tutorials #### Tutorials - **Atlassian Git Tutorials** https://www.atlassian.com/git/tutorials An excellent collection of tutorials, from basics to advanced topics. Very well written and easy to read. - **Git Concepts Simplified** http://gitolite.com/gcs.html An HTML slideshow that walks through Git's core concepts, with diagrams. - **Learn Version Control with Git** https://www.git-tower.com/learn/git/ebook/command-line/introduction A complete introduction to using Git that assumes no prior knowledge - **Git from the Bottom Up** https://jwiegley.github.io/git-from-the-bottom-up/ Explains Git by describing the internal data structures and how they work. More technical than other tutorials, but understanding the way Git handles data can really make understanding the commands easier. - **Conversational Git** http://blog.anvard.org/conversational-git/ An easy-to-read, informal approach to learning Git - **Think like a Git** http://think-like-a-git.net/ A tutorial for "advanced beginners" who know the basic commands, but want to better understand Git's concepts - **Git from the Inside Out** https://codewords.recurse.com/issues/two/git-from-the-inside-out An explanation of how Git works, by describing the internal data structures and the graph that they form. - **Git for Humans** https://speakerdeck.com/alicebartlett/git-for-humans A slideshow introducing Git concepts without complex terminology - **Getting Git** https://gettinggit.com/ A paid video tutorial series that covers Git commands in detail, as well as everyday scenarios you might encounter while using Git - **Learn Enough Git to Be Dangerous** https://www.learnenough.com/git-tutorial A tutorial that teaches practical use of Git basics, Github, and Git workflows. - **Git Magic** https://crypto.stanford.edu/~blynn/gitmagic/ An extensive Git tutorial that teaches usage instructions first, and works its way up to advanced Git techniques and concepts. - **Git Beyond the Basics** http://blog.bloomca.me/2017/11/17/git-beyond-the-basics.html A good tutorial that explains intermediate concepts like merging, rebasing, cherry-picking, and cleaning pull requests #### Tips and Useful Info - **How to Write a Git Commit Message** http://chris.beams.io/posts/git-commit/ Great advice for how to write a succinct, informative, and useful commit message. - **Advance Git** https://medium.com/@jstats/advance-git-dfe557bdbe59 Gives advice for good commit messages, and describes the options and usage for several advanced Git commands (`add --patch`, `rebase`, `reflog`, and more). - **19 Tips for Everyday Git Use** http://www.alexkras.com/19-git-tips-for-everyday-use A variety of practical commands for different scenarios. - **Git Tips** https://github.com/git-tips/tips A large collection of Git tips and tricks. - **Digit** https://github.com/optionfactory/digit A tool to visualize the contents of a Git repo as an aid to learning - **Advanced Git Advice** https://medium.com/@zlobin/advanced-git-advice-27087a7fbb29 A variety of useful tips and commands. - **A Note about Git Commit Messages** http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html Some quick explanations of how to format Git commit messages, and commands where message formatting matters - **Git Commit Good Practices** https://wiki.openstack.org/wiki/GitCommitMessages A number of good practices to follow when making commits and writing commit messages - **Life-Saving Git Tips** https://www.cuttlesoft.com/life-saving-git-tips/ A variety of useful tips, including use of cherry-picking, local pulling and testing, and use of aliases to simplify tasks - **Git Flight Rules** https://github.com/k88hudson/git-flight-rules A guide for Git users about what to do when things go wrong. Covers topics like editing commits, staging and unstaging files, fixing branches, rebasing/merging, and much more. - **Advanced Git Commands You Will Actually Use** https://stosb.com/blog/advanced-git-commands-you-will-actually-use/ Describes a wide variety of useful commands, such as ways to refer to commits, searching commit logs, manipulating history, and much more. ## Specific Techniques - **Git's Patch Mode All the Way** https://blog.petrzemek.net/2016/07/10/git-patch-mode-all-the-way/ Shows how to use Git's ability to selectively pick and choose chunks of code as part of various actions - **Git: Undoing changes and rewriting history** http://slides.com/lilianakastilio/github-4#/ A slideshow discussing various ways to change commit history - **Beginner's guide to git rebasing and squashing** https://shinglyu.github.io/web/2016/11/08/servo-rebase-and-squash-guide.html A tutorial on rebasing and squashing commits to change past history. - **Git Rebasing and Clean Pull Requests** https://www.jungledisk.com/blog/2016/11/21/git-rebasing-and-clean-prs/ Some best practices for cleaning up branches and producing readable commits. - **A closer look at git rebase** https://dev.to/gonedark/a-closer-look-at-git-rebase An explanation of what "rebasing" is, with some helpful graphics - **Visualize Merge History with git log --graph, --first-parent, and --no-merges** https://redfin.engineering/visualize-merge-history-with-git-log-graph-first-parent-and-no-merges-c6a9b5ff109c Describes issues with using `git log` to visualize history, and some arguments that can be used to give a potentially better picture of what's actually happened. - **How to undo (almost) anything with Git** https://github.com/blog/2019-how-to-undo-almost-anything-with-git Instructions for undoing and redoing changes in various scenarios. - **Undoing in Git** https://blog.tratif.com/2018/01/04/undoing-in-git/ A summary of the most common ways for undoing things in Git, including bringing back removed commits. - **Beginner's Guide to Interactive Rebasing** https://hackernoon.com/beginners-guide-to-interactive-rebasing-346a3f9c3a6d An excellent walkthrough of how to use interactive rebasing for rewriting commit history by editing, deleting, and combining commits #### E-Books - **Pro Git** https://git-scm.com/book/en/v2 An in-depth online reference to all aspects of Git - **Git Internals** https://github.com/pluralsight/git-internals-pdf A free PDF that digs deep into Git's data structures and behavior #### Workflows - **Git Workflows** http://documentup.com/skwp/git-workflows-book Covers ways to increase productivity, create cleaner commit history, and improve code reviews - **Understanding the Git Workflow** https://sandofsky.com/blog/git-workflow.html Looks at how to properly handle branches and local history vs public history - **A Successful Git Branching Model** http://nvie.com/posts/a-successful-git-branching-model/ Describes a widely used multi-branch approach to managing development and release processes #### Cheat Sheets - **A Visual Git Reference** http://marklodato.github.io/visual-git-guide/index-en.html Describes several common Git commands, with diagrams to explain what each one does - **Tower - Git Cheat Sheet** https://www.git-tower.com/blog/git-cheat-sheet/ A quick reference PDF listing some common commands - **Interactive Git Cheat Sheet** http://ndpsoftware.com/git-cheatsheet.html A clickable page that shows how various commands move data between different parts of Git's storage (working copy, index, local repo, remote repo) - **giteveryday** https://www.kernel.org/pub/software/scm/git/docs/giteveryday.html A useful minimum set of commands for Everyday Git. Commands grouped by usefulness to different categories of users. - **Git Getting Started Cheat Sheet** https://gist.github.com/akras14/3d242d80af8388ebca60 Another useful list of commands with explanations #### Desktop GUI Clients - **SourceTree** (Win, Mac; free) https://www.sourcetreeapp.com/ A solid Git client, with a good variety of features. Includes UI for interactive rebase, which makes that task much easier to do. Note that a recent release (1.8 for Windows, 2.2 for Mac) drastically changed the UI appearance, added required accounts, has had a number of performance issues, and is generally seen as a step backwards. You may want to download the earlier versions instead ([1.6.25 for Windows](https://downloads.atlassian.com/software/sourcetree/windows/SourceTreeSetup_1.6.25.exe), [2.1 for Mac](https://downloads.atlassian.com/software/sourcetree/SourceTree_2.1.dmg) ). - **Git Extensions** (Win; free) http://gitextensions.github.io/ A Windows client with Windows Explorer and Visual Studio integration - **Git Tower** (Mac, Win; commercial) https://www.git-tower.com/ A well-designed commercial Git client for Mac and Windows - **SmartGit** (Win, Mac, Linux; commercial) http://www.syntevo.com/smartgit/ A cross-platform Git client aimed at professionals - **GitKraken** (Win, Mac, Linux; semi-commercial) http://www.gitkraken.com/ A cross-platform Git client