SlideShare une entreprise Scribd logo
1  sur  24
Git : Awesome Distributed Version Control SystemGit : Awesome Distributed Version Control System
Presenter : Raza.Z.Sayed
2
History
● Linux kernel project
● Patch emailing system
● Bitkeeper from 2002 to 2005.
● Why the name Git ?
- “I’m an egotistical bastard, and I name all my
projects after myself.First Linux, now git.” – Linus
Torvalds
● First commit message : 'initial version of “git”,the
information manager from hell'-Linus 4/7/05
3
Basic Concepts
●
Git is not like SVN (Subversion) and is fundamentally different . Git tracks
content not changes or deltas
●
Its like a filesystem. Its a collection of tools that implement tree history storage
and directory content management system.
● Non linear development, distributed development and efficient
- Ruby on Rails Git repository is around 13 Mb and Subversion repository of
the same is around 115 Mb !
● Not a binary but a toolkit design in spirit of unix philosophy (Write programs
that do one thing and do it well)
4
Basic Concepts
●
Git Object Database → .git directory
●
Git Object Types → stored in .git/objects
1. Blob
2. Tree
3. Commit
4. Tag
●
Git Data Model
1. Git Object Types
2. References (Branches and Remotes) → stored in .git/refs
5
Basic Git Workflow
● mkdir my_awesome_project
● cd my_awesome_project
● git init
● Create a file e.g. README.txt
● git status (Optional)
● git add README.txt (Add to staging)
● git commit -m “first commit”
6
Basic Git Workflow
● Make some changes to README.txt
● Create a new file e.g. hello.rb
● git status
● git add hello.rb README.txt or git add . or git add --all
● git commit -m “another commit”
● Make changes to hello.rb
● git commit -a -m “added foo method” (Wont add
untracked files to staging. git add them separately)
7
Different ways to add
● git add <list of files> (Add the list of files)
● git add --all (Add all files from the project.)
● git add . (Add all files from the project)
● git add *.txt (Add all txt files in current dir)
● git add “*.txt” (Add all txt files from the project)
● git add docs/*.txt (Add all txt files from docs dir)
● git add docs/ (Add all files from docs dir)
8
Viewing changes
● git diff (Show unstaged changes since last
commit)
● git diff --staged (show staged changes since
last commit)
● git log (show project history)
9
Undo unstaged changes
● git checkout . (Blow away all changes since
last commit)
● git checkout <list of files> (Blow away changes
to specified files since last commit)
10
Unstage changes
● git reset HEAD (Unstage all staged files)
● git reset HEAD <list of files> (Unstage
particular files) e.g. git reset HEAD
README.txt or git reset HEAD README.txt
hello.rb
11
Undo commits
● git reset soft HEAD^ (Undo last commit and move changes
back to staging) or git reset soft HEAD~1
● git reset soft HEAD^^ (Undo last two commits and move
changes back to staging) or git reset soft HEAD~2
● git reset hard HEAD^ (Undo last commit and blow away all
changes) or git reset hard HEAD~1
● git reset hard HEAD^^^ (Undo last three commits and blow
away all changes) or git reset hard HEAD~3
● git commit --amend -m “New commit message” (Change
the last commit message)
12
Sharing and Collaborating
● Lots of different code hosting services to
choose from e.g. Unfuddle, Github, Bitbucket
etc. or setup your own server.
● Create a git repo on the server. This is called a
remote repository.
● Inside your project dir on your local machine :
git remote add <some arbit name for the
remote repo> <path of remote repo>
13
Sharing and Collaborating
● git remote -v (show remote repositories
associated with the project)
● git push -u <remote repo name> <branch
name> e.g. git push -u origin master
● git pull (Pull changes from the remote repo)
● git remote rm <remote repo name> (Delete a
remote repo from the project)
14
Sharing and Collaborating
● Types of git repo urls : https://.. (Read only or read
write depending upon permissions) , git://.. (Git read
only), git@.. (SSH read write)
● git clone <remote repo url> or git clone <remote repo
url> [local name]
● git clone does the following three things. 1) Downloads
the entire repo into a new directory 2) Adds origin
remote pointing it to clone url 3) checks out the master
branch i.e. sets local repo HEAD to point to the master
branch
15
Branching
● Need to work on a new feature or fix a bug that
will take time ?. Create a new branch to work on
it.
● git branch <branch name> (Creates the branch)
● git checkout <branch name> (Switch to the
branch)
● git checkout -b <branch name> (Shortcut to
create and switch to a branch in one step)
16
Basic Branching Workflow
● git checkout -b cool_feature
● echo “This is readme for the cool feature” >
README.txt
● git add README.txt
● git commit -m “first commit in cool_feature branch”
● git checkout master
● git merge cool_feature
● git branch -d cool_feature (Delete the branch as were
done with it)
17
Types of Branch Merge
● Fast Forward Merge
● Non Fast Forward Merge (Recursive Merge)
● Recursive Merge creates an extra commit
automatically called a “Merge commit”
18
Conflicts
● Can either arise during git push or while doing a
merge (merge conflict)
● git push conflict scenario. Do a git pull first to fix
● Two cases in which merge conflicts can arise. 1)
During merging a local branch 2) Doing a git pull
● git pull = git fetch+git merge. What is origin/master ?
● Resolving merge conflicts
19
Sharing local branches
●
A wants to create a new branch and share it.
git checkout -b awesome_new_feature
git push origin awesome_new_feature
●
B wants to collaborate on the new branch.
git pull
git checkout awesome_new_feature
●
Listing remote branches : git branch -r
●
Getting detailed information about remote branches : git remote show origin
●
Deleting remote branches.
git push origin :awesome_new_feature
git branch -d awesome_new_feature. If this does not work then,
git branch -D awesome_new_feature
●
Cleaning up local references to deleted remote branches : git remote prune origin
20
Tagging
● What are tags ?
● Listing all tags : git tag
● Creating a new tag : git tag -a v1.0 -m “version
1.0”
● Checkout code at a particular commit : git
checkout v1.0
● Sharing tags : git push --tags
21
Rebase
● What is a rebase and why its better than a merge ?
● Dont do git pull ! . Instead do a fetch + rebase.
● Remote branch rebase workflow
git fetch
git rebase
● Local branch rebase workflow. e.g. To rebase branch new_feature into master
git checkout new_feature
git rebase master
git checkout master
git merge new_feature
22
Ignoring Files
● Only for yourself
Put exclude patterns in .git/info/exclude file
● For everyone
Put exclude patterns in .gitignore file in the
project root directory
● Untracking files
git rm --cached <file name>
23
References
● Git Community Book - http://git-scm.com/book
● Git Branching -
http://pcottle.github.com/learnGitBranching/
● Git for computer scientists -
http://eagain.net/articles/git-for-computer-scientists/
● Visual Git Reference -
http://marklodato.github.com/visual-git-guide/index-
24
Thank You

Contenu connexe

Tendances

Introduction to Git
Introduction to GitIntroduction to Git
Introduction to GitColin Su
 
The Fundamentals of Git
The Fundamentals of GitThe Fundamentals of Git
The Fundamentals of GitDivineOmega
 
Git - The Incomplete Introduction
Git - The Incomplete IntroductionGit - The Incomplete Introduction
Git - The Incomplete Introductionrschwietzke
 
Getting Started on distributed version control with git
Getting Started on distributed version control with gitGetting Started on distributed version control with git
Getting Started on distributed version control with gitAnoop Thomas Mathew
 
Git: basic to advanced
Git: basic to advancedGit: basic to advanced
Git: basic to advancedYodalee
 
Advanced Git Presentation By Swawibe
Advanced Git Presentation By SwawibeAdvanced Git Presentation By Swawibe
Advanced Git Presentation By SwawibeMd Swawibe Ul Alam
 
Git Introduction
Git IntroductionGit Introduction
Git IntroductionGareth Hall
 
Contributing to open source using Git
Contributing to open source using GitContributing to open source using Git
Contributing to open source using GitYan Vugenfirer
 
Git and github fundamentals
Git and github fundamentalsGit and github fundamentals
Git and github fundamentalsRajKharvar
 
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumIntroduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumAbhijitNarayan2
 
Version Control with Git
Version Control with GitVersion Control with Git
Version Control with GitLuigi De Russis
 

Tendances (20)

Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Git commands
Git commandsGit commands
Git commands
 
Formation git
Formation gitFormation git
Formation git
 
The Fundamentals of Git
The Fundamentals of GitThe Fundamentals of Git
The Fundamentals of Git
 
Git Basics
Git BasicsGit Basics
Git Basics
 
Git Tricks
Git TricksGit Tricks
Git Tricks
 
Git - The Incomplete Introduction
Git - The Incomplete IntroductionGit - The Incomplete Introduction
Git - The Incomplete Introduction
 
Getting Started on distributed version control with git
Getting Started on distributed version control with gitGetting Started on distributed version control with git
Getting Started on distributed version control with git
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
 
Git: basic to advanced
Git: basic to advancedGit: basic to advanced
Git: basic to advanced
 
Advanced Git Presentation By Swawibe
Advanced Git Presentation By SwawibeAdvanced Git Presentation By Swawibe
Advanced Git Presentation By Swawibe
 
Git presentation
Git presentationGit presentation
Git presentation
 
Git Introduction
Git IntroductionGit Introduction
Git Introduction
 
Git 101
Git 101Git 101
Git 101
 
Open source
Open sourceOpen source
Open source
 
Contributing to open source using Git
Contributing to open source using GitContributing to open source using Git
Contributing to open source using Git
 
Git and github fundamentals
Git and github fundamentalsGit and github fundamentals
Git and github fundamentals
 
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumIntroduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
Introduction to Git and Github - Google Developer Student Clubs CET, Trivandrum
 
Version Control with Git
Version Control with GitVersion Control with Git
Version Control with Git
 
Git commands
Git commandsGit commands
Git commands
 

En vedette (20)

Capitulo 1 1expresate
Capitulo 1 1expresateCapitulo 1 1expresate
Capitulo 1 1expresate
 
Open educational resources
Open educational resourcesOpen educational resources
Open educational resources
 
Introduction into Social Media
Introduction into Social MediaIntroduction into Social Media
Introduction into Social Media
 
REQUISITOS PARA INSTALAR WINDOWS XP Y WINDOWS 7
REQUISITOS PARA INSTALAR WINDOWS XP Y WINDOWS 7REQUISITOS PARA INSTALAR WINDOWS XP Y WINDOWS 7
REQUISITOS PARA INSTALAR WINDOWS XP Y WINDOWS 7
 
Painter sung sam_park
Painter sung sam_parkPainter sung sam_park
Painter sung sam_park
 
Eclampsia 4-real-presentation
Eclampsia 4-real-presentationEclampsia 4-real-presentation
Eclampsia 4-real-presentation
 
World cup fanatics
World cup fanaticsWorld cup fanatics
World cup fanatics
 
Nota sej (bab 1) f.4
Nota sej (bab 1) f.4Nota sej (bab 1) f.4
Nota sej (bab 1) f.4
 
Beautiful photos
Beautiful photosBeautiful photos
Beautiful photos
 
Red
RedRed
Red
 
Deep earth
Deep earthDeep earth
Deep earth
 
Photos
PhotosPhotos
Photos
 
Best Denver post 2009
Best Denver post 2009Best Denver post 2009
Best Denver post 2009
 
Syria
SyriaSyria
Syria
 
Dakar 2010
Dakar 2010Dakar 2010
Dakar 2010
 
Hehe
HeheHehe
Hehe
 
Susan alex july
Susan alex julySusan alex july
Susan alex july
 
Company meeting v_rebecca_emma
Company meeting v_rebecca_emmaCompany meeting v_rebecca_emma
Company meeting v_rebecca_emma
 
Zoe vs Gravesend Developers
Zoe vs Gravesend DevelopersZoe vs Gravesend Developers
Zoe vs Gravesend Developers
 
Laura Heather Glenn Chris - Sept 2011
Laura Heather Glenn Chris - Sept 2011Laura Heather Glenn Chris - Sept 2011
Laura Heather Glenn Chris - Sept 2011
 

Similaire à Git tech talk

Pro git - grasping it conceptually
Pro git - grasping it conceptuallyPro git - grasping it conceptually
Pro git - grasping it conceptuallyseungzzang Kim
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practiceMajid Hosseini
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git TutorialSage Sharp
 
Mastering git - Workflow
Mastering git - WorkflowMastering git - Workflow
Mastering git - WorkflowTahsin Abrar
 
Introduction of Git
Introduction of GitIntroduction of Git
Introduction of GitWayne Chen
 
Introducing Git and git flow
Introducing Git and git flow Introducing Git and git flow
Introducing Git and git flow Sebin Benjamin
 
Introduction to git, a version control system
Introduction to git, a version control systemIntroduction to git, a version control system
Introduction to git, a version control systemKumaresh Chandra Baruri
 
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a gitVincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a gitVincitOy
 
Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?9 series
 
Git and GitHub workflows
Git and GitHub workflowsGit and GitHub workflows
Git and GitHub workflowsArthur Shvetsov
 
Getting some Git
Getting some GitGetting some Git
Getting some GitBADR
 

Similaire à Git tech talk (20)

Pro git - grasping it conceptually
Pro git - grasping it conceptuallyPro git - grasping it conceptually
Pro git - grasping it conceptually
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practice
 
Gn unify git
Gn unify gitGn unify git
Gn unify git
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
Mastering git - Workflow
Mastering git - WorkflowMastering git - Workflow
Mastering git - Workflow
 
Intro to Git
Intro to GitIntro to Git
Intro to Git
 
Git github
Git githubGit github
Git github
 
Git Init (Introduction to Git)
Git Init (Introduction to Git)Git Init (Introduction to Git)
Git Init (Introduction to Git)
 
Introduction of Git
Introduction of GitIntroduction of Git
Introduction of Git
 
Introducing Git and git flow
Introducing Git and git flow Introducing Git and git flow
Introducing Git and git flow
 
Git training
Git trainingGit training
Git training
 
Introduction to git, a version control system
Introduction to git, a version control systemIntroduction to git, a version control system
Introduction to git, a version control system
 
Introduction to GIT
Introduction to GITIntroduction to GIT
Introduction to GIT
 
Git essentials
Git essentialsGit essentials
Git essentials
 
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a gitVincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
Vincit Teatime 2015.2 - Otto Kekäläinen: Don't be a git
 
Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?Git Commands Every Developer Should Know?
Git Commands Every Developer Should Know?
 
Git introduction
Git introductionGit introduction
Git introduction
 
Git and GitHub workflows
Git and GitHub workflowsGit and GitHub workflows
Git and GitHub workflows
 
Getting some Git
Getting some GitGetting some Git
Getting some Git
 

Dernier

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 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
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...apidays
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
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 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
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 educationjfdjdjcjdnsjd
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
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, Adobeapidays
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 

Dernier (20)

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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
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...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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 Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
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
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

Git tech talk

  • 1. Git : Awesome Distributed Version Control SystemGit : Awesome Distributed Version Control System Presenter : Raza.Z.Sayed
  • 2. 2 History ● Linux kernel project ● Patch emailing system ● Bitkeeper from 2002 to 2005. ● Why the name Git ? - “I’m an egotistical bastard, and I name all my projects after myself.First Linux, now git.” – Linus Torvalds ● First commit message : 'initial version of “git”,the information manager from hell'-Linus 4/7/05
  • 3. 3 Basic Concepts ● Git is not like SVN (Subversion) and is fundamentally different . Git tracks content not changes or deltas ● Its like a filesystem. Its a collection of tools that implement tree history storage and directory content management system. ● Non linear development, distributed development and efficient - Ruby on Rails Git repository is around 13 Mb and Subversion repository of the same is around 115 Mb ! ● Not a binary but a toolkit design in spirit of unix philosophy (Write programs that do one thing and do it well)
  • 4. 4 Basic Concepts ● Git Object Database → .git directory ● Git Object Types → stored in .git/objects 1. Blob 2. Tree 3. Commit 4. Tag ● Git Data Model 1. Git Object Types 2. References (Branches and Remotes) → stored in .git/refs
  • 5. 5 Basic Git Workflow ● mkdir my_awesome_project ● cd my_awesome_project ● git init ● Create a file e.g. README.txt ● git status (Optional) ● git add README.txt (Add to staging) ● git commit -m “first commit”
  • 6. 6 Basic Git Workflow ● Make some changes to README.txt ● Create a new file e.g. hello.rb ● git status ● git add hello.rb README.txt or git add . or git add --all ● git commit -m “another commit” ● Make changes to hello.rb ● git commit -a -m “added foo method” (Wont add untracked files to staging. git add them separately)
  • 7. 7 Different ways to add ● git add <list of files> (Add the list of files) ● git add --all (Add all files from the project.) ● git add . (Add all files from the project) ● git add *.txt (Add all txt files in current dir) ● git add “*.txt” (Add all txt files from the project) ● git add docs/*.txt (Add all txt files from docs dir) ● git add docs/ (Add all files from docs dir)
  • 8. 8 Viewing changes ● git diff (Show unstaged changes since last commit) ● git diff --staged (show staged changes since last commit) ● git log (show project history)
  • 9. 9 Undo unstaged changes ● git checkout . (Blow away all changes since last commit) ● git checkout <list of files> (Blow away changes to specified files since last commit)
  • 10. 10 Unstage changes ● git reset HEAD (Unstage all staged files) ● git reset HEAD <list of files> (Unstage particular files) e.g. git reset HEAD README.txt or git reset HEAD README.txt hello.rb
  • 11. 11 Undo commits ● git reset soft HEAD^ (Undo last commit and move changes back to staging) or git reset soft HEAD~1 ● git reset soft HEAD^^ (Undo last two commits and move changes back to staging) or git reset soft HEAD~2 ● git reset hard HEAD^ (Undo last commit and blow away all changes) or git reset hard HEAD~1 ● git reset hard HEAD^^^ (Undo last three commits and blow away all changes) or git reset hard HEAD~3 ● git commit --amend -m “New commit message” (Change the last commit message)
  • 12. 12 Sharing and Collaborating ● Lots of different code hosting services to choose from e.g. Unfuddle, Github, Bitbucket etc. or setup your own server. ● Create a git repo on the server. This is called a remote repository. ● Inside your project dir on your local machine : git remote add <some arbit name for the remote repo> <path of remote repo>
  • 13. 13 Sharing and Collaborating ● git remote -v (show remote repositories associated with the project) ● git push -u <remote repo name> <branch name> e.g. git push -u origin master ● git pull (Pull changes from the remote repo) ● git remote rm <remote repo name> (Delete a remote repo from the project)
  • 14. 14 Sharing and Collaborating ● Types of git repo urls : https://.. (Read only or read write depending upon permissions) , git://.. (Git read only), git@.. (SSH read write) ● git clone <remote repo url> or git clone <remote repo url> [local name] ● git clone does the following three things. 1) Downloads the entire repo into a new directory 2) Adds origin remote pointing it to clone url 3) checks out the master branch i.e. sets local repo HEAD to point to the master branch
  • 15. 15 Branching ● Need to work on a new feature or fix a bug that will take time ?. Create a new branch to work on it. ● git branch <branch name> (Creates the branch) ● git checkout <branch name> (Switch to the branch) ● git checkout -b <branch name> (Shortcut to create and switch to a branch in one step)
  • 16. 16 Basic Branching Workflow ● git checkout -b cool_feature ● echo “This is readme for the cool feature” > README.txt ● git add README.txt ● git commit -m “first commit in cool_feature branch” ● git checkout master ● git merge cool_feature ● git branch -d cool_feature (Delete the branch as were done with it)
  • 17. 17 Types of Branch Merge ● Fast Forward Merge ● Non Fast Forward Merge (Recursive Merge) ● Recursive Merge creates an extra commit automatically called a “Merge commit”
  • 18. 18 Conflicts ● Can either arise during git push or while doing a merge (merge conflict) ● git push conflict scenario. Do a git pull first to fix ● Two cases in which merge conflicts can arise. 1) During merging a local branch 2) Doing a git pull ● git pull = git fetch+git merge. What is origin/master ? ● Resolving merge conflicts
  • 19. 19 Sharing local branches ● A wants to create a new branch and share it. git checkout -b awesome_new_feature git push origin awesome_new_feature ● B wants to collaborate on the new branch. git pull git checkout awesome_new_feature ● Listing remote branches : git branch -r ● Getting detailed information about remote branches : git remote show origin ● Deleting remote branches. git push origin :awesome_new_feature git branch -d awesome_new_feature. If this does not work then, git branch -D awesome_new_feature ● Cleaning up local references to deleted remote branches : git remote prune origin
  • 20. 20 Tagging ● What are tags ? ● Listing all tags : git tag ● Creating a new tag : git tag -a v1.0 -m “version 1.0” ● Checkout code at a particular commit : git checkout v1.0 ● Sharing tags : git push --tags
  • 21. 21 Rebase ● What is a rebase and why its better than a merge ? ● Dont do git pull ! . Instead do a fetch + rebase. ● Remote branch rebase workflow git fetch git rebase ● Local branch rebase workflow. e.g. To rebase branch new_feature into master git checkout new_feature git rebase master git checkout master git merge new_feature
  • 22. 22 Ignoring Files ● Only for yourself Put exclude patterns in .git/info/exclude file ● For everyone Put exclude patterns in .gitignore file in the project root directory ● Untracking files git rm --cached <file name>
  • 23. 23 References ● Git Community Book - http://git-scm.com/book ● Git Branching - http://pcottle.github.com/learnGitBranching/ ● Git for computer scientists - http://eagain.net/articles/git-for-computer-scientists/ ● Visual Git Reference - http://marklodato.github.com/visual-git-guide/index-