SlideShare a Scribd company logo
git and github
darren oakley
disclaimer
• i use git daily in my work and manage to
  not have many problems
• i’ve been asked to share the basics i know
  with others
• i am not a git expert - i may (most
  probably) not be able to answer all of your
  questions
what we’ll cover

• brief discussion on version control
    - ‘traditional’ v’s distributed
• git - the basics
• github - the basics
what we won’t cover

• advanced git
 • rebase
 • sub-modules
• git-svn
version control
version control

• what most people are (probably) used to:
 • concurrent version system (cvs)
 • subversion (svn)
version control

• cvs and svn
 • central source control server
 • users check code into server
 • requires connection to the server to
    perform commits, updates etc.
distributed version
       control
• the new hotness...
 • git
 • mercurial (hg)
 • bazaar (bzr)
what’s the difference?
• not a lot really...
 • you store a complete copy of a
    repository within your working copy
   • this means you can work offline
 • there is no default ‘central’ server - if you
    want one, you (and your team) just
    nominate where it is (i.e. a github)
git
getting started

• move to a directory with code you’d like to
  manage with git:
 git init

• you’ve now created your first git
  repository!
normal workflow
local operations
working                  staging              git directory
directory                 area                (repsoitory)



                   checkout the project



            stage files



                                     commit
staging files
  git add [filenames]



• add all changed files to the staging area:
  git add .



• these changes are NOT committed yet
the git staging area

• git has a concept of a ‘staging area’
 • you first stage all of the changes that you
    are happy with
  • then you commit them
isn’t this more work?

• in short - yes
 • but it allows you to craft the exact
    commit you want - you eventually get to
    love this feature
• you can get around it if you like...
committing

git commit -m “commit message”


git commit -a -m “commit message”
branching / merging
branching

git branch
git branch [new branch name]
git checkout [new branch name]
merging

git checkout [target branch]
git merge [other branch]
git merge --squash [other branch]
rewriting history

  git rebase



• will leave that as an exercise for you to
  investigate...
remote operations
remote repositories


git push [repository] [repository branch]



git pull [repository] [repository branch]
remote operations
                                                                   user
                               repository
                                (github)

user one                                                       user



                                                      user
           repository
            (internal)


                         example - group using open source code internally with
                         modifications specific to them can easily push/pull from
user two
                         the project ‘master’
some rules i tend
to follow...
• NEVER pull when you have
  uncommitted changes - commit your
  work first

• if working on a feature, use a local
  branch, then this leaves the master
  open for other fixes

• NEVER rebase or amend commits
  that you have pushed
If you want it to work
     like cvs / svn
• simply...
 • ‘pull’ at the start of the day and at regular
    intervals (as often as you’d checkout your
    code in cvs/svn)
  • ‘push’ after every commit
github
github

• http://github.com
• popular git repository hosting site
• home to many open source projects:
 • ruby on rails, jquery to name two...
a quick hands-on
with github
the plan...

• get yourselves into pairs
• person 1:
 • create a repository
 • check in some code
 • add person 2 to project
the plan...
• person 2:
 • pull code from person 1’s repository
 • make some changes and push back to
    repository
• person 1:
 • pull these changes
the plan...

• somebody:
 • tag a release of the code
 • push this tag to github
 • stare in awe at the auto-generated tarball
if we have time...

• person 1:
 • create a local branch of the code
 • push this branch to github
• person 2:
 • pull and work with this remote branch
if we have more time


• simulate a conflict and resolve it
let’s get going...
person 1
person 2
git clone [paste ‘your clone url’]

edit something

add and commit
git push origin master
person 1
git pull origin master

see if you have the changes from your
partner
somebody
git tag rel_1.0

git push --tags
do we have time?
person 1
git branch new_feature_foo

git checkout new_feature_foo

edit something, add and commit
git push origin new_feature_foo
person 2
git remote show origin


git fetch origin new_feature_foo:new_feature_foo




git fetch [repo] [remote_branch]:[local_branch]
edit something, add and commit
git push origin new_feature_foo

cat .git/config
 - info on repository setup
simulating a conflict
person 1
without doing a git pull!

edit the file that person 2 just edited

save, add and commit changes
git push origin new_feature_foo

O_o ooops...
git pull origin new_feature_foo

(git will inform you of a conflict)

edit the file - resolve the conflict

