# LearnGitBranching LearnGitBranching is a pseudo-git sandbox and interactive series of tutorials / challenges to accelerate the understanding of how git commit trees work. The ideal audience is a complete newcomer to git, but a wide range of experience levels should be able to benefit from these tutorials. It supports a fairly wide range of commands and dynamically visualizes the effects each change has on a commit tree visualization next to the command box: You can see the demo here: http://pcottle.github.com/learnGitBranching/?demo or use the vanilla app here: http://pcottle.github.com/learnGitBranching/ ### Sandbox Mode Sandbox mode is where you can mess around and just see what certain git commands do. It is moderately helpful, but the real magic lies in levels... ## Levels Type `levels` to see the available levels. These are a mix of tutorials and challenges to introduce git concepts and get newcomers familiar with certain workflows. There is also a "git golf" concept that tracks how many commands you used to solve the level :P ### Level Builder You can build levels with `build level`. The dialog should walk you through the majority of the commands -- at the end you will get a JSON blob that you can share with friends or paste into a Github issue. ### Contributing Levels I would love for more levels to be added! I think there is a ton to learn and cover. Hopefully the community together can build a great tool for all git newcomers. You can make your own levels with ``` build level ``` In the application. You will be walked through the process, and at the end you can `export level` to get a JSON blob. Paste that in a gist or directly into an issue and I can check it out / merge in your changes! ## Contributing Functionality For contributing core functionality in the app, you will need to install the `grunt` build tool. The general steps: ``` git clone cd learnGitBranching npm install git checkout -b newAwesomeFeature # some changes grunt build # now you can open up your browser to the index.html and see your changes grunt watch # will keep watch over files and fastBuild whenever they change # more changes grunt build git commit -am "My new sweet feature!" git push # go online and request a pull ``` You may also need to install jasmine-node globally to run the testing task, but the build should finish regardless. ## Helpful Folks A big shoutout to these brave souls for extensively testing our sandbox and finding bugs and/or inconsistencies: * Nikita Kouevda * Maksim Ioffe * Dan Miller And the following heroes for assisting in translating: * Jake Chen * 우리깃 ("urigit") * "bcho" * "scientific-coder" * "ace-coder" * Joël Thieffry Also huge shoutout for everyone who has put up a pull request that was pulled: * Aaron Schrab - 5x!! * Stephen Cavaliere * Andrew Ardill * Shao-Chung Chen * Tobias Pfeiffer * Luke Kysow - 2 * Adam Brodzinski * Hamish Macpherson * Cameron Wills * Johan ("josso") * Frode Austvik * Don Kirkby x2 * "scientific-coder" * "ace-coder" * Jeffrey Fisher * Brad Smith * Allen Guo * Timothy Qiu * Hyunjin CHA Or reported an issue that was successfully closed! * Caspar Krieger * Stuart Knightley * John Gietzen * Chris Greene * "datton" * Jaymes Bearden * Jan-Erik Rediger * Scott Bigelow * "ortin" * Dave Myron * "chosenken" * Mael P ("maelp") * "flying-sheep" * "arianvp" * "MaPePeR" * Lutz ("mobilutz") * Jan Philipp * Jon Frisby * Matthew Walker * Duane Johnson * Neil Chue Hong * "Goodwine" * Brandon McCaig * Borislav Kosharov * Ben Heavner * Michael (mick-d) * Adam Brewer * Tobias Pfeiffer * Nicholas "LB" Braden * Jeffrey Jones * Kyle (kyleIDMI)