SlideShare a Scribd company logo
©2010 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice
Rodrigo Urubatan <rodrigo.jardim@hp.com>
07/26/2011
Git
The history, good and the bad
Distributed Version Control
Git prehistory
3 HP Confidential
Distributed Version Control Systems
– Every clone is a full repository copy
– There is no need to a central repository
– It is possible to work, commit, and then sync with other repository copies
– It is possible to cooperate with the team without a central repository
– It should be fast to perform any operation in the repository
Git creation
An open source VCS for the Linux Kernel
5 HP Confidential
Git creation (2004/2005)
– BitKeeper had licensing conflicts making it unsuitable for the linux kernel
community
– Linus did not want to use Subversion or CVS
• Subversion branching/merging is not really easy and fast
– He decided to create a version control system that must:
• Be very fast
• *Know how to handle branching and merging
• Be secure (easy to validate a copy)
• Not pollute your source tree with meta data
– The first real use for Git was the Linux kernel
Git is rocket fast
A very small comparison
7 Footer goes here
Subversion simple add a file
$time (svn add test.txt && svn commit --message "Test")
A test.txt
Adding test.txt
Transmitting file data .
Committed revision 1.
real 0m0.820s
user 0m0.011s
sys 0m0.018s
8 Footer goes here
Git simple add a file
time (git add test.txt && git commit -m "Test")
[master (root-commit) ebbc1ea] Test
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 test.txt
real 0m0.011s
user 0m0.002s
sys 0m0.008s
DVCS Workflow
A new workflow for version control
10 Footer goes here
Traditional Workflow
Work on
Code
Get changes
from repository
Commit changes
to repository
11 Footer goes here
Git (DVCS) Workflow
Local
Repository
Pull changes
from repository
Push changes
to repository
Commit
Branch
Merge
Lots of small
operations
Git basics
Internals and basic commands
13 HP Confidential
Basic commands
– git init
• Will create a new local Git repository
– git clone
• Will create a local copy of another repository, the copy will have the full history of commits
– git add/commit/rm/mv
• Will add files, commit them, remove and move files in the local repository
• No remote operation needed
– git branch/tag
• Will create a new local branch/tag
14 Footer goes here
Basic commands
– git checkout
• Will checkout a branch to the current work tree
– git merge
• Will merge the another branch into the current
– git rebase
• Will re-apply all commits from the current branch on top of the new start point
– git reset
• Will reset the current head (branch) to the specified state
15 Footer goes here
Getting information
– git diff
• Will show the difference of two objects (branches, commits, files, …)
– git log
• Will show the history of the repository
– git whatchanged
• Will show changes and commit messages in a more user friendly way
– git status
• Show the status of the current work tree
– git show
• Will show the specific object (file, commit, branch, …)
16 Footer goes here
New concepts
– git pull
• Fetches changes from a remote repository
• It is not the same as “svn update”, it will fetch all commits since the last recorded, new
branches and new tags
– git push
• Send changes to a remote repository
• It is not the same as “svn commit”, it will send all commits since the last recorded, new
branches and new tags
17 Footer goes here
Git internals
– Every commit is identified by a SHA-1 hash
• The commit hash identifies the state of the repository in that point of time
– Every commit stores the difference of the file from the previous state
• Since the local repository has all the history, the file can be re-constructed to any state
• The stored data is not really the difference, the stored is the operations realized on the file
– Git works with files only
• It has no knowledge of directories
• It cannot store empty directories
– Git tags and branches are labels to a SHA-1 hash
– With a hash it is possible to securely checkout any copy of a repository to a
specified position
• It is not possible for another repository to have a commit with the same SHA-1 signature
18 Footer goes here
Git internals
– There is only one .git directory in the project root, in this directory there
is:
• hooks – the directory for event commands
• config – the file with the current repository configuration and links to other repositories
• refs – the directory with one file for each branch/tag, the file has only the hash to the commit
that represents that branch/tag current position
• objects – the directory with all diffs and commits compressed and organized
− The “git gc” command organizes this directory from time to time or when manually executed
19 Footer goes here
Git internals – remotes
– One git repository can know about many others, these are configured by
the git remote command
– The address and name for the remote repositories are stored in the
.git/config file
– The remotes can be used to configure one central repository for the
organization
• The feature was not created with this objective
20 Footer goes here
Git internals - remotes
git clone git@github.com:username/project.git
cd project
git remote add coworker user@machine:directory/project.git
git checkout –b small_feature_branch
----- do some work----
git add . && git commit –a –m “git presentation sample”
git push coworker small_feature_branch
---- coworker reviews or completes the work on the feature –
git pull coworker small_feature_branch
git checkout master
git merge small_feature_branch
git push origin master
--The original repo does not know about the local branch, the coworker does not need to know about the original
repo --
21 Footer goes here
Git internals - hooks
– applypatch-msg
• Validates the commit messages from a received patch, can stop the merge
– commit-msg
• Validates the message for a commit
– post-commit
• Can execute some command after a commit
– post-receive
• Can execute some command after receiving a remote push
– post-update
• Can execute some command after receiving each update
22 Footer goes here
Git internals - hooks
– pre-applypatch
• Can validate a patch before applying
– pre-commit
• Can validate a commit before applying it
– pre-rebase
• Can validate the repository before a rebase
– prepare-commit-msg
• Can provide a commit message template
– update
• Can validate each update received from a remote push
Git X Subversion
Basic differences
24 HP Confidential
Subversion basics
– Traditional/Centralized approach
– Everyone needs access to the central repository to work
– Every commit gets into the repository
– Branching/merging is expensive
– There are lots of good SVN clients
– It is possible for one user to have access to only part of a repository tree
25 Footer goes here
Git against it
– Distributed approach, every clone is a full repository
– You can work without access to the central repository, a central repository
does not need to exists
– You can have commits in local branches that never get into the central
repository (for Chores for example)
– There are not many good git clients, the only with all features is the command
line
– It is not possible to allow someone access to only part of the repository
– Git is really fast
– A Git clone usually is smaller than a SVN checkout, even having the full
repository history
26 Footer goes here
Working together
git svn clone http://address/repository
cd repository
-- work normally with git, branch, tag, all locally ---
git svn dcommit
-- This command will synchronize your git repository to SVN, pulling all
changes and pushing all your commits and branches --
Git strong points
What is good about git
28 HP Confidential
Some advantages
– You do not need a central repository
– Git is really fast
– Branching/merging works automatically most of the time
– You can stage changes and come back to them later
– You can work with git even if everyone else is working with SVN or CVS
– Git does not force a specific workflow
• You can work your way
– Git can help you to find a bug root cause
– You can work offline, and still collaborate with the developer in the same room
– Git can increase collaboration (It has done it for Open Source, and can do it
inside a company if the company culture permits it)
Git problems
What can be a problem
30 HP Confidential
Some problems
– You do not need a central repository
– There are no good GUIs for Git
• Some are starting to show up
– The team needs to learn new concepts and new tools
– Not everyone is confortable with the command line
– git-svn branch/tag only works for standard SVN repository layouts
Some great commands
Some git goodness
32 HP Confidential
Git commands worth knowing
– git stash
• Allows the current uncommited changes to be saved but not commited, and later re-applied
– git fsck
• Makes it easy to find lost commits
– git blame/annotate
• Makes iteasy to find who did what in a file
– git cherry
• Show the differences between one point and the branch origin
– git submodule
• Similar to SVN externals, allow another git repository to be used as a directory of a parent
repository
33 Footer goes here
Git commands worth knowing
– git bisect
• Use binary search to find the commit that introduced a bug given a previous “good” position
Q&A.
35 HP Confidential
References
– http://gitscm.com/
– Linus Torvalds Presentation at Google -
http://www.youtube.com/watch?v=4XpnKHJAok8
– InfoQ article about DCVS - http://www.infoq.com/articles/dvcs-guide
– How to work with Git and SVN together - http://git.or.cz/course/svn.html
Ad