git add, commit, push

conflict resolved! ^_^
further reading

• http://git-scm.com/documentation
• http://learn.github.com/
• http://help.github.com/
• http://www.gitready.com/
further reading
git config
some setup i find useful...
git config --global color.diff auto


git config --global color.status auto


git config --global color.branch auto


git config --global color.interactive auto
git config --global alias.st status


git config --global alias.ci commit


git config --global alias.co checkout


git config --global alias.br branch
git config --global core.excludesfile ~/.gitignore


echo "*~" >~/.gitignore


echo ".DS_Store" >>~/.gitignore

More Related Content

What's hot

The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with Git
E Carter
 
Git basics
Git basicsGit basics
Git basics
GHARSALLAH Mohamed
 
Learning git
Learning gitLearning git
Learning git
Sid Anand
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hub
Naveen Pandey
 
GitHub Basics - Derek Bable
GitHub Basics - Derek BableGitHub Basics - Derek Bable
GitHub Basics - Derek Bable
"FENG "GEORGE"" YU
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
Arulmurugan Rajaraman
 
Git basic
Git basicGit basic
Git basic
Emran Ul Hadi
 
Introduction git
Introduction gitIntroduction git
Introduction git
Dian Sigit Prastowo
 
Git & GitHub WorkShop
Git & GitHub WorkShopGit & GitHub WorkShop
Git & GitHub WorkShop
SheilaJimenezMorejon
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
Roland Emmanuel Salunga
 
Introduction to git & GitHub
Introduction to git & GitHubIntroduction to git & GitHub
Introduction to git & GitHub
Poornachandrakashi
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
Sage Sharp
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
James Gray
 
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 and Github Session
Git and Github SessionGit and Github Session
Git and Github Session
GoogleDevelopersStud1
 
Basic Git Intro
Basic Git IntroBasic Git Intro
Basic Git Intro
Yoad Snapir
 
Git and github
Git and githubGit and github
Git and github
Sayantika Banik
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
Fran García
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
Houari ZEGAI
 

What's hot (20)

The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with Git
 
Git basics
Git basicsGit basics
Git basics
 
Learning git
Learning gitLearning git
Learning git
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hub
 
GitHub Basics - Derek Bable
GitHub Basics - Derek BableGitHub Basics - Derek Bable
GitHub Basics - Derek Bable
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
Git basic
Git basicGit basic
Git basic
 
Introduction git
Introduction gitIntroduction git
Introduction git
 
Git & GitHub WorkShop
Git & GitHub WorkShopGit & GitHub WorkShop
Git & GitHub WorkShop
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Introduction to git & GitHub
Introduction to git & GitHubIntroduction to git & GitHub
Introduction to git & GitHub
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
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
 
Git and Github Session
Git and Github SessionGit and Github Session
Git and Github Session
 
Git real slides
Git real slidesGit real slides
Git real slides
 
Basic Git Intro
Basic Git IntroBasic Git Intro
Basic Git Intro
 
Git and github
Git and githubGit and github
Git and github
 
Git and git flow
Git and git flowGit and git flow
Git and git flow
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 

Viewers also liked

Outlining some ideas... - I-DCC Kick Off Metting
Outlining some ideas... - I-DCC Kick Off MettingOutlining some ideas... - I-DCC Kick Off Metting
Outlining some ideas... - I-DCC Kick Off Metting
Darren Oakley
 
Control de versiones con Git y Github
Control de versiones con Git y GithubControl de versiones con Git y Github
Control de versiones con Git y Github
guest638090
 
Mini-tutorial de git
Mini-tutorial de gitMini-tutorial de git
Mini-tutorial de git
Antonio Ognio
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
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
 
An Introduction to Faye
An Introduction to FayeAn Introduction to Faye
An Introduction to Faye
Darren Oakley
 

Viewers also liked (7)

Outlining some ideas... - I-DCC Kick Off Metting
Outlining some ideas... - I-DCC Kick Off MettingOutlining some ideas... - I-DCC Kick Off Metting
Outlining some ideas... - I-DCC Kick Off Metting
 
Control de versiones con Git y Github
Control de versiones con Git y GithubControl de versiones con Git y Github
Control de versiones con Git y Github
 
Mini-tutorial de git
Mini-tutorial de gitMini-tutorial de git
Mini-tutorial de git
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Git and Github
Git and GithubGit and Github
Git and Github
 
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
 
