SlideShare a Scribd company logo
ioning You r Code:
 Vers
  Git and Github™:
 Code Management and
Sharing for Researchers
                          using Git
         Eliezer Kanal
          10/24/2011     and Github
                             (™)
Slides available online!



!""#$%%"&'()*+,-./%-'0-1&"2
What is Versioning?
• Keeping track of changes to your code
• Documenting those changes
• You’re probably doing it now...
Why Change?

• Troubleshooting
• Logging
• Simplify adding
  features

• Simplify code
  sharing
What is Git?
• DVCS = Distributed Version Control System
• Technique for managing large/small coding projects

  Large


                 Me, >1 million other
   Small
                       people
What is Git?
• Two parts:
 1. “Database” (hidden folder) to hold project history

 2. Set of tools to interact with database

• Used via Command Line or GUI interfaces
What does Git do?
• Retain file history
What does Git do?
• Retain^filedhistory
           e
   distribut
What does Git do?
• Branching & Merging




version 1   version 2      version 3   version 4                   version 5



                                       version 4b   version 4b.2
                               nch
               new feature bra
Case Study – Analysis toolkit
• Improve interface, ~2 days work
 -   …while analyzing data


• Branch!
 -   Improvements on
     “development” branch

 -   Work on “main” branch

 -   Merge when feature
     completed
Case Study – Productivity tool
•   13"45!&"46.'3: productivity
        bad word!




    tool, on 1&"!)0,-./

• Downloaded, found bug
• Fixed bug, multiple local
    check-ins

• Sent change histories
    back via 1&"!)0,-./
Case Study – Productivity tool
•   13"45!&"46.'3: productivity
        bad word!




    tool, on 1&"!)0,-./

• Downloaded, found bug
• Fixed bug, multiple local
    check-ins

• Sent change histories
    back via 1&"!)0,-./
How Git can help YOU *




  • Personally:                         • CNBC as a group:
     -   Keep track of changes            -   “Don’t reinvent the
                                              wheel”
     -   Fix bugs quicker
                                          -   More eyes → better code
     -   Share code easier
                                          -   Collaboration
     -   Simplify adding new
         features/changing code




* Or Mercurial, or Bazaar, or Monotone, or LibreSource, or...
This slide intentionally left blank
Git Usage
Key Concepts
             Things “about     History,       Same as
 Work is
             to be stored”   branches are    Repository,
done here
              are put here   stored here     but remote
                                              781&"8#)5!
               781&"8966      781&"8-.//&"
                                              781&"8#)++



                 Staging
 Workspace                     Repository      Remote
                  Area
• Create & edit some code
       /9"!,/
        :)'-"&.'8/9"!;<

        *3")*'8=>=?
• Move code to Staging Area



• Commit code
• Make changes, start working on new code
/9"!,/
:)'-"&.'8/9"!;<                        #*&'",/
                                       :)'-"&.'8#*&'";9<
*3")*'8=>=?       /9"!,/
                                       3-!.89?
                  :)'-"&.'8/9"!;9@0<

                  *3")*'89>0?
…wash, rinse, repeat:


 • Move completed code to
   “Staging Area”

  - Leave the rest “unstaged”


 • Commit code
Key Concepts
• Finder (Explorer) not suited for Git
                                   -     Are these in the workspace
                                         or staging area?

                                   -     What branch are we on?

                                   -     What revision is this?




              Not enough information!
Git Interface
• Command line
• GUI
 -   Github for Mac
                                         (signific
                                                   antly ) differe
                                                                   ntly
                                  ightly
                      All work sl
 -   GitExtensions

 -   Others
Example Usage
• Starting work on /(A*.B3-":
              Terminal
               78-68/(A*.B3-"
               781&"8&'&"8




                         That’s it!
Command Line Interface
• Create & edit some code
       /9"!,/
        :)'-"&.'8/9"!;<

        *3")*'8=>=?
• Code is in working state; ready for “commit”
Terminal
781&"89668/9"!,/
781&"8-.//&"84/8C-*39"368/9"!8:)'-"&.'D
• Code is in working state; ready for “commit”
Terminal
781&"89668/9"!,/
781&"8-.//&"84/8C-*39"368/9"!8:)'-"&.'D
• Code is in working state; ready for “commit”
Terminal
781&"89668/9"!,/
781&"8-.//&"84/8C-*39"368/9"!8:)'-"&.'D
• Code is in working state; ready for “commit”
Terminal
781&"89668/9"!,/
781&"8-.//&"84/8C-*39"368/9"!8:)'-"&.'D
• Make changes, add new code
/9"!,/
:)'-"&.'8/9"!;<                        #*&'",/
                                       :)'-"&.'8#*&'";9<