More Related Content

What's hot (20)

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
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
Sage Sharp
 
Git installation and configuration
Git installation and configurationGit installation and configuration
Git installation and configuration
Kishor Kumar
 
Git Introduction Tutorial
Git Introduction TutorialGit Introduction Tutorial
Git Introduction Tutorial
Thomas Rausch
 
Git Tutorial I
Git Tutorial IGit Tutorial I
Git Tutorial I
Jim Yeh
 
Gitting out of trouble
Gitting out of troubleGitting out of trouble
Gitting out of trouble
Jon Senchyna
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
Lee Hanxue
 
Git, GitHub and Open Source
Git, GitHub and Open SourceGit, GitHub and Open Source
Git, GitHub and Open Source
Lorna Mitchell
 
GIT presentation
GIT presentationGIT presentation
GIT presentation
Naim Latifi
 
Grokking opensource with github
Grokking opensource with githubGrokking opensource with github
Grokking opensource with github
GoogleDeveloperStude4
 
Git hub
Git hubGit hub
Git hub
Nitin Goel
 
Git tutorial
Git tutorialGit tutorial
Git tutorial
Elli Kanal
 
Git-ing out of your git messes
Git-ing out of  your git messesGit-ing out of  your git messes
Git-ing out of your git messes
Katie Sylor-Miller
 
