• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Essential git for developers
 

Essential git for developers

on

  • 539 views

Slides from my talk at ALT.NET Cork. ...

Slides from my talk at ALT.NET Cork.
Unlike centralized version control systems, the distributed nature of Git allows you to be far more flexible in how developers collaborate on projects.In this session I'll take you through a quick tour of the essential git commands with some demos.We'll cover branching and merging strategies, pull requests ,working on open source (GitHub etc), git clients and git deployments to the cloud.

Statistics

Views

Total Views
539
Views on SlideShare
537
Embed Views
2

Actions

Likes
2
Downloads
7
Comments
0

1 Embed 2

https://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Essential git for developers Essential git for developers Presentation Transcript

    • Essential Git For Developers CORK ALT.NET DECEMBER 2013
    • What is Git? Distributed version control system Open source ,written in C Linus Torvalds 2005 to maintain the linux kernel
    • Why Git? •Focuses on content not files •Opt in when it comes to commits •Open, not closed– open source model of working is baked into the software •Distributed - works almost entirely offline •It changes how you work – commit more often, making code reviews easier •Browsing history is lightening fast •Non-linear development
    • Centralized vs. Distributed Centralised Distributed History only on the server Complete history of the repo locally Commit changes online only Nearly every operation is local (offline) you can commit locally & branch locally Down tools if server is down No hassle if server is down, redundant by default Branching is difficult Branching is really easy & lightweight Branching is no longer a dirty word Everyone commits to main repo ,typically you check More flexible workflows, you commit changes more in when your work is complete regularly
    • Demo – create a repo and add some files
    • Commands • $git init • $git add <fileName> • $git commit –m <commit message> • $git status • $git log • $git command --help
    • Staging Working Directory git add Staging Area git commit Repository
    • File Status stackoverflow.com/questions/15653066/how-to-track-but-not-stage-and-how-to-unstage-but-not-untrack
    • Git stores snapshots, not differences git-scm.com/book/en/Getting-Started-Git-Basics
    • Demo – working with remotes
    • Commands • $git remote add <name> <url> • $git push <remote name> <local branch name> • $git clone <path to repo>
    • Git on the Server Protocols –SSH , HTTP ◦ HTTP - slower but allows anonymous access to the files ◦ SSH - faster but everyone needs a unique SSH key Hosting Options ◦ Self Hosted (GitLab CE) ◦ GitHub, BitBucket & many more …
    • Demo – web hook integration
    • $git pull command $git fetch + $git merge = $git pull
    • .gitignore file Tells git to ignore specific files / folders https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
    • Branching • Think of a branch as simply a movable pointer to one of the commits in your repository • $git branch < new branchname > • $git checkout <branchname> • $git merge <branchname>
    • Fast forward merge Before merging After merge
    • 3 way merge Before merging After merge
    • Demo – branching and merging
    • Git-Flow •Vincent Driessen's branching model •Defines a branching model designed around the project release, suitable for managing larger projects / large teams
    • TIME
    • Rebasing “Take my commits and replay them after the HEAD of another branch.” • take all the changes that were committed on one branch and replay them on another one. • Moves a branch to a new base commit • Completely rewrites history! • Don’t do this on a shared branch
    • MERGE RESULT REBASE RESULT
    • Forking & Pull Requests
    • Demo – exploring the repo history
    • Debugging git blame $git blame [-L ine1,line2]] <file> • Lets you see when each line of a method was edited and by whom
    • Debugging git bisect $ git bisect start $ git bisect bad HEAD $ git bisect good 1b6d
    • Cherry Picking If you want to get one single commit out of a branch $git cherry-pick <sha-1_commit>
    • Git on Windows GUI Clients Shells SourceTree (free) Bash GitHub for Windows Posh-git Git GUI for Windows Powershell TortoiseGit Cmd
    • Advice for getting started •Learning curve •Start with the command line, not the GUI • Agree a good branch strategy with your team up front • (Almost) every should be short lived, and kept up to date with master •Commit often, perfect later & user meaningful commit messages
    • Thanks for listening! twitter : @AIDANJCASEY