An Introduction to Faye
An Introduction to FayeAn Introduction to Faye
An Introduction to Faye
 

Similar to git and github

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 GitRobert Lee-Cann
 
Git installation and configuration
Git installation and configurationGit installation and configuration
Git installation and configuration
Kishor Kumar
 
11 git version control
11 git version control11 git version control
11 git version control
Wasim Alatrash
 
CSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITCSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GIT
PouriaQashqai1
 
Git for folk who like GUIs
Git for folk who like GUIsGit for folk who like GUIs
Git for folk who like GUIs
Tim Osborn
 
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
BigBlueHat
 
Let's Git this Party Started: An Introduction to Git and GitHub
Let's Git this Party Started: An Introduction to Git and GitHubLet's Git this Party Started: An Introduction to Git and GitHub
Let's Git this Party Started: An Introduction to Git and GitHub
Kim Moir
 
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Ahmed El-Arabawy
 
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
Geoff Hoffman
 
Introduction to git and githhub with practicals.pptx
Introduction to git and githhub with practicals.pptxIntroduction to git and githhub with practicals.pptx
Introduction to git and githhub with practicals.pptx
Abdul Salam
 
Techoalien git
Techoalien gitTechoalien git
Techoalien git
Aditya Tiwari
 
Techoalien git
Techoalien gitTechoalien git
Techoalien git
Aditya Tiwari
 
GIT.pptx
GIT.pptxGIT.pptx
GIT.pptx
Soumen Debgupta
 
Git and Github slides.pdf
Git and Github slides.pdfGit and Github slides.pdf
Git and Github slides.pdf
Tilton2
 
Git and Github workshop ppt slide by slide
Git and Github workshop ppt slide by slideGit and Github workshop ppt slide by slide
Git and Github workshop ppt slide by slide
RaghavendraVattikuti1
 
git and github-1.pptx
git and github-1.pptxgit and github-1.pptx
git and github-1.pptx
tnscharishma
 
Git training (basic)
Git training (basic)Git training (basic)
Git training (basic)
Arashdeepkaur16
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
Betclic Everest Group Tech Team
 
Git walkthrough
Git walkthroughGit walkthrough
Git walkthrough
Bimal Jain
 

Similar to git and github (20)

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
 
Git installation and configuration
Git installation and configurationGit installation and configuration
Git installation and configuration
 
11 git version control
11 git version control11 git version control
11 git version control
 
CSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITCSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GIT
 
Git for folk who like GUIs
Git for folk who like GUIsGit for folk who like GUIs
Git for folk who like GUIs
 
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
 
Let's Git this Party Started: An Introduction to Git and GitHub
Let's Git this Party Started: An Introduction to Git and GitHubLet's Git this Party Started: An Introduction to Git and GitHub
Let's Git this Party Started: An Introduction to Git and GitHub
 
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
 
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 to git and githhub with practicals.pptx
Introduction to git and githhub with practicals.pptxIntroduction to git and githhub with practicals.pptx
Introduction to git and githhub with practicals.pptx
 
Techoalien git
Techoalien gitTechoalien git
Techoalien git
 
Techoalien git
Techoalien gitTechoalien git
Techoalien git
 
Techoalien git
Techoalien gitTechoalien git
Techoalien git
 
GIT.pptx
GIT.pptxGIT.pptx
GIT.pptx
 
Git and Github slides.pdf
Git and Github slides.pdfGit and Github slides.pdf
Git and Github slides.pdf
 
Git and Github workshop ppt slide by slide
Git and Github workshop ppt slide by slideGit and Github workshop ppt slide by slide
Git and Github workshop ppt slide by slide
 
git and github-1.pptx
git and github-1.pptxgit and github-1.pptx
git and github-1.pptx
 
Git training (basic)
Git training (basic)Git training (basic)
Git training (basic)
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
 
Git walkthrough
Git walkthroughGit walkthrough
Git walkthrough
 

Recently uploaded

Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 

Recently uploaded (20)

Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 

