Git’in on WindowsAn introduction to git on the
Microsoft platform
About MeStacy Vicknair, MVP MCPDDevelopment Consultant for Sparkhound
Blog - http://www.wtfnext.comBRAG - http://www.braglunch.comTM - http://www.batonrougespeaks.com
Twitter: @svicknEmail: [email protected]
Agenda
• What is git?• Why (or why not) choose git?• Where do I git it?• git’in the basics• git’in against GitHub• git’in against TFS• Resources
What is git?
• Distributed Version Control System (DVCS)– Like TFS’s source control, but “distributed”
• Open Source under GNU LGPL v2.1• Freely available from http://git-scm.com
What is DVCS?
• No true “central repository”• Not a checkout, it’s a clone• Check in when you want• Push to central server when it’s stable
Who’s git’in it
• The Linux Kernel• Google for the Android OS• Ruby on Rails• PostgreSQL• Eclipse• Perl• Codeplex• … Git.
Why (or why not) choose git?
Pros• Free• Distributed (self replicating)• Lightweight• Secure via SSH / HTTPS• Changeset driven• Easy branching / merging• Disconnected check-ins
*based on Clearvision White Paper
Cons• Windows Second-Class• Barrier to entry• Different permissions
paradigm• It’s not ALM, just DVCS• Single repo management
– Google’s Repo
Where do I git it?(see what I did there)
githttp://git-scm.com/
msysgitGit for Windowshttp://code.google.com/p/msysgit/
posh-gitGit extensions for Powershellhttps://github.com/dahlbyk/posh-git
git-tfsAllows for TFS access via git https://github.com/git-tfs/git-tfs
GitExtensionsGUI / Explorer and VS integration for Windowshttp://code.google.com/p/msysgit/
gitflowGit extensions for high level branch process workflowhttps://github.com/nvie/gitflow
Git’in the BasicsOm nom nom knowledge
Git Basics: Ground level
git init – Create a repogit add – Stage files in the indexgit commit – Commit a filegit status – List current modificationsgit log – List of checkin history
Git Basics: Stash, Branch and Merge
git stash – Hold changes for later retrievalgit branch – Create, delete and list branchesgit checkout – Switch branchesgit rebase – Rebase branch from parentgit merge – Merge from child branch
Git Intermediates: Repo Administration
Images from http://whygitisbetterthanx.com
Git Intermediates: Repo Administration
Git Intermediates: Repo Administration
Git Intermediates: Repo Administration
Git’in against GitHubyeehaw
Git’in GitHub: Creating and Cloning
• GitHub requires SSH• git clone – Copy existing repository locally• git push - Push changes to a different repo• git remote – Create, list and delete connected
repos• git tag – Tags a version of the code
Git’in against TFSMoo.
Git’in TFS: clone, .gitignore, and checkintool
• .gitignore files help prevent unwanted checkins
• git tfs clone – Pull TFS repo with history• git tfs quickclone – No history• git tfs checkintool – TFS-esque checkin process• git tfs checkin – Git-esque quick checkin
Agenda
• What is git?• Why (or why not) choose git?• Where do I git it?• git’in the basics• git’in against GitHub• git’in against TFS• Resources
ResourcesTutorialshttp://progit.orghttp://book.git-scm.com/
Downloadshttp://git-scm.com/http://code.google.com/p/msysgit/https://github.com/dahlbyk/posh-githttps://github.com/git-tfs/git-tfshttp://code.google.com/p/msysgit/https://github.com/nvie/gitflow
Presentation Resourceshttp://stackoverflow.com/questions/4140133/how-does-tfss-shelveset-model-compare-to-a-dvcshttp://haacked.com/archive/2011/12/19/get-git-for-windows.aspxhttp://nathanj.github.com/gitguide/tour.htmlhttp://www.clearvision-cm.com/whitepapers/Clearvision%20-%20Git%20White%20Paper.pdfhttp://whygitisbetterthanx.com
[email protected]@svickn