*3")*'8=>=?       /9"!,/
                                       3-!.89?
                  :)'-"&.'8/9"!;9@0<

                  *3")*'89>0?
• See what we’ve done
Terminal
781&"85"9")5
E8F'80*9'-!8/95"3*
E8G!9'1358'."85"91368:.*8-.//&"$
E8;)538H1&"89668I:&+3J,,,H8".8)#69"38K!9"8K&++8038-.//&""36<
E
E8 /.6&:&36$8/9"!,/
E
E8L'"*9-M368:&+35$
E888;)538H1&"89668I:&+3J,,,H8".8&'-+)638&'8K!9"8K&++8038-.//&""36<
E
E8 #*&'",/
'.8-!9'1358966368".8-.//&"8;)538H1&"8966H89'6%.*8H1&"8-.//&"849H<
• See what we’ve done
Terminal
781&"85"9")5
E8F'80*9'-!8/95"3*
E8G!9'1358'."85"91368:.*8-.//&"$
E8;)538H1&"89668I:&+3J,,,H8".8)#69"38K!9"8K&++8038-.//&""36<
E
E8 /.6&:&36$8/9"!,/
E
E8L'"*9-M368:&+35$
E888;)538H1&"89668I:&+3J,,,H8".8&'-+)638&'8K!9"8K&++8038-.//&""36<
E
E8 #*&'",/
'.8-!9'1358966368".8-.//&"8;)538H1&"8966H89'6%.*8H1&"8-.//&"849H<
• See what we’ve done
Terminal
781&"85"9")5
E8F'80*9'-!8/95"3*
E8G!9'1358'."85"91368:.*8-.//&"$
E8;)538H1&"89668I:&+3J,,,H8".8)#69"38K!9"8K&++8038-.//&""36<
E
E8 /.6&:&36$8/9"!,/
E
E8L'"*9-M368:&+35$
E888;)538H1&"89668I:&+3J,,,H8".8&'-+)638&'8K!9"8K&++8038-.//&""36<
E
E8 #*&'",/
'.8-!9'1358966368".8-.//&"8;)538H1&"8966H89'6%.*8H1&"8-.//&"849H<
• Add...
Terminal
781&"89668/9"!,/
781&"89668#*&'",/
781&"85"9")5
E8F'80*9'-!8/95"3*
E8G!9'1358".8038-.//&""36$
E888;)538H1&"8*353"8NOPQ8I:&+3J,,,H8".8)'5"913<
E
E8 /.6&:&36$888/9"!,/
E8 '3K8:&+3$888#*&'",/
E
• Add...
Terminal
781&"89668/9"!,/
781&"89668#*&'",/
781&"85"9")5
E8F'80*9'-!8/95"3*
E8G!9'1358".8038-.//&""36$
E888;)538H1&"8*353"8NOPQ8I:&+3J,,,H8".8)'5"913<
E
E8 /.6&:&36$888/9"!,/
E8 '3K8:&+3$888#*&'",/
E
• …and Commit
Terminal
781&"8-.//&"84/8R966368S9*&90+358".8/9"!@8'3K8#*&'"8:)'-"&.'R
T/95"3*89U3-VW9X8966368S9*&90+358".8/9"!@8'3K8#*&'"8:)'-"&.'
8=8:&+358-!9'136@8=8&'53*"&.'5;><@8W863+3"&.'5;4<
8-*39"38/.638=WWVYY8#*&'",/
• …and Commit
Terminal
781&"8-.//&"84/8R966368S9*&90+358".8/9"!@8'3K8#*&'"8:)'-"&.'R
T/95"3*89U3-VW9X8966368S9*&90+358".8/9"!@8'3K8#*&'"8:)'-"&.'
8=8:&+358-!9'136@8=8&'53*"&.'5;><@8W863+3"&.'5;4<
8-*39"38/.638=WWVYY8#*&'",/
• Let’s see what we’ve done...
Terminal
781&"8+.1
-.//&"89U3-VW9ZVU:6VY3=[ZU9WVW=6U[2[03V]U:-U99
P)"!.*$8O+&3^3*8_9'9+8I3M9'9+`-/),36)J
Q9"3$888a!)8b)'8=V8=[$=$2=82W==84WYWW

