A repo which is soley used for playing around and getting used to git. Please do not place any code you want preserved into this repository, as it may be occasionally wiped. Also note that this repo uses The Unlicense, meaning any code inside of it is public domain, so don't push your new game engine code to here.
Note: because you, by default, check out branch "master," we have used branch "default" to provide a base version of this repo which is untouched save for this README.
##Helpful Links## The Pro Git book, one of the bibles of Git
A nice intro to git, delivered as a blog post
An overview of git commands from Atlassian
Useful aliases for your .gitconfig
An automated .gitignore generator
P4Merge, a top-tier tool for merging files
KDiff3, one of the best open-source mergetools
-
Don't force push. Ever. --Matt Bucci -
Write good commit messages. Messages like "did \*\*\*\*" or "broke it, fixed na0" might be cute to you now, but someone is going to want to murder you if they ever have to make a revision based off of 10 commit messages that say the same, noninformative thing. --Robert Wang -
Instead of doing waiting a long time between commits and pushes, commit really often when you code. Then, before you push, use a rebase to make it look like one giant commit. (Do not do this to a public repo if you don't know what you're doing. People may hate you for a very long time). --Matt Bucci -
If you don't like the default CLI interface, [SourceTree](http://www.sourcetreeapp.com/) is an excellent app that offers you the full power of git (and Mercurial!) in a nice graphical package. -
If you're a masochist and prefer the command line, make sure to create [pretty log aliases](https://stackoverflow.com/questions/1057564/pretty-git-branch-graphs) to get a better idea of what's going on with your project's history and lineage.
##Suggested Activities##
####Beginner:####
-
If you're a true beginner, start by making a personal git repo and getting used to the flow of modify-stage-commit. Because git can be used to track anything, you can even use it to track things like essays! If you don't like where the essay ends up, just use `git checkout` to get back to the last version you liked and keep going. (This document was made using git as a version control) (IMPORTANT: If you do this, make sure you don't push your essay to a public repository before it's turned in! [Atlassian Bitbucket](https://bitbucket.org/) allows you to make a few private repos for free. -
Once you have a feeling for simple things, do some bigger projects! Placing projects like the CSE 111 (Databases) project into git serves two purposes: it lets you collaborate with people and it stops you from breaking your only working copy--you can always revert!
-
Once you have the basics of git down, start playing with more advanced commands like bisect, blame, and cherry-pick. Collaborate with other people and learn how to do three-way merges with tools like [P4Merge](http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools) or [KDiff3](http://kdiff3.sourceforge.net/). -
If you like to learn by playing games, Gazler's [githug](https://github.com/Gazler/githug) may be your style. -
Rebasing commits is a great way to save on logspace. Unfortunately, it can be a little tricky to get right in practice. Practice making three commits and squashing them into a single commit with `git rebase -i`
Unfortunately, we don't really have any advanced git users. If you get to this point, feel free to write this section of the post!