Why Version Control? welcome.html welcome_final.html welcome_final2.html welcome_final2-bernd.html welcome2.html welcome_2.html welcome_final2.html welcome_2.html welcome.html welcome_final.html welcome_final2-bernd.html welcome2.html ● So, what is the newest version of this file? ● Who changed the title? ● Yesterday, it was working just fine. ● Did you get my mail? ● Who's working on XYZ? ● Is this bugfix already included somewhere? ● Who is working on this project, anyway?
Safe-Keeping of Versions ● When you check something into version control, it will remember this exact version for you ● You can return to a previous version ● You get a fancy timeline of your project Today Yesterday, 10:04 10.10.2012 14:12 06.03.2012 14:10
Conflict Resolution ● Files edited by different people can usually be resolved automatically. welcome.html (Alice) welcome.html (Bob) welcome.html (Both changes)
The „Commit“ ● An item in the history ● Think of this as a snapshot of your project commit f303d887ebf263b466958ca7c83aebb9385936f0 Author: Claudius Coenen Date: Sat Feb 15 02:08:44 2014 +0100 Ticket #2342: fixing file upload to work with animated gif Commit-Hash Commit-Message
Full Workflow ● DO STUFF change files the way you normally would ● PREPARE git add the changes, so git knows about them ● COMMIT git commit, preferably with a nice message think: committing to memory or: committment git pull git push
Command Cheat Sheet (Frequent Commands) ● git status ● git log ● git add ● git commit ● git checkout ● git reset These Commands are Local! (what's up on my drive) (what happened so far) (prepare these files for commit) (commit the added files) (return to a previous version) (reset the git index)
Where to Start ● Baby steps in your browser – http://try.github.io ● Download git for your system – http://git-scm.com/downloads ● Maybe add a Git client that suits your taste – At least try the commandline. Git in its purest form. – gitk, GitHub-App, SourceTree, GitTower, TortoiseGit ● Integrate git into your IDE / Editor – Eclipse, Sublime, WebStorm, RubyMine, NetBeans
Hand-Picked Resources ● Git has extensive documentation – http://git-scm.com/documentation ● There's a lot of Tutorials out there – http://marklodato.github.io/visual-git-guide/index-en.html – https://www.kernel.org/pub//software/scm/git/docs/everyday.html – http://www.teehanlax.com/blog/github-fundamentals/ – http://mislav.uniqpath.com/2010/07/git-tips/ – http://nvie.com/posts/a-successful-git-branching-model/ ● In-Depth Info – http://git-scm.com/book ● Cannon fodder for lengthy debates with your fellow geek – http://thkoch2001.github.io/whygitisbetter/