SlideShare a Scribd company logo
Git, Github and Open Source
About Me

 • Lorna Jane Mitchell

 • Consultant, author, speaker

 • Github: http://github.com/lornajane

 • Twitter: @lornajane

 • Web: http://lornajane.net

 • Project lead of joind.in, open source project




                                                   2
Github

"We make it easier to collaborate with others and share your projects with
the universe"


   • Github is a hosted source control solution, based on git.

   • Used by open source projects, personal projects

   • Paid-for offerings for non-public code


There are other ways to do git, open source, and probably everything
mentioned here ...




                                                                             3
Centralised Version Control

The overall ecosystem with git looks different because instead of this:




                                  repo



      checkout                 checkout                  checkout




                                                                          4
Distributed Version Control

Things look like this:




                                repo


            repo         repo          repo   repo




                                                     5
Distributed Version Control

Or rather:




                     repo

                            repo

              repo

                                   repo

                     repo


                                          6
Code on GitHub
Get a Repo

 • Find the project

 • Fork the project

 • Clone your repo




                      8
Fork the Project




                   9
Clone your Repo




git clone git@github.com:username/joindin.git




                                                10
Git: Many Repos


                  GitHub

             joindin/joind.in

                     fork


            your-user/joind.in


                                clone

                            development
                                          11
Working with Git
Git Overview

A few key commands you will need:

  • git log and git show

  • git status and git diff

  • git add

  • git commit

  • git pull and git push

  • reverting changes


Then we’ll talk about branching




                                    13
Git Log

Git automatically sends the output to a pager like less


commit 76916fed387d9161d48b0f1e592685c183e4757c
Author: Lorna Mitchell <lorna@lornajane.net>
Date:   Wed Mar 14 21:06:24 2012 +0000

    adding the actual announcement wording to the banner

commit 3fdc9f6b9795ed6a3a02465817bfebb8f77ca34e
Author: Kim Rowan <rowan02@unknown-00-25-00-44-3a-04.home>
Date:   Tue Mar 13 12:58:48 2012 +0000

    Added info block to main page announcing php|arch Impact Award nom

commit dc5777199aa2bb822b498ec1dea99f3e89ee90e0
Author: Lorna Mitchell <lorna@lornajane.net>
Date:   Sun Mar 11 21:03:13 2012 +0000

    removed some unused files

                                                                   14
Git Log

