SlideShare a Scribd company logo
1 of 42
Download to read offline
Git
An intro to Git Source Control Management
What is Git?

Distributed version control system
Linus Torvalds - to track linux kernel development
Free and open source
Designed to handle small/large projects with speed and efficiency
Fast branching and merging
Why source control?
Faster development
Archive of all code changes over time
Compare changes and revert to old release
Accountability
Conserve disk space
Good for you
Distributed vs Centralized
The Basics
Installing git
• To initialize git directory
•   $ git init




• Start version controlling existing files
•   $ git add *.php *.inc *.html *.tpl

•   $ git commit -m ‘Initial project version’




• Cloning an existing repository
•   $ git clone ssh://clickindia@192.168.0.77/home/clickindia/public_html/clickindia
Basic git workflow




• You modify files in your working directory
• You stage files adding snapshot of them to staging area
• You do a commit which takes the files in staging area and
 stores the snapshot permanently
Changes in repository
To check status of your files
Modifying files
Tracking new files
Removing files
Staging modified files
Committing files
Ignoring files
Example of gitignore
$ cat .gitignore
 *.[oa]
 *~
 *.a       # no .a files
 !lib.a    # but do track lib.a, even though you're ignoring .a files above
 /TODO     # only ignore the root TODO file, not subdir/TODO
 build/    # ignore all files in the build/ directory
 doc/*.txt # ignore doc/notes.txt, but not doc/server/arch.txt
Viewing staged and
    unstaged changes
git status
git diff   (Compares working directory with staging area)


git diff --staged
git diff HEAD
git diff v1.0 v1.1
git diff master adposting
Branching
$ git add README test.rb LICENSE
$ git commit -m 'initial commit of my project'




    Created on commit              Created on add
Branching
Branching
Creating new branch
$ git branch testing
Current branch
Switching branch
$ git checkout testing
Significance of branch
$ vim test.php
$ git commit -am “made a change”
Significance of branch
$ git checkout master
Significance of branch
$ vim test.php
$ git commit -am “made a change”
Basic branching and merging
• Create a new feature branch
• Do some work in that branch
Critical issue in production
• Revert back to production branch
• Create a new branch to add the hotfix
• After testing, merge the hotfix branch and push to
  production

• Switch back to your original issue and continue
Basic branching and merging


$ git checkout -b iss53
Switched to a new branch "iss53"
Basic branching and merging
$ vi index.html
$ git commit -a -m 'added a new footer [issue 53]'
Basic branching and merging
Issue in production
$ git checkout master
Switched to branch “master”
$ git checkout -b ‘hotfix’
Switched to a new branch “hotfix”
$ vim index.html
$ git commit -am ‘fixed a broken email address’
[hotfix]: created 3a0874c: "fixed the broken email address"
 1 files changed, 0 insertions(+), 1 deletions(-)
Basic branching and merging
$ git checkout master
$ git merge --no-ff hotfix
Updating f42c576..3a0874c
 README |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)




 $ git branch -d hotfix
 Deleted branch hotfix (3a0874c).
Basic branching and merging
$ git checkout iss53
Switched to branch "iss53"
$ vim index.html
$ git commit -a -m 'finished the new footer [issue 53]'
[iss53]: created ad82d7a: "finished the new footer [issue 53]"
 1 files changed, 1 insertions(+), 0 deletions(-)
Basic branching and merging
$ git checkout master
$ git merge iss53
Merge made by recursive.
 README |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
Basic branching and merging




$ git branch -d iss53
Branch management

$   git   branch                 #   Shows all the active branches
$   git   branch   -v            #   Shows last commit on each branch
$   git   branch   --merged      #   Shows which branches are merged with the branch you are on
$   git   branch   --no-merged   #   Shows all branches that contain work you haven’t merged
$   git   branch   -d testing    #   To delete a branch. Will fail if the branch is not yet merged
Remote branches
• Remote branches are references to the state
 of branches on your remote repositories
Remote branches
Remote branches
$ git fetch origin     # Fetches any data you don’t have from remote ‘origin’ repository
$ git fetch origin master    # Fetches data only from ‘master’ branch
$ git pull origin     # Fetches any data you don’t have and merges it with local branch
$ git pull origin master # Fetches data from master and merges it with local master branch
$ git push origin develop # Pushes data from local ‘develop’ branch to remote ‘develop’ branch
$ git push origin develop:release # Pushes data from local ‘develop’ branch to remote ‘release’ branch


                                           git fetch origin
Remotes
$ git remote
Origin

$ git remote -v
Origin ssh://clickindia@192.168.0.77/home/clickindia/public_html/clickindia

$ git remote add test ssh://clickindia@test.clickindia.com/home/clickindia/public_html....

$ git remote rm origin
Gist of git
Git branching model
How will we work?
                                pull
                  master                      master                master

                                                          pull
                  develop
                                push           release




               Development                  Test server          Production
               192.168.0.77




Developer 1   Developer 2     Developer 3
Tagging and release
Once the code is merged into master production
  $ git tag -a v1.0.1      # applies v1.0.1 tag to current commit

  $ git tag                # To list all tags

  $ git tag -1 ‘v1.4.2*‘   # List all tags starting with 1.4.2

  $ git tag -a v1.0.1 -m ‘my version 1.0.1’

  $ git show v1.4

   tag v1.4
   Tagger: Scott Chacon <schacon@gee-mail.com>
   Date:    Mon Feb 9 14:45:11 2009 -0800
   my version 1.4
   commit 15027957951b64cf874c3557a0f3547bd83b3ff6
   Merge: 4a447f7... a6b4c97...
   Author: Scott Chacon <schacon@gee-mail.com>
   Date:   Sun Feb 8 19:02:46 2009 -0800
        Merge branch 'experiment'
Tagging
Tagging later
 $ git log --pretty=oneline
 15027957951b64cf874c3557a0f3547bd83b3ff6   Merge branch 'experiment'
 a6b4c97498bd301d84096da251c98a07c7723e65   beginning write support
 0d52aaab4479697da7686c15f77a3d64d9165190   one more thing
 6d52a271eda8725415634dd79daabbc4d9b6008e   Merge branch 'experiment'
 0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc   added a commit function
 4682c3261057305bdd616e23b64b0857d832627b   added a todo file
 166ae0c4d3f420721acbb115cc33848dfcc2121a   started write support
 9fceb02d0ae598e95dc970b74767f19372d61af8   updated rakefile
 964f16d36dfccde844893cac5b347e7b3d44abbc   commit the todo
 8a5cbc430f1a9c3d00faaeffd07798508422908a   updated readme




 $ git tag -a v1.2 9fceb02
Tagging
Everyday commands
Working on a new feature
$ git pull origin develop

$ git checkout -b adposting

.....did development work.....

$ git commit -am ‘Created new ad posting form’

$ git push origin adposting

......tested feature on development server.....

$ git checkout develop

$ git merge --no-ff adposting

$ git push origin develop:release-v1.1.2 (push to test server as release-v1.1.2

.........fix testing bugs on release v1.1.2.......

$ git fetch origin release-v1.1.2 ( on production only done by sysadmin )

$ git checkout master

$ git merge --no-ff release-v.1.1.2

$ git tag -am v1.1.2 ‘released version v1.1.2’
Everyday commands
Working on a hotfix
$ git pull origin master

$ git checkout -b hotfixv1.1.1 master

.....fixed bug on test server.....

$ git commit -am ‘fixed e-mail address on contact page’

....... Tested by deepak ........

$ git fetch origin hotfixv1.1.1 ( on production only done by sysadmin )

...... Check if already on master....if not $ git checkout master

$ git merge --no-ff hotfixv1.1.1

$ git tag -am v1.1.1 ‘released version v1.1.1’

$ git pull origin master ( on test and development servers)
Version numbering


                v0.0.0
Major release                    Hot fixes


                Minor releases
References

• Progit.org -- a complete book on git
• Gitref.org -- A very simple reference of all commands

More Related Content

What's hot

Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHubVikram SV
 
Learning git
Learning gitLearning git
Learning gitSid Anand
 
Git slides
Git slidesGit slides
Git slidesNanyak S
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notesglen_a_smith
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHubNicolás Tourné
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash CourseNilay Binjola
 
Version Control with Git
Version Control with GitVersion Control with Git
Version Control with GitLuigi De Russis
 
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | EdurekaWhat is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | EdurekaEdureka!
 

What's hot (20)

Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Learning git
Learning gitLearning git
Learning git
 
Git slides
Git slidesGit slides
Git slides
 
Git & GitLab
Git & GitLabGit & GitLab
Git & GitLab
 
Git
GitGit
Git
 
Git real slides
Git real slidesGit real slides
Git real slides
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
 
Git training v10
Git training v10Git training v10
Git training v10
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
GitHub Presentation
GitHub PresentationGitHub Presentation
GitHub Presentation
 
Introducing GitLab
Introducing GitLabIntroducing GitLab
Introducing GitLab
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
 
Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
 
Git and github
Git and githubGit and github
Git and github
 
Version Control with Git
Version Control with GitVersion Control with Git
Version Control with Git
 
Introduction To Git
Introduction To GitIntroduction To Git
Introduction To Git
 
Git n git hub
Git n git hubGit n git hub
Git n git hub
 
CI/CD with Github Actions
CI/CD with Github ActionsCI/CD with Github Actions
CI/CD with Github Actions
 
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | EdurekaWhat is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
 

Similar to Git basics

Get going with_git_ppt
Get going with_git_pptGet going with_git_ppt
Get going with_git_pptMiraz Al-Mamun
 
Git Distributed Version Control System
Git   Distributed Version Control SystemGit   Distributed Version Control System
Git Distributed Version Control SystemVictor Wong
 
Lets Git Together
Lets Git TogetherLets Git Together
Lets Git TogetherRakesh Jha
 
Git session Dropsolid.com
Git session Dropsolid.comGit session Dropsolid.com
Git session Dropsolid.comdropsolid
 
Git Started With Git
Git Started With GitGit Started With Git
Git Started With GitNick Quaranto
 
Working in Team using Git in Unity
Working in Team using Git in UnityWorking in Team using Git in Unity
Working in Team using Git in UnityRifauddin Tsalitsy
 
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017Codemotion
 
Introduction to Git for Artists
Introduction to Git for ArtistsIntroduction to Git for Artists
Introduction to Git for ArtistsDavid Newbury
 
Learning Basic GIT Cmd
Learning Basic GIT CmdLearning Basic GIT Cmd
Learning Basic GIT Cmdsrinathcox
 
Git - Get Ready To Use It
Git - Get Ready To Use ItGit - Get Ready To Use It
Git - Get Ready To Use ItDaniel Kummer
 
Git the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version controlGit the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version controlBecky Todd
 
Get Good With Git
Get Good With GitGet Good With Git
Get Good With GitHoffman Lab
 
Git development workflow
Git development workflowGit development workflow
Git development workflowSankar Suda
 

Similar to Git basics (20)

Get going with_git_ppt
Get going with_git_pptGet going with_git_ppt
Get going with_git_ppt
 
Git Distributed Version Control System
Git   Distributed Version Control SystemGit   Distributed Version Control System
Git Distributed Version Control System
 
Git Tech Talk
Git  Tech TalkGit  Tech Talk
Git Tech Talk
 
Git101
Git101Git101
Git101
 
Git and github 101
Git and github 101Git and github 101
Git and github 101
 
Lets Git Together
Lets Git TogetherLets Git Together
Lets Git Together
 
Git session Dropsolid.com
Git session Dropsolid.comGit session Dropsolid.com
Git session Dropsolid.com
 
Git Started With Git
Git Started With GitGit Started With Git
Git Started With Git
 
Working in Team using Git in Unity
Working in Team using Git in UnityWorking in Team using Git in Unity
Working in Team using Git in Unity
 
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
Nicola Iarocci - Git stories from the front line - Codemotion Milan 2017
 
Introduction to Git for Artists
Introduction to Git for ArtistsIntroduction to Git for Artists
Introduction to Git for Artists
 
Gitflow
GitflowGitflow
Gitflow
 
Loading...git
Loading...gitLoading...git
Loading...git
 
Learning Basic GIT Cmd
Learning Basic GIT CmdLearning Basic GIT Cmd
Learning Basic GIT Cmd
 
簡單介紹git
簡單介紹git簡單介紹git
簡單介紹git
 
Git - Get Ready To Use It
Git - Get Ready To Use ItGit - Get Ready To Use It
Git - Get Ready To Use It
 
Git the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version controlGit the Docs: A fun, hands-on introduction to version control
Git the Docs: A fun, hands-on introduction to version control
 
Git presentation
Git presentationGit presentation
Git presentation
 
Get Good With Git
Get Good With GitGet Good With Git
Get Good With Git
 
Git development workflow
Git development workflowGit development workflow
Git development workflow
 

More from Amit Sawhney

Spotify India Entry
Spotify India EntrySpotify India Entry
Spotify India EntryAmit Sawhney
 
FieldDay_Sonica_Sapient
FieldDay_Sonica_SapientFieldDay_Sonica_Sapient
FieldDay_Sonica_SapientAmit Sawhney
 
The math-behind-ab-testing
The math-behind-ab-testingThe math-behind-ab-testing
The math-behind-ab-testingAmit Sawhney
 
Improving email open rates
Improving email open ratesImproving email open rates
Improving email open ratesAmit Sawhney
 

More from Amit Sawhney (7)

Spotify India Entry
Spotify India EntrySpotify India Entry
Spotify India Entry
 
FieldDay_Sonica_Sapient
FieldDay_Sonica_SapientFieldDay_Sonica_Sapient
FieldDay_Sonica_Sapient
 
Tools I Carry
Tools I CarryTools I Carry
Tools I Carry
 
The math-behind-ab-testing
The math-behind-ab-testingThe math-behind-ab-testing
The math-behind-ab-testing
 
Improving email open rates
Improving email open ratesImproving email open rates
Improving email open rates
 
Investing early
Investing earlyInvesting early
Investing early
 
Scrum
ScrumScrum
Scrum
 

Recently uploaded

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
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
 
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
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
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
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 

Recently uploaded (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
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...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
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
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

Git basics

  • 1. Git An intro to Git Source Control Management
  • 2. What is Git? Distributed version control system Linus Torvalds - to track linux kernel development Free and open source Designed to handle small/large projects with speed and efficiency Fast branching and merging
  • 3. Why source control? Faster development Archive of all code changes over time Compare changes and revert to old release Accountability Conserve disk space Good for you
  • 6. Installing git • To initialize git directory • $ git init • Start version controlling existing files • $ git add *.php *.inc *.html *.tpl • $ git commit -m ‘Initial project version’ • Cloning an existing repository • $ git clone ssh://clickindia@192.168.0.77/home/clickindia/public_html/clickindia
  • 7. Basic git workflow • You modify files in your working directory • You stage files adding snapshot of them to staging area • You do a commit which takes the files in staging area and stores the snapshot permanently
  • 8. Changes in repository To check status of your files Modifying files Tracking new files Removing files Staging modified files Committing files Ignoring files
  • 9. Example of gitignore $ cat .gitignore *.[oa] *~ *.a # no .a files !lib.a # but do track lib.a, even though you're ignoring .a files above /TODO # only ignore the root TODO file, not subdir/TODO build/ # ignore all files in the build/ directory doc/*.txt # ignore doc/notes.txt, but not doc/server/arch.txt
  • 10. Viewing staged and unstaged changes git status git diff (Compares working directory with staging area) git diff --staged git diff HEAD git diff v1.0 v1.1 git diff master adposting
  • 11. Branching $ git add README test.rb LICENSE $ git commit -m 'initial commit of my project' Created on commit Created on add
  • 14. Creating new branch $ git branch testing
  • 16. Switching branch $ git checkout testing
  • 17. Significance of branch $ vim test.php $ git commit -am “made a change”
  • 18. Significance of branch $ git checkout master
  • 19. Significance of branch $ vim test.php $ git commit -am “made a change”
  • 20. Basic branching and merging • Create a new feature branch • Do some work in that branch Critical issue in production • Revert back to production branch • Create a new branch to add the hotfix • After testing, merge the hotfix branch and push to production • Switch back to your original issue and continue
  • 21. Basic branching and merging $ git checkout -b iss53 Switched to a new branch "iss53"
  • 22. Basic branching and merging $ vi index.html $ git commit -a -m 'added a new footer [issue 53]'
  • 23. Basic branching and merging Issue in production $ git checkout master Switched to branch “master” $ git checkout -b ‘hotfix’ Switched to a new branch “hotfix” $ vim index.html $ git commit -am ‘fixed a broken email address’ [hotfix]: created 3a0874c: "fixed the broken email address" 1 files changed, 0 insertions(+), 1 deletions(-)
  • 24. Basic branching and merging $ git checkout master $ git merge --no-ff hotfix Updating f42c576..3a0874c README | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) $ git branch -d hotfix Deleted branch hotfix (3a0874c).
  • 25. Basic branching and merging $ git checkout iss53 Switched to branch "iss53" $ vim index.html $ git commit -a -m 'finished the new footer [issue 53]' [iss53]: created ad82d7a: "finished the new footer [issue 53]" 1 files changed, 1 insertions(+), 0 deletions(-)
  • 26. Basic branching and merging $ git checkout master $ git merge iss53 Merge made by recursive. README | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
  • 27. Basic branching and merging $ git branch -d iss53
  • 28. Branch management $ git branch # Shows all the active branches $ git branch -v # Shows last commit on each branch $ git branch --merged # Shows which branches are merged with the branch you are on $ git branch --no-merged # Shows all branches that contain work you haven’t merged $ git branch -d testing # To delete a branch. Will fail if the branch is not yet merged
  • 29. Remote branches • Remote branches are references to the state of branches on your remote repositories
  • 31. Remote branches $ git fetch origin # Fetches any data you don’t have from remote ‘origin’ repository $ git fetch origin master # Fetches data only from ‘master’ branch $ git pull origin # Fetches any data you don’t have and merges it with local branch $ git pull origin master # Fetches data from master and merges it with local master branch $ git push origin develop # Pushes data from local ‘develop’ branch to remote ‘develop’ branch $ git push origin develop:release # Pushes data from local ‘develop’ branch to remote ‘release’ branch git fetch origin
  • 32. Remotes $ git remote Origin $ git remote -v Origin ssh://clickindia@192.168.0.77/home/clickindia/public_html/clickindia $ git remote add test ssh://clickindia@test.clickindia.com/home/clickindia/public_html.... $ git remote rm origin
  • 35. How will we work? pull master master master pull develop push release Development Test server Production 192.168.0.77 Developer 1 Developer 2 Developer 3
  • 36. Tagging and release Once the code is merged into master production $ git tag -a v1.0.1 # applies v1.0.1 tag to current commit $ git tag # To list all tags $ git tag -1 ‘v1.4.2*‘ # List all tags starting with 1.4.2 $ git tag -a v1.0.1 -m ‘my version 1.0.1’ $ git show v1.4 tag v1.4 Tagger: Scott Chacon <schacon@gee-mail.com> Date: Mon Feb 9 14:45:11 2009 -0800 my version 1.4 commit 15027957951b64cf874c3557a0f3547bd83b3ff6 Merge: 4a447f7... a6b4c97... Author: Scott Chacon <schacon@gee-mail.com> Date: Sun Feb 8 19:02:46 2009 -0800 Merge branch 'experiment'
  • 37. Tagging Tagging later $ git log --pretty=oneline 15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment' a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support 0d52aaab4479697da7686c15f77a3d64d9165190 one more thing 6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment' 0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function 4682c3261057305bdd616e23b64b0857d832627b added a todo file 166ae0c4d3f420721acbb115cc33848dfcc2121a started write support 9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile 964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo 8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme $ git tag -a v1.2 9fceb02
  • 39. Everyday commands Working on a new feature $ git pull origin develop $ git checkout -b adposting .....did development work..... $ git commit -am ‘Created new ad posting form’ $ git push origin adposting ......tested feature on development server..... $ git checkout develop $ git merge --no-ff adposting $ git push origin develop:release-v1.1.2 (push to test server as release-v1.1.2 .........fix testing bugs on release v1.1.2....... $ git fetch origin release-v1.1.2 ( on production only done by sysadmin ) $ git checkout master $ git merge --no-ff release-v.1.1.2 $ git tag -am v1.1.2 ‘released version v1.1.2’
  • 40. Everyday commands Working on a hotfix $ git pull origin master $ git checkout -b hotfixv1.1.1 master .....fixed bug on test server..... $ git commit -am ‘fixed e-mail address on contact page’ ....... Tested by deepak ........ $ git fetch origin hotfixv1.1.1 ( on production only done by sysadmin ) ...... Check if already on master....if not $ git checkout master $ git merge --no-ff hotfixv1.1.1 $ git tag -am v1.1.1 ‘released version v1.1.1’ $ git pull origin master ( on test and development servers)
  • 41. Version numbering v0.0.0 Major release Hot fixes Minor releases
  • 42. References • Progit.org -- a complete book on git • Gitref.org -- A very simple reference of all commands