Git tutorial
Git tutorialGit tutorial
Git tutorial
Pham Quy (Jack)
 
Git and github fundamental
Git and github fundamentalGit and github fundamental
Git and github fundamental
Rajesh Kumar
 
Git: A Getting Started Presentation
Git: A Getting Started PresentationGit: A Getting Started Presentation
Git: A Getting Started Presentation
Nap Ramirez
 
Introduction to Git, DrupalCamp LA 2015
Introduction to Git, DrupalCamp LA 2015Introduction to Git, DrupalCamp LA 2015
Introduction to Git, DrupalCamp LA 2015
mwrather
 
Git for beginners
Git for beginnersGit for beginners
Git for beginners
Arulmurugan Rajaraman
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
Nicolás Tourné
 
Git and Github
Git and GithubGit and Github
Git and Github
Wen-Tien Chang
 
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
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
Sage Sharp
 
Git installation and configuration
Git installation and configurationGit installation and configuration
Git installation and configuration
Kishor Kumar
 
Git Introduction Tutorial
Git Introduction TutorialGit Introduction Tutorial
Git Introduction Tutorial
Thomas Rausch
 
Git Tutorial I
Git Tutorial IGit Tutorial I
Git Tutorial I
Jim Yeh
 
Gitting out of trouble
Gitting out of troubleGitting out of trouble
Gitting out of trouble
Jon Senchyna
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
Lee Hanxue
 
Git, GitHub and Open Source
Git, GitHub and Open SourceGit, GitHub and Open Source
Git, GitHub and Open Source
Lorna Mitchell
 
GIT presentation
GIT presentationGIT presentation
GIT presentation
Naim Latifi
 
Git-ing out of your git messes
Git-ing out of  your git messesGit-ing out of  your git messes
Git-ing out of your git messes
Katie Sylor-Miller
 
Git and github fundamental
Git and github fundamentalGit and github fundamental
Git and github fundamental
Rajesh Kumar
 
Git: A Getting Started Presentation
Git: A Getting Started PresentationGit: A Getting Started Presentation
Git: A Getting Started Presentation
Nap Ramirez
 
Introduction to Git, DrupalCamp LA 2015
Introduction to Git, DrupalCamp LA 2015Introduction to Git, DrupalCamp LA 2015
Introduction to Git, DrupalCamp LA 2015
mwrather
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
Nicolás Tourné
 

Viewers also liked (9)

Yet Another Drupal Development/Deployment Presentation
Yet Another Drupal Development/Deployment PresentationYet Another Drupal Development/Deployment Presentation
Yet Another Drupal Development/Deployment Presentation
digital006
 
Quiz With Answers Drupal
Quiz With  Answers  DrupalQuiz With  Answers  Drupal
Quiz With Answers Drupal
Srinivasan Boominathan
 
Are you ready for Drupal 8?
Are you ready for Drupal 8?Are you ready for Drupal 8?
Are you ready for Drupal 8?
Stephanie Peugh
 
#D8 cx: upgrade your modules to drupal 8
#D8 cx: upgrade your modules to drupal 8 #D8 cx: upgrade your modules to drupal 8
#D8 cx: upgrade your modules to drupal 8
DrupalCamp Kyiv Рысь
 