There are some alternative views, this is git log -graph -oneline
* 76916fe adding the actual announcement wording to the banner
* 3fdc9f6 Added info block to main page announcing php|arch Impact Awa
* dc57771 removed some unused files
* aa502ec straightening out a problem with API metadata not showing up
* 6719b8a GH #473: Refactored ternary to if
*    d6a69d7 Merge branch 'joindin-167'
|
| * b7effc5 JOINDIN-167: Facebook users without username (this is poss
* | 6af9450 JOINDIN-167: reverted removal of facebook login
* |    6249401 Merge branch 'master' of https://github.com/joindin/join
| 
| |/
|/|
| *    16b31d3 Merge remote-tracking branch 'lornajane/no-facebook'
| |
| | * 36ee9ea removing facebook login functionality - hopefully tempor
| * | f4a2a73 removing references to the gravatar cache; these are ser
| |/
| * 83d6c04 Prevented forwarding on to anywhere except this site after
| *    d411358 Merge remote-tracking branch 'mvriel/JOINDIN-161_2'
                                                                    15
Git Status

Shows you what you have changed, and what will be in your next commit
(these are two different things)

After editing a couple of files:

# On branch impact-banner
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working dir
#
#       modified:   src/.htaccess
#       modified:   src/system/application/views/main/index.php
#
no changes added to commit (use "git add" and/or "git commit -a")


To include changes in a commit, we need to stage them first using
monogit add


                                                                        16
Git Add


git add src/system/application/views/main/index.php


git status again
# On branch impact-banner
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   src/system/application/views/main/index.php
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working dir
#
#       modified:   src/.htaccess
#




                                                                   17
Git Commit

git commit -m ’meaningful commit message’

  • Without the -m, git will open your default text editor to add a message

  • You can also supply a list of files to include in the commit

  • Use git add -interactive to stage sections of files




                                                                              18
Undoing Changes

To undo changes that you haven’t staged yet:

        git checkout -- path/to/file


If you have staged the changes, you can still undo them:

        git reset
        git reset --hard

Reset will unstage the changes; the hard reset puts everything back to the
most recent commit




                                                                             19
Managing the Multiple Repositories
Stay in Sync

Pull the changes from upstream into your local repo



               GitHub

          changes upstream



           your-user/joind.in               pull



                                        development


git pull upstream master

                                                      21
Stay in Sync

The changes are now in your local repo, push them to github:



                  GitHub

             changes upstream



              your-user/joind.in


                                   push

                                      changes locally


git push                                                       22
Branching in Git

What you need to know:

  • Branching (and merging!) are fast and painless




                                                     23
Branching in Git

What you need to know:

  • Branching (and merging!) are fast and painless

  • Branches are private by default




                                                     23
Branching in Git

What you need to know:

  • Branching (and merging!) are fast and painless

  • Branches are private by default

  • Branches are in the repo, they are not copies

      • no updating vhosts
      • only one directory with code in




                                                     23
Git Branching Commands

Create a new branch:

git checkout -b new-branch-name


Switch to an existing branch

git checkout branchname


List branches in this repo

git branch

Branches are local by default, they don’t synchronise to other repositories
unless asked




                                                                              24
Best Practice in Branching

Git doesn’t dictate a process, so usually each project does. Common
features:

  • Branch for features

  • Branch for fixes

  • Branch for experiments




                                                                      25
Best Practice in Branching

Git doesn’t dictate a process, so usually each project does. Common
features:

  • Branch for features

  • Branch for fixes

  • Branch for experiments

  • Basically: branch!

By keeping changes in branches, they are very easy to merge to another
repo or branch




                                                                         25
Sharing Changes

Your changes are in your local branch - how do they get into a main
project?




                  GitHub

                joindin/joind.in



              your-user/joind.in


                                        local feature


                                                                      26
Sharing Changes

git push origin new-branch-name




              GitHub

           joindin/joind.in



           feature at origin


                               push

                                      local feature


                                                      27
Sharing Changes

To offer changes upstream, make a pull request




                  GitHub

               joindin/joind.in

          pull request


               feature at origin



                                      local feature


                                                      28
Making a Pull Request

Make the pull request on GitHub




Explain what you have changed, and why. Keep changes atomic.
                                                               29
Open Source Contributions

After that:

   • Your pull request appears on the project’s list

        • http://github.com/joindin/joind.in/pulls

   • Hopefully it gets merged

   • You get bragging rights :)

        • https://github.com/joindin/joind.in/contributors




                                                             30
Where to Begin with Open Source

How to get involved: (warning, contains bias!)

   • Check for introductory docs

       • http://joind.in/about




                                                 31
Where to Begin with Open Source

How to get involved: (warning, contains bias!)

   • Check for introductory docs

       • http://joind.in/about

   • Get code and set up the project

       • usually, fork the repo and read the README




                                                      31
Where to Begin with Open Source

How to get involved: (warning, contains bias!)

   • Check for introductory docs

       • http://joind.in/about

   • Get code and set up the project

       • usually, fork the repo and read the README

   • Find the bug tracker, and pick something

       • http://joindin.jira.com




                                                      31
Where to Begin with Open Source

How to get involved: (warning, contains bias!)

   • Check for introductory docs

       • http://joind.in/about

   • Get code and set up the project

       • usually, fork the repo and read the README

   • Find the bug tracker, and pick something

       • http://joindin.jira.com

   • Talk to the other people in the project

       • #joind.in on freenode


                                                      31
Where to Begin with Open Source

How to get involved: (warning, contains bias!)

   • Check for introductory docs

       • http://joind.in/about

   • Get code and set up the project

       • usually, fork the repo and read the README

   • Find the bug tracker, and pick something

       • http://joindin.jira.com

   • Talk to the other people in the project

       • #joind.in on freenode

   • Share and enjoy
                                                      31
Questions?
Thanks!

  • Slides will be on slideshare

  • Github: http://github.com/lornajane

  • Twitter: @lornajane

  • Web: http://lornajane.net