8888966368S9*&90+358".8/9"!@8'3K8#*&'"8:)'-"&.'

-.//&"8603[]WW]9303V000[30:0-]9=]VY=6]2ZWW
P)"!.*$8O+&3^3*8_9'9+8I3M9'9+`-/),36)J
Q9"3$888a!)8b)'8=V8=[$==$WY82W==84WYWW

8888-*39"368/9"!8:)'-"&.'
Git Workflow – Complete
• Do some work
• See what you’ve changed, verify things look good:
                                                           re out
      781&"85"9")5                         Home work: figu
                                                         does
      781&"86&::"..+8I:&+3'9/35J              what this

• Tell Git what you’re ready to commit:
      781&"89668I:&+3'9/35J

• Commit & log changes:
      781&"8-.//&"8I:&+3'9/35J
      !"#$%&'(&%)$*&('*+,'-+%&./
Github for Mac™
Git tutorial
Git tutorial
Git tutorial
Git tutorial
Git tutorial
Git tutorial
Git tutorial
Branches
• Question: How can we integrate new features without
  messing up our current working code?

• Branches let us work in a “new directory” which we
  can later either delete or merge.
Branches & Tags
• Think of branches as separate folders, each with it’s
  own content and history.
Branches – Go Nuts
Branches & Merges
• If a branch is a split in the graph, then merge is a
  merging of split branches

• One single command (SVN users rejoice!)
• Conflicts: Same code was changed in both branches
• Fix by hand, re-try the merge.
  -   !""#$%%KKK,M3*'3+,.*1%#)0%5.:"K9*3%5-/%1&"%6.-5%)53*4
      /9')9+,!"/+E*35.+S&'1494/3*13


  -   better idea: Google “fixing a git merge conflict”
Branches & Merges
• Conflicts: Same code was changed in both branches
• Merge fails!
• Fix by hand, re-try the merge
 -   !""#$%%KKK,M3*'3+,.*1%#)0%5.:"K9*3%5-/%1&"%6.-5%)53*4
     /9')9+,!"/+E*35.+S&'1494/3*13


 -   better idea: Search “fixing a git merge conflict”
c&"!)0,-./



git·hub /'ɡɪtˌhʌb/
GitHub is the best way to
collaborate with others. Fork,
send pull requests and
manage all your public and
private git repositories.
c&"!)0,-./
• Very easy collaboration
• Clear, detailed setup instructions
  4 !""#$%%!3+#,1&"!)0,-./%
• Easy “forking” for Github projects
  -   Get your own copy of their code

  -   Contribute back with “pull requests”
Git tutorial
Git tutorial
Demo
SVN integration
• Very easy to move from SVN → Git
• Works best as one-time deal, can work side-by-side
•   !""#$%%.*35"&5,1*%0+.1%2WWU%WU%2%1&"45S'4")".*&9+%
Good Git Practice
• Check in often!
  -   Rule of thumb… check in whenever code works

• Write detailed log notes! You’ll thank yourself for it
  later!

• Branch for new features
  -   Avoid working on the master branch, it should always be the
      “clean, working” code
References
•   Pro Git - free online:
    ! !""#$%%#*.1&",.*1%0..M%

•   Branching:
    ! !""#$%%'S&3,-./%#.5"5%945)--355:)+41&"40*9'-!&'14/.63+%

•   Git tutorials and useful FAQ links:
    ! !""#$%%5&d*3S&5&.'5,-./%*35.)*-35%1&"4")".*&9+54031&''3*5%

•   Github:
    ! !""#$%%1&"!)0,-./%

•   Git-SVN integration:
    ! !""#$%%.*35"&5,1*%0+.1%2WWU%WU%2%1&"45S'4")".*&9+%

•   Google:
    ! !""#$%%1..1+3,-./%

•   Bing:
    ! !""#$%%0&'1,-./%
Git Hands-On
Git Setup – one-time
                                                   Recommend downloading
                                                   xcode, just for the
                                                   FileMerge program
                                                   (“opendiff” when launched
                                                   from command line)

• Identify yourself to Git:
       781&"8-.':&18441+.09+8)53*,'9/38He.)*8f9/3H88
       781&"8-.':&18441+.09+8)53*,3/9&+8H(.)*`3/9&+,-./H8

  All your work is logged using the name/email you
  provide here.