Performance & Scalability in Drupal
Performance & Scalability in DrupalPerformance & Scalability in Drupal
Performance & Scalability in Drupal
Mukesh Agarwal
 
Drupal Best Practices
Drupal Best PracticesDrupal Best Practices
Drupal Best Practices
Mukesh Agarwal
 
Master the New Core of Drupal 8 Now: with Symfony and Silex
Master the New Core of Drupal 8 Now: with Symfony and SilexMaster the New Core of Drupal 8 Now: with Symfony and Silex
Master the New Core of Drupal 8 Now: with Symfony and Silex
Ryan Weaver
 
Aneurysm Enhancement Poster AMIA 2009
Aneurysm Enhancement Poster AMIA 2009Aneurysm Enhancement Poster AMIA 2009
Aneurysm Enhancement Poster AMIA 2009
ktdiedrich
 
Drupal 8 Configuration Management
Drupal 8 Configuration ManagementDrupal 8 Configuration Management
Drupal 8 Configuration Management
Philip Norton
 
Yet Another Drupal Development/Deployment Presentation
Yet Another Drupal Development/Deployment PresentationYet Another Drupal Development/Deployment Presentation
Yet Another Drupal Development/Deployment Presentation
digital006
 
Are you ready for Drupal 8?
Are you ready for Drupal 8?Are you ready for Drupal 8?
Are you ready for Drupal 8?
Stephanie Peugh
 
Performance & Scalability in Drupal
Performance & Scalability in DrupalPerformance & Scalability in Drupal
Performance & Scalability in Drupal
Mukesh Agarwal
 
Master the New Core of Drupal 8 Now: with Symfony and Silex
Master the New Core of Drupal 8 Now: with Symfony and SilexMaster the New Core of Drupal 8 Now: with Symfony and Silex
Master the New Core of Drupal 8 Now: with Symfony and Silex
Ryan Weaver
 
Aneurysm Enhancement Poster AMIA 2009
Aneurysm Enhancement Poster AMIA 2009Aneurysm Enhancement Poster AMIA 2009
Aneurysm Enhancement Poster AMIA 2009
ktdiedrich
 
Drupal 8 Configuration Management
Drupal 8 Configuration ManagementDrupal 8 Configuration Management
Drupal 8 Configuration Management
Philip Norton
 
Ad

Similar to Git presentation to some coworkers some time ago (20)

Fundamentals and basics of Git and commands
Fundamentals and basics of Git and commandsFundamentals and basics of Git and commands
Fundamentals and basics of Git and commands
DivyanshGupta922023
 
Git 101
Git 101Git 101
Git 101
jayrparro
 
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
 
git.ppt.pdf
git.ppt.pdfgit.ppt.pdf
git.ppt.pdf
Roniel Lopez Alvarez
 
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
 
github ppt git ppt on git hub to know ab
github ppt git ppt on git hub to know abgithub ppt git ppt on git hub to know ab
github ppt git ppt on git hub to know ab
infoinnext
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
Nguyen Van Hung
 
Git training v10
Git training v10Git training v10
Git training v10
Skander Hamza
 
GIT.pptx
GIT.pptxGIT.pptx
GIT.pptx
Soumen Debgupta
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hub
Naveen Pandey
 
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
 
GIT INTRODUCTION
GIT INTRODUCTIONGIT INTRODUCTION
GIT INTRODUCTION
MohanRaviRohitth
 
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
 
Luis atencio on_git
Luis atencio on_gitLuis atencio on_git
Luis atencio on_git
Luis Atencio
 
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
 
git.ppt.pptx power point presentation got Google internet
git.ppt.pptx power point presentation got Google internetgit.ppt.pptx power point presentation got Google internet
git.ppt.pptx power point presentation got Google internet
rani marri
 
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 more done
Git more doneGit more done
Git more done
Kwen Peterson
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github
Max Claus Nunes
 
Git for uninitiated
Git for uninitiatedGit for uninitiated
Git for uninitiated
John C. Chan
 
Fundamentals and basics of Git and commands
Fundamentals and basics of Git and commandsFundamentals and basics of Git and commands
Fundamentals and basics of Git and commands
DivyanshGupta922023
 
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
 