PHPNW - 3rd April, Derick Rethans on MongoDB. Rain Bar, Manchester.




                                                                      33

More Related Content

What's hot (20)

Github basics
Github basicsGithub basics
Github basics
Radoslav Georgiev
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
Uri Goldstein
 
Inside GitHub
Inside GitHubInside GitHub
Inside GitHub
err
 
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Simplilearn
 
git and github
git and githubgit and github
git and github
Darren Oakley
 
Getting Started with GitHub
Getting Started with GitHubGetting Started with GitHub
Getting Started with GitHub
Michael Redlich
 
Git and Github Session
Git and Github SessionGit and Github Session
Git and Github Session
GoogleDevelopersStud1
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
Houari ZEGAI
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
Nicolás Tourné
 
Workshop on Git and GitHub
Workshop on Git and GitHubWorkshop on Git and GitHub
Workshop on Git and GitHub
DSCVSSUT
 
Git and GitHub crash course
Git and GitHub crash courseGit and GitHub crash course
Git and GitHub crash course
Mireia Sangalo
 
Git & GitHub for Beginners
Git & GitHub for BeginnersGit & GitHub for Beginners
Git & GitHub for Beginners
Sébastien Saunier
 
Git tutorial
Git tutorial Git tutorial
Git tutorial
TingYen Lee
 
HacktoberFest-Git&GitHub
HacktoberFest-Git&GitHubHacktoberFest-Git&GitHub
HacktoberFest-Git&GitHub
GDSCIIITBbsr
 
Git 101
Git 101Git 101
Git 101
jayrparro
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Rueful Robin
 
Git basic
Git basicGit basic
Git basic
Emran Ul Hadi
 
Git101
Git101Git101
Git101
Jason Noble
 
Introduction to git administration
Introduction to git administrationIntroduction to git administration
Introduction to git administration
Shawn Doyle
 
Git Introduction
Git IntroductionGit Introduction
Git Introduction
Anil Wadghule
 
Intro to Git and GitHub
Intro to Git and GitHubIntro to Git and GitHub
Intro to Git and GitHub
Uri Goldstein
 
Inside GitHub
Inside GitHubInside GitHub
Inside GitHub
err
 
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Simplilearn
 
Getting Started with GitHub
Getting Started with GitHubGetting Started with GitHub
Getting Started with GitHub
Michael Redlich
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
Houari ZEGAI
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
Nicolás Tourné
 
Workshop on Git and GitHub
Workshop on Git and GitHubWorkshop on Git and GitHub
Workshop on Git and GitHub
DSCVSSUT
 
Git and GitHub crash course
Git and GitHub crash courseGit and GitHub crash course
Git and GitHub crash course
Mireia Sangalo
 
HacktoberFest-Git&GitHub
HacktoberFest-Git&GitHubHacktoberFest-Git&GitHub
HacktoberFest-Git&GitHub
GDSCIIITBbsr
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Rueful Robin
 
Introduction to git administration
Introduction to git administrationIntroduction to git administration
Introduction to git administration
Shawn Doyle
 

Viewers also liked (8)

Git/GitHub
Git/GitHubGit/GitHub
Git/GitHub
Microsoft
 
Inside GitHub with Chris Wanstrath
Inside GitHub with Chris WanstrathInside GitHub with Chris Wanstrath
Inside GitHub with Chris Wanstrath
SV Ruby on Rails Meetup
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
Bioinformatics and Computational Biosciences Branch
 
Git and Github
Git and GithubGit and Github
Git and Github
Wen-Tien Chang
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
James Gray
 
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
Rohit Arora
 
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
HubSpot
 
Quick Introduction to git
Quick Introduction to gitQuick Introduction to git
Quick Introduction to git
Joel Krebs
 
Ad

Similar to Git, GitHub and Open Source (20)

Git Tech Talk
Git  Tech TalkGit  Tech Talk
Git Tech Talk
Chris Johnson
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
Priya Nayak
 
Git tech talk
Git tech talkGit tech talk
Git tech talk
razasayed
 
Git and GitHub (1).pptx
Git and GitHub (1).pptxGit and GitHub (1).pptx
Git and GitHub (1).pptx
BetelAddisu
 
Git basics
Git basicsGit basics
Git basics
GHARSALLAH Mohamed
 
