SlideShare uma empresa Scribd logo
1 de 63
Baixar para ler offline
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™
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”
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*%.

Mais conteúdo relacionado

Mais procurados

Quick Introduction to git
Quick Introduction to gitQuick Introduction to git
Quick Introduction to git
Joel Krebs
 

Mais procurados (20)

Git Introduction Tutorial
Git Introduction TutorialGit Introduction Tutorial
Git Introduction Tutorial
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Git commands
Git commandsGit commands
Git commands
 
A Practical Introduction to git
A Practical Introduction to gitA Practical Introduction to git
A Practical Introduction to git
 
Git 101 for Beginners
Git 101 for Beginners Git 101 for Beginners
Git 101 for Beginners
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
Quick Introduction to git
Quick Introduction to gitQuick Introduction to git
Quick Introduction to git
 
Git - An Introduction
Git - An IntroductionGit - An Introduction
Git - An Introduction
 
Learning git
Learning gitLearning git
Learning git
 
Git & GitHub WorkShop
Git & GitHub WorkShopGit & GitHub WorkShop
Git & GitHub WorkShop
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using Git
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
Git real slides
Git real slidesGit real slides
Git real slides
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
Git basics for beginners
Git basics for beginnersGit basics for beginners
Git basics for beginners
 
Git and github 101
Git and github 101Git and github 101
Git and github 101
 
Git and Github slides.pdf
Git and Github slides.pdfGit and Github slides.pdf
Git and Github slides.pdf
 
GitHub Basics - Derek Bable
GitHub Basics - Derek BableGitHub Basics - Derek Bable
GitHub Basics - Derek Bable
 
Git and Github Session
Git and Github SessionGit and Github Session
Git and Github Session
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 

Destaque

Git 101 tutorial presentation
Git 101 tutorial presentationGit 101 tutorial presentation
Git 101 tutorial presentation
Terry Wang
 
Gastrointestinal disorders 2
Gastrointestinal disorders 2Gastrointestinal disorders 2
Gastrointestinal disorders 2
MD Specialclass
 
Gastrointestinal System Disorders
Gastrointestinal System DisordersGastrointestinal System Disorders
Gastrointestinal System Disorders
Jessie Madz
 

Destaque (17)

Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
 
Introduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideIntroduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guide
 
Git tutorial
Git tutorial Git tutorial
Git tutorial
 
Basic Git Intro
Basic Git IntroBasic Git Intro
Basic Git Intro
 
Introduction to Git (part 1)
Introduction to Git (part 1)Introduction to Git (part 1)
Introduction to Git (part 1)
 
Git 101 tutorial presentation
Git 101 tutorial presentationGit 101 tutorial presentation
Git 101 tutorial presentation
 
Git cheat sheet
Git cheat sheetGit cheat sheet
Git cheat sheet
 
Gitlab
GitlabGitlab
Gitlab
 
Mini-tutorial de git
Mini-tutorial de gitMini-tutorial de git
Mini-tutorial de git
 
Gastrointestinal disorders 2
Gastrointestinal disorders 2Gastrointestinal disorders 2
Gastrointestinal disorders 2
 
Gastrointestinal disease
Gastrointestinal diseaseGastrointestinal disease
Gastrointestinal disease
 
Git Tutorial 教學
Git Tutorial 教學Git Tutorial 教學
Git Tutorial 教學
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTree
 
Gastrointestinal System Disorders
Gastrointestinal System DisordersGastrointestinal System Disorders
Gastrointestinal System Disorders
 
Git tutorial
Git tutorialGit tutorial
Git tutorial
 
Gastrointestinal disease lecture(ppt)
Gastrointestinal disease lecture(ppt)Gastrointestinal disease lecture(ppt)
Gastrointestinal disease lecture(ppt)
 

Semelhante a Git tutorial

Beginner's Guide to Version Control with Git
Beginner's Guide to Version Control with GitBeginner's Guide to Version Control with Git
Beginner's Guide to Version Control with Git
Robert Lee-Cann
 
3 Git
3 Git3 Git
Github for Serious Business Professional
Github for Serious Business ProfessionalGithub for Serious Business Professional
Github for Serious Business Professional
zwheller
 
[artifactconf] Github for People Who Don't Code
[artifactconf] Github for People Who Don't Code[artifactconf] Github for People Who Don't Code
[artifactconf] Github for People Who Don't Code
Christopher Schmitt
 
Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Untangling fall2017 week2_try2
Untangling fall2017 week2_try2
Derek Jacoby
 

Semelhante a Git tutorial (20)

Intro to Git: a hands-on workshop
Intro to Git: a hands-on workshopIntro to Git: a hands-on workshop
Intro to Git: a hands-on workshop
 
Switching to Git
Switching to GitSwitching to Git
Switching to Git
 
Beginner's Guide to Version Control with Git
Beginner's Guide to Version Control with GitBeginner's Guide to Version Control with Git
Beginner's Guide to Version Control with Git
 
The Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHubThe Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHub
 
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshell
 
3 Git
3 Git3 Git
3 Git
 
Bedjango talk about Git & GitHub
Bedjango talk about Git & GitHubBedjango talk about Git & GitHub
Bedjango talk about Git & GitHub
 
Git - Some tips to do it better
Git - Some tips to do it betterGit - Some tips to do it better
Git - Some tips to do it better
 
Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?Que nos espera a los ALM Dudes para el 2013?
Que nos espera a los ALM Dudes para el 2013?
 
Git hub
Git hubGit hub
Git hub
 
Old code doesn't stink
Old code doesn't stinkOld code doesn't stink
Old code doesn't stink
 
Introduction to Git (Greg Lonnon)
Introduction to Git (Greg Lonnon)Introduction to Git (Greg Lonnon)
Introduction to Git (Greg Lonnon)
 
Wokshop de Git
Wokshop de Git Wokshop de Git
Wokshop de Git
 
Github By Nyros Developer
Github By Nyros DeveloperGithub By Nyros Developer
Github By Nyros Developer
 
Care and Feeding of Large Scale Graphite Installations - DevOpsDays Austin 2013
Care and Feeding of Large Scale Graphite Installations - DevOpsDays Austin 2013Care and Feeding of Large Scale Graphite Installations - DevOpsDays Austin 2013
Care and Feeding of Large Scale Graphite Installations - DevOpsDays Austin 2013
 
Github for Serious Business Professional
Github for Serious Business ProfessionalGithub for Serious Business Professional
Github for Serious Business Professional
 
[artifactconf] Github for People Who Don't Code
[artifactconf] Github for People Who Don't Code[artifactconf] Github for People Who Don't Code
[artifactconf] Github for People Who Don't Code
 
Untangling fall2017 week2
Untangling fall2017 week2Untangling fall2017 week2
Untangling fall2017 week2
 
Untangling fall2017 week2_try2
Untangling fall2017 week2_try2Untangling fall2017 week2_try2
Untangling fall2017 week2_try2
 
Monitoring your API
Monitoring your APIMonitoring your API
Monitoring your API
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

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 !"#$%&'(&%)$*&('*+,'-+%&./
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 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”
  • 55.
  • 56.
  • 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*%.