git and github

  • 2. disclaimer • i use git daily in my work and manage to not have many problems • i’ve been asked to share the basics i know with others • i am not a git expert - i may (most probably) not be able to answer all of your questions
  • 3. what we’ll cover • brief discussion on version control - ‘traditional’ v’s distributed • git - the basics • github - the basics
  • 4. what we won’t cover • advanced git • rebase • sub-modules • git-svn
  • 6. version control • what most people are (probably) used to: • concurrent version system (cvs) • subversion (svn)
  • 7. version control • cvs and svn • central source control server • users check code into server • requires connection to the server to perform commits, updates etc.
  • 8. distributed version control • the new hotness... • git • mercurial (hg) • bazaar (bzr)
  • 9. what’s the difference? • not a lot really... • you store a complete copy of a repository within your working copy • this means you can work offline • there is no default ‘central’ server - if you want one, you (and your team) just nominate where it is (i.e. a github)
  • 10. git
  • 11. getting started • move to a directory with code you’d like to manage with git: git init • you’ve now created your first git repository!
  • 13. local operations working staging git directory directory area (repsoitory) checkout the project stage files commit
  • 14. staging files git add [filenames] • add all changed files to the staging area: git add . • these changes are NOT committed yet
  • 15. the git staging area • git has a concept of a ‘staging area’ • you first stage all of the changes that you are happy with • then you commit them
  • 16. isn’t this more work? • in short - yes • but it allows you to craft the exact commit you want - you eventually get to love this feature • you can get around it if you like...
  • 17. committing git commit -m “commit message” git commit -a -m “commit message”
  • 19. branching git branch git branch [new branch name] git checkout [new branch name]
  • 20. merging git checkout [target branch] git merge [other branch] git merge --squash [other branch]
  • 21. rewriting history git rebase • will leave that as an exercise for you to investigate...
  • 23. remote repositories git push [repository] [repository branch] git pull [repository] [repository branch]
  • 24. remote operations user repository (github) user one user user repository (internal) example - group using open source code internally with modifications specific to them can easily push/pull from user two the project ‘master’
  • 25. some rules i tend to follow...
  • 26. • NEVER pull when you have uncommitted changes - commit your work first • if working on a feature, use a local branch, then this leaves the master open for other fixes • NEVER rebase or amend commits that you have pushed
  • 27. If you want it to work like cvs / svn • simply... • ‘pull’ at the start of the day and at regular intervals (as often as you’d checkout your code in cvs/svn) • ‘push’ after every commit
  • 29. github • http://github.com • popular git repository hosting site • home to many open source projects: • ruby on rails, jquery to name two...
  • 31. the plan... • get yourselves into pairs • person 1: • create a repository • check in some code • add person 2 to project
  • 32. the plan... • person 2: • pull code from person 1’s repository • make some changes and push back to repository • person 1: • pull these changes
  • 33. the plan... • somebody: • tag a release of the code • push this tag to github • stare in awe at the auto-generated tarball
  • 34. if we have time... • person 1: • create a local branch of the code • push this branch to github • person 2: • pull and work with this remote branch
  • 35. if we have more time • simulate a conflict and resolve it
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 44.
  • 45. git clone [paste ‘your clone url’] edit something add and commit git push origin master
  • 47. git pull origin master see if you have the changes from your partner
  • 49. git tag rel_1.0 git push --tags
  • 50.
  • 51.
  • 52. do we have time?
  • 54. git branch new_feature_foo git checkout new_feature_foo edit something, add and commit git push origin new_feature_foo
  • 56. git remote show origin git fetch origin new_feature_foo:new_feature_foo git fetch [repo] [remote_branch]:[local_branch]
  • 57. edit something, add and commit git push origin new_feature_foo cat .git/config - info on repository setup
  • 58.
  • 61. without doing a git pull! edit the file that person 2 just edited save, add and commit changes git push origin new_feature_foo O_o ooops...
  • 62. git pull origin new_feature_foo (git will inform you of a conflict) edit the file - resolve the conflict git add, commit, push conflict resolved! ^_^
  • 63. further reading • http://git-scm.com/documentation • http://learn.github.com/ • http://help.github.com/ • http://www.gitready.com/
  • 65. git config some setup i find useful...
  • 66. git config --global color.diff auto git config --global color.status auto git config --global color.branch auto git config --global color.interactive auto
  • 67. git config --global alias.st status git config --global alias.ci commit git config --global alias.co checkout git config --global alias.br branch
  • 68. git config --global core.excludesfile ~/.gitignore echo "*~" >~/.gitignore echo ".DS_Store" >>~/.gitignore