Git basics
Git basicsGit basics
Git basics
Amit Sawhney
 
Git and GitHub Workshop of GDG on Campus UNSTPB
Git and GitHub Workshop of GDG on Campus UNSTPBGit and GitHub Workshop of GDG on Campus UNSTPB
Git and GitHub Workshop of GDG on Campus UNSTPB
AmaraCostachiu
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
Sage Sharp
 
Git Session 2K23.pptx
Git Session 2K23.pptxGit Session 2K23.pptx
Git Session 2K23.pptx
Eshaan35
 
Session git
Session gitSession git
Session git
Roni Saha
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
Lukas Fittl
 
Understanding Distributed Source Control
Understanding Distributed Source ControlUnderstanding Distributed Source Control
Understanding Distributed Source Control
Lorna Mitchell
 
Getting started with GIT
Getting started with GITGetting started with GIT
Getting started with GIT
pratz0909
 
github ppt git ppt on git hub to know ab
github ppt git ppt on git hub to know abgithub ppt git ppt on git hub to know ab
github ppt git ppt on git hub to know ab
infoinnext
 
Git training
Git trainingGit training
Git training
eric7master
 
Git and github fundamentals
Git and github fundamentalsGit and github fundamentals
Git and github fundamentals
RajKharvar
 
Introduction To Git
Introduction To GitIntroduction To Git
Introduction To Git
Arnaud Seilles
 
tech winter break workshop on git &git hub.pptx
tech winter break workshop on git &git hub.pptxtech winter break workshop on git &git hub.pptx
tech winter break workshop on git &git hub.pptx
ashishraulin
 
Intro to Git and Github
Intro to Git and GithubIntro to Git and Github
Intro to Git and Github
Andrew Babiec
 
Effective Git with Eclipse
Effective Git with EclipseEffective Git with Eclipse
Effective Git with Eclipse
Chris Aniszczyk
 
Git tech talk
Git tech talkGit tech talk
Git tech talk
razasayed
 
Git and GitHub (1).pptx
Git and GitHub (1).pptxGit and GitHub (1).pptx
Git and GitHub (1).pptx
BetelAddisu
 
Git and GitHub Workshop of GDG on Campus UNSTPB
Git and GitHub Workshop of GDG on Campus UNSTPBGit and GitHub Workshop of GDG on Campus UNSTPB
Git and GitHub Workshop of GDG on Campus UNSTPB
AmaraCostachiu
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
Sage Sharp
 
Git Session 2K23.pptx
Git Session 2K23.pptxGit Session 2K23.pptx
Git Session 2K23.pptx
Eshaan35
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
Lukas Fittl
 
Understanding Distributed Source Control
Understanding Distributed Source ControlUnderstanding Distributed Source Control
Understanding Distributed Source Control
Lorna Mitchell
 
Getting started with GIT
Getting started with GITGetting started with GIT
Getting started with GIT
pratz0909
 
github ppt git ppt on git hub to know ab
github ppt git ppt on git hub to know abgithub ppt git ppt on git hub to know ab
github ppt git ppt on git hub to know ab
infoinnext
 
Git and github fundamentals
Git and github fundamentalsGit and github fundamentals
Git and github fundamentals
RajKharvar
 
tech winter break workshop on git &git hub.pptx
tech winter break workshop on git &git hub.pptxtech winter break workshop on git &git hub.pptx
tech winter break workshop on git &git hub.pptx
ashishraulin
 
Intro to Git and Github
Intro to Git and GithubIntro to Git and Github
Intro to Git and Github
Andrew Babiec
 
Effective Git with Eclipse
Effective Git with EclipseEffective Git with Eclipse
Effective Git with Eclipse
Chris Aniszczyk
 
Ad

More from Lorna Mitchell (20)

OAuth: Trust Issues
OAuth: Trust IssuesOAuth: Trust Issues
OAuth: Trust Issues
Lorna Mitchell
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
Lorna Mitchell
 
Best Practice in API Design
Best Practice in API DesignBest Practice in API Design
Best Practice in API Design
Lorna Mitchell
 
Business 101 for Developers: Time and Money
Business 101 for Developers: Time and MoneyBusiness 101 for Developers: Time and Money
Business 101 for Developers: Time and Money
Lorna Mitchell
 