github ppt git ppt on git hub to know ab
github ppt git ppt on git hub to know abgithub ppt git ppt on git hub to know ab
github ppt git ppt on git hub to know ab
infoinnext
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hub
Naveen Pandey
 
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
 
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
 
Luis atencio on_git
Luis atencio on_gitLuis atencio on_git
Luis atencio on_git
Luis Atencio
 
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
 
git.ppt.pptx power point presentation got Google internet
git.ppt.pptx power point presentation got Google internetgit.ppt.pptx power point presentation got Google internet
git.ppt.pptx power point presentation got Google internet
rani marri
 
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
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github
Max Claus Nunes
 
Git for uninitiated
Git for uninitiatedGit for uninitiated
Git for uninitiated
John C. Chan
 
Ad

More from Rodrigo Urubatan (20)

Ruby code smells
Ruby code smellsRuby code smells
Ruby code smells
Rodrigo Urubatan
 
Data science in ruby is it possible? is it fast? should we use it?
Data science in ruby is it possible? is it fast? should we use it?Data science in ruby is it possible? is it fast? should we use it?
Data science in ruby is it possible? is it fast? should we use it?
Rodrigo Urubatan
 
Data science in ruby, is it possible? is it fast? should we use it?
Data science in ruby, is it possible? is it fast? should we use it?Data science in ruby, is it possible? is it fast? should we use it?
Data science in ruby, is it possible? is it fast? should we use it?
Rodrigo Urubatan
 
2018 the conf put git to work - increase the quality of your rails project...
2018 the conf   put git to work -  increase the quality of your rails project...2018 the conf   put git to work -  increase the quality of your rails project...
2018 the conf put git to work - increase the quality of your rails project...
Rodrigo Urubatan
 
2018 RubyHACK: put git to work - increase the quality of your rails project...
2018 RubyHACK:  put git to work -  increase the quality of your rails project...2018 RubyHACK:  put git to work -  increase the quality of your rails project...
2018 RubyHACK: put git to work - increase the quality of your rails project...
Rodrigo Urubatan
 
TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...
TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...
TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...
Rodrigo Urubatan
 
Your first game with unity3d framework
Your first game with unity3d frameworkYour first game with unity3d framework
Your first game with unity3d framework
Rodrigo Urubatan
 
Tdc Floripa 2017 - 8 falácias da programação distribuída
Tdc Floripa 2017 -  8 falácias da programação distribuídaTdc Floripa 2017 -  8 falácias da programação distribuída
Tdc Floripa 2017 - 8 falácias da programação distribuída
Rodrigo Urubatan
 
Rubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDDRubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDD
Rodrigo Urubatan
 
resolvendo problemas de comunicação em equipes distribuídas com bdd
resolvendo problemas de comunicação em equipes distribuídas com bddresolvendo problemas de comunicação em equipes distribuídas com bdd
resolvendo problemas de comunicação em equipes distribuídas com bdd
Rodrigo Urubatan
 
vantagens e desvantagens de trabalhar remoto
vantagens e desvantagens de trabalhar remotovantagens e desvantagens de trabalhar remoto
vantagens e desvantagens de trabalhar remoto
Rodrigo Urubatan
 
Using BDD to Solve communication problems
Using BDD to Solve communication problemsUsing BDD to Solve communication problems
Using BDD to Solve communication problems
Rodrigo Urubatan
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
Rodrigo Urubatan
 
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Rodrigo Urubatan
 
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015  - Interfaces Ricas com Rails e React.JSTDC São Paulo 2015  - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
Rodrigo Urubatan
 
Full Text Search com Solr, MySQL Full text e PostgreSQL Full Text
Full Text Search com Solr, MySQL Full text e PostgreSQL Full TextFull Text Search com Solr, MySQL Full text e PostgreSQL Full Text
Full Text Search com Solr, MySQL Full text e PostgreSQL Full Text
Rodrigo Urubatan
 
Ruby para programadores java
Ruby para programadores javaRuby para programadores java
Ruby para programadores java
Rodrigo Urubatan
 
Treinamento html5, css e java script apresentado na HP
Treinamento html5, css e java script apresentado na HPTreinamento html5, css e java script apresentado na HP
Treinamento html5, css e java script apresentado na HP
Rodrigo Urubatan
 