• Give Git some color to make things easier to read:
       781&"8-.':&18441+.09+8-.+.*,)&89)".8

• Line-ending bandaids:
       781&"8-.':&18441+.09+8-.*3,59:3-*+:8"*)38
       781&"8-.':&18441+.09+8-.*3,9)".-*+:8&'#)"
                                                                  “"*)3”
                                              Windows  users: use
                                                             “&'#)"”
                                                  instead of
Git Setup
• Begin using Git for a project:
      78-68#*.B3-"g.+63*%
      781&"8&'&"
      h'&"&9+&^3683/#"(8c&"8*3#.5&".*(8&'8%#*.B3-"g.+63*%,1&"%

  Creates the (hidden) ,1&" folder. No files being tracked yet.

• Add files to repository:
      781&"89668,
      781&"8-.//&"84/8i:&*5"8-.//&"j


  Instructs Git to manage all files in the folder %#*.B3-"g.+63*%.

More Related Content

PPTX
Git commands
PDF
Git 101: Git and GitHub for Beginners
PPTX
Github basics
PPTX
Git and GitHub
PDF
Git Introduction Tutorial
PDF
A Practical Introduction to git
PDF
Git training v10
KEY
The everyday developer's guide to version control with Git
Git commands
Git 101: Git and GitHub for Beginners
Github basics
Git and GitHub
Git Introduction Tutorial
A Practical Introduction to git
Git training v10
The everyday developer's guide to version control with Git

What's hot (20)

PDF
Learning git
PDF
git and github
PPTX
PPTX
Intro to git and git hub
PPTX
Git One Day Training Notes
PPTX
PDF
Quick Introduction to git
PDF
Git - An Introduction
PPTX
Git - Basic Crash Course
PDF
Git & GitHub for Beginners
PPTX
Git in 10 minutes
KEY
Introduction to Git
PDF
Git Branching Model
PDF
Version Control & Git
PDF
Git and git flow
PDF
Intro to Git and GitHub
PPTX
Git 101 for Beginners
KEY
Introduction To Git
PDF
Git-flow workflow and pull-requests
PDF
Git and github 101
Learning git
git and github
Intro to git and git hub
Git One Day Training Notes
Quick Introduction to git
Git - An Introduction
Git - Basic Crash Course
Git & GitHub for Beginners
Git in 10 minutes
Introduction to Git
Git Branching Model
Version Control & Git
Git and git flow
Intro to Git and GitHub
Git 101 for Beginners
Introduction To Git
Git-flow workflow and pull-requests
Git and github 101
Ad

Viewers also liked (18)

PPTX
Introduction to Git/Github - A beginner's guide
PPT
Git 101 - Crash Course in Version Control using Git
PPTX
Git tutorial
PPTX
Basic Git Intro
PDF
Introduction to Git (part 1)
PDF
Git 101 tutorial presentation
PDF
Git cheat sheet
PPTX
Gitlab
PDF
Mini-tutorial de git
PDF
Git for beginners
PPT
Gastrointestinal disorders 2
PPT
Gastrointestinal disease
PDF
Git Tutorial 教學
PDF
Introduction to git
PDF
Gitlab Training with GIT and SourceTree
PPT
Gastrointestinal System Disorders
PDF
Git tutorial
PPT
Gastrointestinal disease lecture(ppt)
Introduction to Git/Github - A beginner's guide
Git 101 - Crash Course in Version Control using Git
Git tutorial
Basic Git Intro
Introduction to Git (part 1)
Git 101 tutorial presentation
Git cheat sheet
Gitlab
Mini-tutorial de git
Git for beginners
Gastrointestinal disorders 2
Gastrointestinal disease
Git Tutorial 教學
Introduction to git
Gitlab Training with GIT and SourceTree
Gastrointestinal System Disorders
Git tutorial
Gastrointestinal disease lecture(ppt)
Ad

Similar to Git tutorial (20)