Things I wish web graduates knew
Things I wish web graduates knewThings I wish web graduates knew
Things I wish web graduates knew
Lorna Mitchell
 
Teach a Man To Fish (phpconpl edition)
Teach a Man To Fish (phpconpl edition)Teach a Man To Fish (phpconpl edition)
Teach a Man To Fish (phpconpl edition)
Lorna Mitchell
 
Web services tutorial
Web services tutorialWeb services tutorial
Web services tutorial
Lorna Mitchell
 
Join In With Joind.In
Join In With Joind.InJoin In With Joind.In
Join In With Joind.In
Lorna Mitchell
 
Tool Up Your LAMP Stack
Tool Up Your LAMP StackTool Up Your LAMP Stack
Tool Up Your LAMP Stack
Lorna Mitchell
 
Going Freelance
Going FreelanceGoing Freelance
Going Freelance
Lorna Mitchell
 
Best Practice in Web Service Design
Best Practice in Web Service DesignBest Practice in Web Service Design
Best Practice in Web Service Design
Lorna Mitchell
 
Coaching Development Teams: Teach A Man To Fish
Coaching Development Teams: Teach A Man To FishCoaching Development Teams: Teach A Man To Fish
Coaching Development Teams: Teach A Man To Fish
Lorna Mitchell
 
Zend Certification Preparation Tutorial
Zend Certification Preparation TutorialZend Certification Preparation Tutorial
Zend Certification Preparation Tutorial
Lorna Mitchell
 
Implementing OAuth with PHP
Implementing OAuth with PHPImplementing OAuth with PHP
Implementing OAuth with PHP
Lorna Mitchell
 
Web Services Tutorial
Web Services TutorialWeb Services Tutorial
Web Services Tutorial
Lorna Mitchell
 
Object Oriented Programming in PHP
Object Oriented Programming in PHPObject Oriented Programming in PHP
Object Oriented Programming in PHP
Lorna Mitchell
 
Example Presentation
Example PresentationExample Presentation
Example Presentation
Lorna Mitchell
 
Could You Telecommute?
Could You Telecommute?Could You Telecommute?
Could You Telecommute?
Lorna Mitchell
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
Lorna Mitchell
 
Running a Project with Github
Running a Project with GithubRunning a Project with Github
Running a Project with Github
Lorna Mitchell
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
Lorna Mitchell
 
Best Practice in API Design
Best Practice in API DesignBest Practice in API Design
Best Practice in API Design
Lorna Mitchell
 
Business 101 for Developers: Time and Money
Business 101 for Developers: Time and MoneyBusiness 101 for Developers: Time and Money
Business 101 for Developers: Time and Money
Lorna Mitchell
 
Things I wish web graduates knew
Things I wish web graduates knewThings I wish web graduates knew
Things I wish web graduates knew
Lorna Mitchell
 
Teach a Man To Fish (phpconpl edition)
Teach a Man To Fish (phpconpl edition)Teach a Man To Fish (phpconpl edition)
Teach a Man To Fish (phpconpl edition)
Lorna Mitchell
 
Tool Up Your LAMP Stack
Tool Up Your LAMP StackTool Up Your LAMP Stack
Tool Up Your LAMP Stack
Lorna Mitchell
 
Best Practice in Web Service Design
Best Practice in Web Service DesignBest Practice in Web Service Design
Best Practice in Web Service Design
Lorna Mitchell
 
Coaching Development Teams: Teach A Man To Fish
Coaching Development Teams: Teach A Man To FishCoaching Development Teams: Teach A Man To Fish
Coaching Development Teams: Teach A Man To Fish
Lorna Mitchell
 
Zend Certification Preparation Tutorial
Zend Certification Preparation TutorialZend Certification Preparation Tutorial
Zend Certification Preparation Tutorial
Lorna Mitchell
 
Implementing OAuth with PHP
Implementing OAuth with PHPImplementing OAuth with PHP
Implementing OAuth with PHP
Lorna Mitchell
 
Object Oriented Programming in PHP
Object Oriented Programming in PHPObject Oriented Programming in PHP
Object Oriented Programming in PHP
Lorna Mitchell
 