Ruby on rails impressione a você mesmo, seu chefe e seu cliente
Ruby on rails  impressione a você mesmo, seu chefe e seu clienteRuby on rails  impressione a você mesmo, seu chefe e seu cliente
Ruby on rails impressione a você mesmo, seu chefe e seu cliente
Rodrigo Urubatan
 
Mini curso rails 3
Mini curso rails 3Mini curso rails 3
Mini curso rails 3
Rodrigo Urubatan
 
Data science in ruby is it possible? is it fast? should we use it?
Data science in ruby is it possible? is it fast? should we use it?Data science in ruby is it possible? is it fast? should we use it?
Data science in ruby is it possible? is it fast? should we use it?
Rodrigo Urubatan
 
Data science in ruby, is it possible? is it fast? should we use it?
Data science in ruby, is it possible? is it fast? should we use it?Data science in ruby, is it possible? is it fast? should we use it?
Data science in ruby, is it possible? is it fast? should we use it?
Rodrigo Urubatan
 
2018 the conf put git to work - increase the quality of your rails project...
2018 the conf   put git to work -  increase the quality of your rails project...2018 the conf   put git to work -  increase the quality of your rails project...
2018 the conf put git to work - increase the quality of your rails project...
Rodrigo Urubatan
 
2018 RubyHACK: put git to work - increase the quality of your rails project...
2018 RubyHACK:  put git to work -  increase the quality of your rails project...2018 RubyHACK:  put git to work -  increase the quality of your rails project...
2018 RubyHACK: put git to work - increase the quality of your rails project...
Rodrigo Urubatan
 
TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...
TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...
TDC2017 - POA - Aprendendo a usar Xamarin para desenvolver aplicações moveis ...
Rodrigo Urubatan
 
Your first game with unity3d framework
Your first game with unity3d frameworkYour first game with unity3d framework
Your first game with unity3d framework
Rodrigo Urubatan
 
Tdc Floripa 2017 - 8 falácias da programação distribuída
Tdc Floripa 2017 -  8 falácias da programação distribuídaTdc Floripa 2017 -  8 falácias da programação distribuída
Tdc Floripa 2017 - 8 falácias da programação distribuída
Rodrigo Urubatan
 
Rubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDDRubyconf2016 - Solving communication problems in distributed teams with BDD
Rubyconf2016 - Solving communication problems in distributed teams with BDD
Rodrigo Urubatan
 
resolvendo problemas de comunicação em equipes distribuídas com bdd
resolvendo problemas de comunicação em equipes distribuídas com bddresolvendo problemas de comunicação em equipes distribuídas com bdd
resolvendo problemas de comunicação em equipes distribuídas com bdd
Rodrigo Urubatan
 
vantagens e desvantagens de trabalhar remoto
vantagens e desvantagens de trabalhar remotovantagens e desvantagens de trabalhar remoto
vantagens e desvantagens de trabalhar remoto
Rodrigo Urubatan
 
Using BDD to Solve communication problems
Using BDD to Solve communication problemsUsing BDD to Solve communication problems
Using BDD to Solve communication problems
Rodrigo Urubatan
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
Rodrigo Urubatan
 
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Interfaces ricas com Rails e React.JS @ Rubyconf 2015
Rodrigo Urubatan
 
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015  - Interfaces Ricas com Rails e React.JSTDC São Paulo 2015  - Interfaces Ricas com Rails e React.JS
TDC São Paulo 2015 - Interfaces Ricas com Rails e React.JS
Rodrigo Urubatan
 
Full Text Search com Solr, MySQL Full text e PostgreSQL Full Text
Full Text Search com Solr, MySQL Full text e PostgreSQL Full TextFull Text Search com Solr, MySQL Full text e PostgreSQL Full Text
Full Text Search com Solr, MySQL Full text e PostgreSQL Full Text
Rodrigo Urubatan
 
Ruby para programadores java
Ruby para programadores javaRuby para programadores java
Ruby para programadores java
Rodrigo Urubatan
 
Treinamento html5, css e java script apresentado na HP
Treinamento html5, css e java script apresentado na HPTreinamento html5, css e java script apresentado na HP
Treinamento html5, css e java script apresentado na HP
Rodrigo Urubatan
 