PDF
Git for the Android Developer
PDF
Git for the Android Developer
PDF
SCM for Android Developers Using Git
PDF
Git cheat-sheets
PPTX
Git basic stanley hsiao 2010_12_15
PDF
Git For The Android Developer
PDF
Git basics
PPTX
Source control management
PDF
Git, GitHub and Open Source
ODP
Introduction to Git
PDF
Intro to Git
PPT
PPTX
Git 101 for_tarad_dev
PDF
Introduction to git, an efficient distributed version control system
PPTX
Git training (basic)
PPT
Getting started with GIT
PPTX
Git_new.pptx
PPT
CSE 390 Lecture 9 - Version Control with GIT
ZIP
Beginner's Guide to Version Control with Git
KEY
Git Tech Talk
Git for the Android Developer
Git for the Android Developer
SCM for Android Developers Using Git
Git cheat-sheets
Git basic stanley hsiao 2010_12_15
Git For The Android Developer
Git basics
Source control management
Git, GitHub and Open Source
Introduction to Git
Intro to Git
Git 101 for_tarad_dev
Introduction to git, an efficient distributed version control system
Git training (basic)
Getting started with GIT
Git_new.pptx
CSE 390 Lecture 9 - Version Control with GIT
Beginner's Guide to Version Control with Git
Git Tech Talk

Recently uploaded (20)

PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Big Data Technologies - Introduction.pptx
PDF
Approach and Philosophy of On baking technology
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPT
Teaching material agriculture food technology
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Electronic commerce courselecture one. Pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Modernizing your data center with Dell and AMD
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Spectral efficient network and resource selection model in 5G networks
Big Data Technologies - Introduction.pptx
Approach and Philosophy of On baking technology
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Digital-Transformation-Roadmap-for-Companies.pptx
Teaching material agriculture food technology
NewMind AI Monthly Chronicles - July 2025
Encapsulation_ Review paper, used for researhc scholars
Electronic commerce courselecture one. Pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Mobile App Security Testing_ A Comprehensive Guide.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
“AI and Expert System Decision Support & Business Intelligence Systems”
Modernizing your data center with Dell and AMD
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf

Git tutorial

  • 1. ioning You r Code: Vers Git and Github™: Code Management and Sharing for Researchers using Git Eliezer Kanal 10/24/2011 and Github (™)
  • 3. What is Versioning? • Keeping track of changes to your code • Documenting those changes • You’re probably doing it now...
  • 4. Why Change? • Troubleshooting • Logging • Simplify adding features • Simplify code sharing
  • 5. What is Git? • DVCS = Distributed Version Control System • Technique for managing large/small coding projects Large Me, >1 million other Small people
  • 6. What is Git? • Two parts: 1. “Database” (hidden folder) to hold project history 2. Set of tools to interact with database • Used via Command Line or GUI interfaces
  • 7. What does Git do? • Retain file history
  • 8. What does Git do? • Retain^filedhistory e distribut
  • 9. What does Git do? • Branching & Merging version 1 version 2 version 3 version 4 version 5 version 4b version 4b.2 nch new feature bra
  • 10. Case Study – Analysis toolkit • Improve interface, ~2 days work - …while analyzing data • Branch! - Improvements on “development” branch - Work on “main” branch - Merge when feature completed
  • 11. Case Study – Productivity tool • 13"45!&"46.'3: productivity bad word! tool, on 1&"!)0,-./ • Downloaded, found bug • Fixed bug, multiple local check-ins • Sent change histories back via 1&"!)0,-./
  • 12. Case Study – Productivity tool • 13"45!&"46.'3: productivity bad word! tool, on 1&"!)0,-./ • Downloaded, found bug • Fixed bug, multiple local check-ins • Sent change histories back via 1&"!)0,-./
  • 13. How Git can help YOU * • Personally: • CNBC as a group: - Keep track of changes - “Don’t reinvent the wheel” - Fix bugs quicker - More eyes → better code - Share code easier - Collaboration - Simplify adding new features/changing code * Or Mercurial, or Bazaar, or Monotone, or LibreSource, or...
  • 16. Key Concepts Things “about History, Same as Work is to be stored” branches are Repository, done here are put here stored here but remote 781&"8#)5! 781&"8966 781&"8-.//&" 781&"8#)++ Staging Workspace Repository Remote Area
  • 17. • Create & edit some code /9"!,/ :)'-"&.'8/9"!;< *3")*'8=>=?
  • 18. • Move code to Staging Area • Commit code
  • 19. • Make changes, start working on new code /9"!,/ :)'-"&.'8/9"!;< #*&'",/ :)'-"&.'8#*&'";9< *3")*'8=>=? /9"!,/ 3-!.89? :)'-"&.'8/9"!;9@0< *3")*'89>0?
  • 20. …wash, rinse, repeat: • Move completed code to “Staging Area” - Leave the rest “unstaged” • Commit code
  • 21. Key Concepts • Finder (Explorer) not suited for Git - Are these in the workspace or staging area? - What branch are we on? - What revision is this? Not enough information!
  • 22. Git Interface • Command line • GUI - Github for Mac (signific antly ) differe ntly ightly All work sl - GitExtensions - Others
  • 23. Example Usage • Starting work on /(A*.B3-": Terminal 78-68/(A*.B3-" 781&"8&'&"8 That’s it!
  • 25. • Create & edit some code /9"!,/ :)'-"&.'8/9"!;< *3")*'8=>=?
  • 26. • Code is in working state; ready for “commit” Terminal 781&"89668/9"!,/ 781&"8-.//&"84/8C-*39"368/9"!8:)'-"&.'D
  • 27. • Code is in working state; ready for “commit” Terminal 781&"89668/9"!,/ 781&"8-.//&"84/8C-*39"368/9"!8:)'-"&.'D
  • 28. • Code is in working state; ready for “commit” Terminal 781&"89668/9"!,/ 781&"8-.//&"84/8C-*39"368/9"!8:)'-"&.'D
  • 29. • Code is in working state; ready for “commit” Terminal 781&"89668/9"!,/ 781&"8-.//&"84/8C-*39"368/9"!8:)'-"&.'D
  • 30. • Make changes, add new code /9"!,/ :)'-"&.'8/9"!;< #*&'",/ :)'-"&.'8#*&'";9< *3")*'8=>=? /9"!,/ 3-!.89? :)'-"&.'8/9"!;9@0< *3")*'89>0?
  • 31. • See what we’ve done Terminal 781&"85"9")5 E8F'80*9'-!8/95"3* E8G!9'1358'."85"91368:.*8-.//&"$ E8;)538H1&"89668I:&+3J,,,H8".8)#69"38K!9"8K&++8038-.//&""36< E E8 /.6&:&36$8/9"!,/ E E8L'"*9-M368:&+35$ E888;)538H1&"89668I:&+3J,,,H8".8&'-+)638&'8K!9"8K&++8038-.//&""36< E E8 #*&'",/ '.8-!9'1358966368".8-.//&"8;)538H1&"8966H89'6%.*8H1&"8-.//&"849H<
  • 32. • See what we’ve done Terminal 781&"85"9")5 E8F'80*9'-!8/95"3* E8G!9'1358'."85"91368:.*8-.//&"$ E8;)538H1&"89668I:&+3J,,,H8".8)#69"38K!9"8K&++8038-.//&""36< E E8 /.6&:&36$8/9"!,/ E E8L'"*9-M368:&+35$ E888;)538H1&"89668I:&+3J,,,H8".8&'-+)638&'8K!9"8K&++8038-.//&""36< E E8 #*&'",/ '.8-!9'1358966368".8-.//&"8;)538H1&"8966H89'6%.*8H1&"8-.//&"849H<
  • 33. • See what we’ve done Terminal 781&"85"9")5 E8F'80*9'-!8/95"3* E8G!9'1358'."85"91368:.*8-.//&"$ E8;)538H1&"89668I:&+3J,,,H8".8)#69"38K!9"8K&++8038-.//&""36< E E8 /.6&:&36$8/9"!,/ E E8L'"*9-M368:&+35$ E888;)538H1&"89668I:&+3J,,,H8".8&'-+)638&'8K!9"8K&++8038-.//&""36< E E8 #*&'",/ '.8-!9'1358966368".8-.//&"8;)538H1&"8966H89'6%.*8H1&"8-.//&"849H<
  • 38. • Let’s see what we’ve done... Terminal 781&"8+.1 -.//&"89U3-VW9ZVU:6VY3=[ZU9WVW=6U[2[03V]U:-U99 P)"!.*$8O+&3^3*8_9'9+8I3M9'9+`-/),36)J Q9"3$888a!)8b)'8=V8=[$=$2=82W==84WYWW 8888966368S9*&90+358".8/9"!@8'3K8#*&'"8:)'-"&.' -.//&"8603[]WW]9303V000[30:0-]9=]VY=6]2ZWW P)"!.*$8O+&3^3*8_9'9+8I3M9'9+`-/),36)J Q9"3$888a!)8b)'8=V8=[$==$WY82W==84WYWW 8888-*39"368/9"!8:)'-"&.'
  • 39. Git Workflow – Complete • Do some work • See what you’ve changed, verify things look good: re out 781&"85"9")5 Home work: figu does 781&"86&::"..+8I:&+3'9/35J what this • Tell Git what you’re ready to commit: 781&"89668I:&+3'9/35J • Commit & log changes: 781&"8-.//&"8I:&+3'9/35J !"#$%&'(&%)$*&('*+,'-+%&./
  • 48. Branches • Question: How can we integrate new features without messing up our current working code? • Branches let us work in a “new directory” which we can later either delete or merge.
  • 49. Branches & Tags • Think of branches as separate folders, each with it’s own content and history.
  • 51. Branches & Merges • If a branch is a split in the graph, then merge is a merging of split branches • One single command (SVN users rejoice!) • Conflicts: Same code was changed in both branches • Fix by hand, re-try the merge. - !""#$%%KKK,M3*'3+,.*1%#)0%5.:"K9*3%5-/%1&"%6.-5%)53*4 /9')9+,!"/+E*35.+S&'1494/3*13 - better idea: Google “fixing a git merge conflict”
  • 52. Branches & Merges • Conflicts: Same code was changed in both branches • Merge fails! • Fix by hand, re-try the merge - !""#$%%KKK,M3*'3+,.*1%#)0%5.:"K9*3%5-/%1&"%6.-5%)53*4 /9')9+,!"/+E*35.+S&'1494/3*13 - better idea: Search “fixing a git merge conflict”
  • 53. c&"!)0,-./ git·hub /'ɡɪtˌhʌb/ GitHub is the best way to collaborate with others. Fork, send pull requests and manage all your public and private git repositories.
  • 54. c&"!)0,-./ • Very easy collaboration • Clear, detailed setup instructions 4 !""#$%%!3+#,1&"!)0,-./% • Easy “forking” for Github projects - Get your own copy of their code - Contribute back with “pull requests”
  • 57. Demo
  • 58. SVN integration • Very easy to move from SVN → Git • Works best as one-time deal, can work side-by-side • !""#$%%.*35"&5,1*%0+.1%2WWU%WU%2%1&"45S'4")".*&9+%
  • 59. Good Git Practice • Check in often! - Rule of thumb… check in whenever code works • Write detailed log notes! You’ll thank yourself for it later! • Branch for new features - Avoid working on the master branch, it should always be the “clean, working” code
  • 60. References • Pro Git - free online: ! !""#$%%#*.1&",.*1%0..M% • Branching: ! !""#$%%'S&3,-./%#.5"5%945)--355:)+41&"40*9'-!&'14/.63+% • Git tutorials and useful FAQ links: ! !""#$%%5&d*3S&5&.'5,-./%*35.)*-35%1&"4")".*&9+54031&''3*5% • Github: ! !""#$%%1&"!)0,-./% • Git-SVN integration: ! !""#$%%.*35"&5,1*%0+.1%2WWU%WU%2%1&"45S'4")".*&9+% • Google: ! !""#$%%1..1+3,-./% • Bing: ! !""#$%%0&'1,-./%
  • 62. Git Setup – one-time Recommend downloading xcode, just for the FileMerge program (“opendiff” when launched from command line) • Identify yourself to Git: 781&"8-.':&18441+.09+8)53*,'9/38He.)*8f9/3H88 781&"8-.':&18441+.09+8)53*,3/9&+8H(.)*`3/9&+,-./H8 All your work is logged using the name/email you provide here. • Give Git some color to make things easier to read: 781&"8-.':&18441+.09+8-.+.*,)&89)".8 • Line-ending bandaids: 781&"8-.':&18441+.09+8-.*3,59:3-*+:8"*)38 781&"8-.':&18441+.09+8-.*3,9)".-*+:8&'#)" “"*)3” Windows users: use “&'#)"” instead of
  • 63. Git Setup • Begin using Git for a project: 78-68#*.B3-"g.+63*% 781&"8&'&" h'&"&9+&^3683/#"(8c&"8*3#.5&".*(8&'8%#*.B3-"g.+63*%,1&"% Creates the (hidden) ,1&" folder. No files being tracked yet. • Add files to repository: 781&"89668, 781&"8-.//&"84/8i:&*5"8-.//&"j Instructs Git to manage all files in the folder %#*.B3-"g.+63*%.