Could You Telecommute?
Could You Telecommute?Could You Telecommute?
Could You Telecommute?
Lorna Mitchell
 
Running a Project with Github
Running a Project with GithubRunning a Project with Github
Running a Project with Github
Lorna Mitchell
 

Recently uploaded (20)

Extend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptxExtend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptx
hoang971
 
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and ImplementationAI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
Christine Shepherd
 
Introduction to Typescript - GDG On Campus EUE
Introduction to Typescript - GDG On Campus EUEIntroduction to Typescript - GDG On Campus EUE
Introduction to Typescript - GDG On Campus EUE
Google Developer Group On Campus European Universities in Egypt
 
Top 25 AI Coding Agents for Vibe Coders to Use in 2025.pdf
Top 25 AI Coding Agents for Vibe Coders to Use in 2025.pdfTop 25 AI Coding Agents for Vibe Coders to Use in 2025.pdf
Top 25 AI Coding Agents for Vibe Coders to Use in 2025.pdf
SOFTTECHHUB
 
TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025
Suyash Joshi
 
Oracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI ProfessionalOracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI Professional
VICTOR MAESTRE RAMIREZ
 
Evaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical ContentEvaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical Content
Paul Groth
 
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to KnowWhat is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
SMACT Works
 
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Safe Software
 
Palo Alto Networks Cybersecurity Foundation
Palo Alto Networks Cybersecurity FoundationPalo Alto Networks Cybersecurity Foundation
Palo Alto Networks Cybersecurity Foundation
VICTOR MAESTRE RAMIREZ
 
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und AnwendungsfälleDomino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
panagenda
 
Create Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent BuilderCreate Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent Builder
DianaGray10
 
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdfBoosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Alkin Tezuysal
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
Securiport - A Border Security Company
Securiport  -  A Border Security CompanySecuriport  -  A Border Security Company
Securiport - A Border Security Company
Securiport
 
soulmaite review - Find Real AI soulmate review
soulmaite review - Find Real AI soulmate reviewsoulmaite review - Find Real AI soulmate review
soulmaite review - Find Real AI soulmate review
Soulmaite
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Jira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : IntroductionJira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : Introduction
Ravi Teja
 
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
Edge AI and Vision Alliance
 
Trends Report: Artificial Intelligence (AI)
Trends Report: Artificial Intelligence (AI)Trends Report: Artificial Intelligence (AI)
Trends Report: Artificial Intelligence (AI)
Brian Ahier
 
Extend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptxExtend-Microsoft365-with-Copilot-agents.pptx
Extend-Microsoft365-with-Copilot-agents.pptx
hoang971
 
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and ImplementationAI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
Christine Shepherd
 
Top 25 AI Coding Agents for Vibe Coders to Use in 2025.pdf
Top 25 AI Coding Agents for Vibe Coders to Use in 2025.pdfTop 25 AI Coding Agents for Vibe Coders to Use in 2025.pdf
Top 25 AI Coding Agents for Vibe Coders to Use in 2025.pdf
SOFTTECHHUB
 
TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025
Suyash Joshi
 
Oracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI ProfessionalOracle Cloud Infrastructure Generative AI Professional
Oracle Cloud Infrastructure Generative AI Professional
VICTOR MAESTRE RAMIREZ
 
Evaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical ContentEvaluation Challenges in Using Generative AI for Science & Technical Content
Evaluation Challenges in Using Generative AI for Science & Technical Content
Paul Groth
 
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to KnowWhat is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
SMACT Works
 
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Safe Software
 
Palo Alto Networks Cybersecurity Foundation
Palo Alto Networks Cybersecurity FoundationPalo Alto Networks Cybersecurity Foundation
Palo Alto Networks Cybersecurity Foundation
VICTOR MAESTRE RAMIREZ
 
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und AnwendungsfälleDomino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
Domino IQ – Was Sie erwartet, erste Schritte und Anwendungsfälle
panagenda
 
Create Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent BuilderCreate Your First AI Agent with UiPath Agent Builder
Create Your First AI Agent with UiPath Agent Builder
DianaGray10
 
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdfBoosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Boosting MySQL with Vector Search -THE VECTOR SEARCH CONFERENCE 2025 .pdf
Alkin Tezuysal
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
Securiport - A Border Security Company
Securiport  -  A Border Security CompanySecuriport  -  A Border Security Company
Securiport - A Border Security Company
Securiport
 