Ruby on rails impressione a você mesmo, seu chefe e seu cliente
Ruby on rails  impressione a você mesmo, seu chefe e seu clienteRuby on rails  impressione a você mesmo, seu chefe e seu cliente
Ruby on rails impressione a você mesmo, seu chefe e seu cliente
Rodrigo Urubatan
 

Recently uploaded (20)

Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersLinux Support for SMARC: How Toradex Empowers Embedded Developers
Linux Support for SMARC: How Toradex Empowers Embedded Developers
Toradex
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 

Git presentation to some coworkers some time ago

  • 1. ©2010 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Rodrigo Urubatan <[email protected]> 07/26/2011 Git The history, good and the bad
  • 3. 3 HP Confidential Distributed Version Control Systems – Every clone is a full repository copy – There is no need to a central repository – It is possible to work, commit, and then sync with other repository copies – It is possible to cooperate with the team without a central repository – It should be fast to perform any operation in the repository
  • 4. Git creation An open source VCS for the Linux Kernel
  • 5. 5 HP Confidential Git creation (2004/2005) – BitKeeper had licensing conflicts making it unsuitable for the linux kernel community – Linus did not want to use Subversion or CVS • Subversion branching/merging is not really easy and fast – He decided to create a version control system that must: • Be very fast • *Know how to handle branching and merging • Be secure (easy to validate a copy) • Not pollute your source tree with meta data – The first real use for Git was the Linux kernel
  • 6. Git is rocket fast A very small comparison
  • 7. 7 Footer goes here Subversion simple add a file $time (svn add test.txt && svn commit --message "Test") A test.txt Adding test.txt Transmitting file data . Committed revision 1. real 0m0.820s user 0m0.011s sys 0m0.018s
  • 8. 8 Footer goes here Git simple add a file time (git add test.txt && git commit -m "Test") [master (root-commit) ebbc1ea] Test 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 test.txt real 0m0.011s user 0m0.002s sys 0m0.008s
  • 9. DVCS Workflow A new workflow for version control
  • 10. 10 Footer goes here Traditional Workflow Work on Code Get changes from repository Commit changes to repository
  • 11. 11 Footer goes here Git (DVCS) Workflow Local Repository Pull changes from repository Push changes to repository Commit Branch Merge Lots of small operations
  • 12. Git basics Internals and basic commands
  • 13. 13 HP Confidential Basic commands – git init • Will create a new local Git repository – git clone • Will create a local copy of another repository, the copy will have the full history of commits – git add/commit/rm/mv • Will add files, commit them, remove and move files in the local repository • No remote operation needed – git branch/tag • Will create a new local branch/tag
  • 14. 14 Footer goes here Basic commands – git checkout • Will checkout a branch to the current work tree – git merge • Will merge the another branch into the current – git rebase • Will re-apply all commits from the current branch on top of the new start point – git reset • Will reset the current head (branch) to the specified state
  • 15. 15 Footer goes here Getting information – git diff • Will show the difference of two objects (branches, commits, files, …) – git log • Will show the history of the repository – git whatchanged • Will show changes and commit messages in a more user friendly way – git status • Show the status of the current work tree – git show • Will show the specific object (file, commit, branch, …)
  • 16. 16 Footer goes here New concepts – git pull • Fetches changes from a remote repository • It is not the same as “svn update”, it will fetch all commits since the last recorded, new branches and new tags – git push • Send changes to a remote repository • It is not the same as “svn commit”, it will send all commits since the last recorded, new branches and new tags
  • 17. 17 Footer goes here Git internals – Every commit is identified by a SHA-1 hash • The commit hash identifies the state of the repository in that point of time – Every commit stores the difference of the file from the previous state • Since the local repository has all the history, the file can be re-constructed to any state • The stored data is not really the difference, the stored is the operations realized on the file – Git works with files only • It has no knowledge of directories • It cannot store empty directories – Git tags and branches are labels to a SHA-1 hash – With a hash it is possible to securely checkout any copy of a repository to a specified position • It is not possible for another repository to have a commit with the same SHA-1 signature
  • 18. 18 Footer goes here Git internals – There is only one .git directory in the project root, in this directory there is: • hooks – the directory for event commands • config – the file with the current repository configuration and links to other repositories • refs – the directory with one file for each branch/tag, the file has only the hash to the commit that represents that branch/tag current position • objects – the directory with all diffs and commits compressed and organized − The “git gc” command organizes this directory from time to time or when manually executed
  • 19. 19 Footer goes here Git internals – remotes – One git repository can know about many others, these are configured by the git remote command – The address and name for the remote repositories are stored in the .git/config file – The remotes can be used to configure one central repository for the organization • The feature was not created with this objective
  • 20. 20 Footer goes here Git internals - remotes git clone [email protected]:username/project.git cd project git remote add coworker user@machine:directory/project.git git checkout –b small_feature_branch ----- do some work---- git add . && git commit –a –m “git presentation sample” git push coworker small_feature_branch ---- coworker reviews or completes the work on the feature – git pull coworker small_feature_branch git checkout master git merge small_feature_branch git push origin master --The original repo does not know about the local branch, the coworker does not need to know about the original repo --
  • 21. 21 Footer goes here Git internals - hooks – applypatch-msg • Validates the commit messages from a received patch, can stop the merge – commit-msg • Validates the message for a commit – post-commit • Can execute some command after a commit – post-receive • Can execute some command after receiving a remote push – post-update • Can execute some command after receiving each update
  • 22. 22 Footer goes here Git internals - hooks – pre-applypatch • Can validate a patch before applying – pre-commit • Can validate a commit before applying it – pre-rebase • Can validate the repository before a rebase – prepare-commit-msg • Can provide a commit message template – update • Can validate each update received from a remote push
  • 23. Git X Subversion Basic differences
  • 24. 24 HP Confidential Subversion basics – Traditional/Centralized approach – Everyone needs access to the central repository to work – Every commit gets into the repository – Branching/merging is expensive – There are lots of good SVN clients – It is possible for one user to have access to only part of a repository tree
  • 25. 25 Footer goes here Git against it – Distributed approach, every clone is a full repository – You can work without access to the central repository, a central repository does not need to exists – You can have commits in local branches that never get into the central repository (for Chores for example) – There are not many good git clients, the only with all features is the command line – It is not possible to allow someone access to only part of the repository – Git is really fast – A Git clone usually is smaller than a SVN checkout, even having the full repository history
  • 26. 26 Footer goes here Working together git svn clone http://address/repository cd repository -- work normally with git, branch, tag, all locally --- git svn dcommit -- This command will synchronize your git repository to SVN, pulling all changes and pushing all your commits and branches --
  • 27. Git strong points What is good about git
  • 28. 28 HP Confidential Some advantages – You do not need a central repository – Git is really fast – Branching/merging works automatically most of the time – You can stage changes and come back to them later – You can work with git even if everyone else is working with SVN or CVS – Git does not force a specific workflow • You can work your way – Git can help you to find a bug root cause – You can work offline, and still collaborate with the developer in the same room – Git can increase collaboration (It has done it for Open Source, and can do it inside a company if the company culture permits it)
  • 29. Git problems What can be a problem
  • 30. 30 HP Confidential Some problems – You do not need a central repository – There are no good GUIs for Git • Some are starting to show up – The team needs to learn new concepts and new tools – Not everyone is confortable with the command line – git-svn branch/tag only works for standard SVN repository layouts
  • 31. Some great commands Some git goodness
  • 32. 32 HP Confidential Git commands worth knowing – git stash • Allows the current uncommited changes to be saved but not commited, and later re-applied – git fsck • Makes it easy to find lost commits – git blame/annotate • Makes iteasy to find who did what in a file – git cherry • Show the differences between one point and the branch origin – git submodule • Similar to SVN externals, allow another git repository to be used as a directory of a parent repository
  • 33. 33 Footer goes here Git commands worth knowing – git bisect • Use binary search to find the commit that introduced a bug given a previous “good” position
  • 34. Q&A.
  • 35. 35 HP Confidential References – http://gitscm.com/ – Linus Torvalds Presentation at Google - http://www.youtube.com/watch?v=4XpnKHJAok8 – InfoQ article about DCVS - http://www.infoq.com/articles/dvcs-guide – How to work with Git and SVN together - http://git.or.cz/course/svn.html