soulmaite review - Find Real AI soulmate review
soulmaite review - Find Real AI soulmate reviewsoulmaite review - Find Real AI soulmate review
soulmaite review - Find Real AI soulmate review
Soulmaite
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Jira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : IntroductionJira Administration Training – Day 1 : Introduction
Jira Administration Training – Day 1 : Introduction
Ravi Teja
 
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
“State-space Models vs. Transformers for Ultra-low-power Edge AI,” a Presenta...
Edge AI and Vision Alliance
 
Trends Report: Artificial Intelligence (AI)
Trends Report: Artificial Intelligence (AI)Trends Report: Artificial Intelligence (AI)
Trends Report: Artificial Intelligence (AI)
Brian Ahier
 

Git, GitHub and Open Source

  • 1. Git, Github and Open Source
  • 2. About Me • Lorna Jane Mitchell • Consultant, author, speaker • Github: http://github.com/lornajane • Twitter: @lornajane • Web: http://lornajane.net • Project lead of joind.in, open source project 2
  • 3. Github "We make it easier to collaborate with others and share your projects with the universe" • Github is a hosted source control solution, based on git. • Used by open source projects, personal projects • Paid-for offerings for non-public code There are other ways to do git, open source, and probably everything mentioned here ... 3
  • 4. Centralised Version Control The overall ecosystem with git looks different because instead of this: repo checkout checkout checkout 4
  • 5. Distributed Version Control Things look like this: repo repo repo repo repo 5
  • 6. Distributed Version Control Or rather: repo repo repo repo repo 6
  • 8. Get a Repo • Find the project • Fork the project • Clone your repo 8
  • 10. Clone your Repo git clone [email protected]:username/joindin.git 10
  • 11. Git: Many Repos GitHub joindin/joind.in fork your-user/joind.in clone development 11
  • 13. Git Overview A few key commands you will need: • git log and git show • git status and git diff • git add • git commit • git pull and git push • reverting changes Then we’ll talk about branching 13
  • 14. Git Log Git automatically sends the output to a pager like less commit 76916fed387d9161d48b0f1e592685c183e4757c Author: Lorna Mitchell <[email protected]> Date: Wed Mar 14 21:06:24 2012 +0000 adding the actual announcement wording to the banner commit 3fdc9f6b9795ed6a3a02465817bfebb8f77ca34e Author: Kim Rowan <[email protected]> Date: Tue Mar 13 12:58:48 2012 +0000 Added info block to main page announcing php|arch Impact Award nom commit dc5777199aa2bb822b498ec1dea99f3e89ee90e0 Author: Lorna Mitchell <[email protected]> Date: Sun Mar 11 21:03:13 2012 +0000 removed some unused files 14
  • 15. Git Log There are some alternative views, this is git log -graph -oneline * 76916fe adding the actual announcement wording to the banner * 3fdc9f6 Added info block to main page announcing php|arch Impact Awa * dc57771 removed some unused files * aa502ec straightening out a problem with API metadata not showing up * 6719b8a GH #473: Refactored ternary to if * d6a69d7 Merge branch 'joindin-167' | | * b7effc5 JOINDIN-167: Facebook users without username (this is poss * | 6af9450 JOINDIN-167: reverted removal of facebook login * | 6249401 Merge branch 'master' of https://github.com/joindin/join | | |/ |/| | * 16b31d3 Merge remote-tracking branch 'lornajane/no-facebook' | | | | * 36ee9ea removing facebook login functionality - hopefully tempor | * | f4a2a73 removing references to the gravatar cache; these are ser | |/ | * 83d6c04 Prevented forwarding on to anywhere except this site after | * d411358 Merge remote-tracking branch 'mvriel/JOINDIN-161_2' 15
  • 16. Git Status Shows you what you have changed, and what will be in your next commit (these are two different things) After editing a couple of files: # On branch impact-banner # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working dir # # modified: src/.htaccess # modified: src/system/application/views/main/index.php # no changes added to commit (use "git add" and/or "git commit -a") To include changes in a commit, we need to stage them first using monogit add 16
  • 17. Git Add git add src/system/application/views/main/index.php git status again # On branch impact-banner # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: src/system/application/views/main/index.php # # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working dir # # modified: src/.htaccess # 17
  • 18. Git Commit git commit -m ’meaningful commit message’ • Without the -m, git will open your default text editor to add a message • You can also supply a list of files to include in the commit • Use git add -interactive to stage sections of files 18
  • 19. Undoing Changes To undo changes that you haven’t staged yet: git checkout -- path/to/file If you have staged the changes, you can still undo them: git reset git reset --hard Reset will unstage the changes; the hard reset puts everything back to the most recent commit 19
  • 20. Managing the Multiple Repositories
  • 21. Stay in Sync Pull the changes from upstream into your local repo GitHub changes upstream your-user/joind.in pull development git pull upstream master 21
  • 22. Stay in Sync The changes are now in your local repo, push them to github: GitHub changes upstream your-user/joind.in push changes locally git push 22
  • 23. Branching in Git What you need to know: • Branching (and merging!) are fast and painless 23
  • 24. Branching in Git What you need to know: • Branching (and merging!) are fast and painless • Branches are private by default 23
  • 25. Branching in Git What you need to know: • Branching (and merging!) are fast and painless • Branches are private by default • Branches are in the repo, they are not copies • no updating vhosts • only one directory with code in 23
  • 26. Git Branching Commands Create a new branch: git checkout -b new-branch-name Switch to an existing branch git checkout branchname List branches in this repo git branch Branches are local by default, they don’t synchronise to other repositories unless asked 24
  • 27. Best Practice in Branching Git doesn’t dictate a process, so usually each project does. Common features: • Branch for features • Branch for fixes • Branch for experiments 25
  • 28. Best Practice in Branching Git doesn’t dictate a process, so usually each project does. Common features: • Branch for features • Branch for fixes • Branch for experiments • Basically: branch! By keeping changes in branches, they are very easy to merge to another repo or branch 25
  • 29. Sharing Changes Your changes are in your local branch - how do they get into a main project? GitHub joindin/joind.in your-user/joind.in local feature 26
  • 30. Sharing Changes git push origin new-branch-name GitHub joindin/joind.in feature at origin push local feature 27
  • 31. Sharing Changes To offer changes upstream, make a pull request GitHub joindin/joind.in pull request feature at origin local feature 28
  • 32. Making a Pull Request Make the pull request on GitHub Explain what you have changed, and why. Keep changes atomic. 29
  • 33. Open Source Contributions After that: • Your pull request appears on the project’s list • http://github.com/joindin/joind.in/pulls • Hopefully it gets merged • You get bragging rights :) • https://github.com/joindin/joind.in/contributors 30
  • 34. Where to Begin with Open Source How to get involved: (warning, contains bias!) • Check for introductory docs • http://joind.in/about 31
  • 35. Where to Begin with Open Source How to get involved: (warning, contains bias!) • Check for introductory docs • http://joind.in/about • Get code and set up the project • usually, fork the repo and read the README 31
  • 36. Where to Begin with Open Source How to get involved: (warning, contains bias!) • Check for introductory docs • http://joind.in/about • Get code and set up the project • usually, fork the repo and read the README • Find the bug tracker, and pick something • http://joindin.jira.com 31
  • 37. Where to Begin with Open Source How to get involved: (warning, contains bias!) • Check for introductory docs • http://joind.in/about • Get code and set up the project • usually, fork the repo and read the README • Find the bug tracker, and pick something • http://joindin.jira.com • Talk to the other people in the project • #joind.in on freenode 31
  • 38. Where to Begin with Open Source How to get involved: (warning, contains bias!) • Check for introductory docs • http://joind.in/about • Get code and set up the project • usually, fork the repo and read the README • Find the bug tracker, and pick something • http://joindin.jira.com • Talk to the other people in the project • #joind.in on freenode • Share and enjoy 31
  • 40. Thanks! • Slides will be on slideshare • Github: http://github.com/lornajane • Twitter: @lornajane • Web: http://lornajane.net PHPNW - 3rd April, Derick Rethans on MongoDB. Rain Bar, Manchester. 33