SlideShare a Scribd company logo
1 of 63
Essential Git For Developers
By:
Adam Culp
Twitter: @adamculp
https://joind.in/14744
2
Essential Git For Developers
●
About me
– PHP 5.3 Certified
– Work at Zend Technologies
– Organizer SoFloPHP (South Florida)
– Organized SunshinePHP (Miami)
– Long distance runner
– Judo Black Belt Instructor
3
Essential Git For Developers
●
Fan of iteration
– Everything requires iteration to do well: (practice makes perfect)
●
Long distance running
●
Judo
●
Development
●
Avoid project managers
●
Version Control!
4
Essential Git For Developers
●
Why use Git?
– No centralization
●
No central server (unless desired)
– Each clone = full repository
●
Git tracks state, history, and integrity
– Branching and Merging work
– Fast
●
Local vs Remote
●
Only one .git directory
– Files to be committed are “staged” first
– Free and Open Source
– Flexible workflow
5
Essential Git For Developers
● How Others Looks At Data.
– As files and the changes made to each file.
Version 1 Version 2 Version 3 Version 4 Version 5
File A
File B
File C
Diff 1
Diff 1
Diff 2
Diff 1
Diff 2
Diff 2
Diff 3
6
Essential Git For Developers
● How Git Looks At Data.
– As whole files, not files + diffs.
Version 1 Version 2 Version 3 Version 4 Version 5
File A
File B
File C
File A1 File A2
File B1 File B2
File C1 File C2 File C3
File A1 File A2
File BFile B
File C2
Green means whole file, yellow means pointer to previous whole file.
7
Essential Git For Developers
● Subversion-Style Workflow
Shared Repository
Developer Developer Developer
8
Essential Git For Developers
● Integration Manager Workflow
Blessed
Repository
Integration
Manager
Developer
Public
Developer
Public
Developer
Private
Developer
Private
9
Essential Git For Developers
● Dictator and Lieutenants Workflow
Blessed
Repository
Dictator
Developer Developer Developer Developer
Lieutenant
Lieutenant
10
Essential Git For Developers
● Single Developer
– One repository, everything in one basket.
● Remember to backup
Developer
Local
Repository
11
Essential Git For Developers
● Each 'git clone' == full repository
12
Essential Git For Developers
● What is actually going on?
– A bunch of repositories!
Repository
Repository Repository Repository
13
Essential Git For Developers
● But it could be:
– Repositories can connect in all directions.
Repository
Repository
Repository
Repository
14
Essential Git For Developers
●
Most common commands
– git config
– git init
– git clone
– git status
– git add
– git commit
– git log or show
– git branch
– git checkout
– git merge
– git pull or push
15
Essential Git For Developers
● Help!
– Adding '-h' to any command will return help on usage.
16
Essential Git For Developers
● git config
– Easily set your information to accompany commits.
– Generally a one time thing.
17
Essential Git For Developers
● git init
– Instruct Git to track project by simply 'git init'.
– No more excuses! Version all the things!
18
Essential Git For Developers
●
git clone {repo} {destination}
– Creates new repository based on another.
– Cloned repository becomes “Origin”.
●
Internal pointer for where it came from.
19
Essential Git For Developers
●
Example of 'git clone'
– Below we clone a repo from github.
– We address the .git directory.
– Specify where to put it.
20
Essential Git For Developers
● git status
– Provides status of resources in the tracked project.
21
Essential Git For Developers
● git status
– Below 'git status' informs us of untracked files after created.
22
Essential Git For Developers
● git add
– Stages files to be committed.
23
Essential Git For Developers
● git commit
– A 'git commit' includes all “staged” files.
– Use '-m' to store a message with the commit.
●
Or git prompts user to add a message. (using default editor)
24
Essential Git For Developers
●
More on commits
– A commit should be:
●
Done OFTEN!
●
Commit messages
– Always included
– Short
– Informative
●
Single commit per bug or ticket.
25
Essential Git For Developers
● git log
– Shows history of prior commits.
– We've only done one, and here it is:
26
Essential Git For Developers
●
git show {commit hash}
– Hash optional, will show previous by default.
– Shows commit + diff view of files.
27
Essential Git For Developers
● What would a commit do?
– We did a 'git add' for file #2, and modified file 1.
28
Essential Git For Developers
● And now?
– We did a 'git add' for modified file 1.
29
Essential Git For Developers
● And finally?
– We did a 'git add' for new file 3.
30
Essential Git For Developers
● After the commit.
– All staged files were added.
– A 'git status' reveals nothing new or different.
31
Essential Git For Developers
● Commits do not carry a version #
– Git doesn't use numbers like 1, 2, 3...
– Instead uses hashes like 6e7e6999c879f460b5e1d7e29ffe9907062ec20a
32
Essential Git For Developers
● Working in 'master' is bad.
– Should not be working in the 'master' branch.
– 'master' should be pristine version.
●
Most bug free.
● Tested
● Same as “Production”
33
Essential Git For Developers
● git branch
– Shows a list of existing branches.
– The * indicates active branch.
34
Essential Git For Developers
● git branch {name} {branch}
● Or git checkout -b {name} {branch}
– Creates new branch.
– Checkout -b checks out after creation.
– Below we create a 'development' branch.
– New branch has same state as active/specified branch.
35
Essential Git For Developers
●
git checkout {name}
– Include “-b” flag to create new branch.
– Switches to a specified branch.
– Branches carry own state.
– In file browser file contents different.
36
Essential Git For Developers
● What if?
– A file has been edited, but not committed.
– We are in 'development' branch.
– What if we 'git checkout master'?
37
Essential Git For Developers
●
Change branch with uncommitted files
– Merges uncommitted content on checkout.
●
Whether 'staged' or not.
– Does NOT merge over newly created files. (changes only)
– Conflicts get exciting. (Not covered in this talk.)
38
Essential Git For Developers
● File not actually changed
– On 'git checkout development' and commit:
●
File in development carries edit committed.
●
File in master is reset, even though merged previously.
master development
39
Essential Git For Developers
● But if commit done first
– Commit only done on active branch.
– Master branch is unchanged. ('git log' shown below)
– Master files do not contain merged changes.
master development
40
Essential Git For Developers
●
git merge {branch}
– Git merges specified branch into active branch.
– We merge change from development to master.
●
'git checkout master'
●
'git merge development'
41
Essential Git For Developers
● What are “fast forward” commits?
– Merges individual commits into flow as if a checkout never occurred.
42
Essential Git For Developers
● Ignoring
– We can exclude:
●
Files
●
Folders
●
Config files with passwords ! ! !
– Simply add excluded content to the file '.gitignore'.
43
Essential Git For Developers
●
Typical branches for teams
– Conventions:
●
Testing, Staging and Master branches off limits but public.
●
Development public, public to all.
●
{user}-development branches local and private.
44
Essential Git For Developers
● Typical rules for branch usage
– No code leaves {user}-development unless finished and stable.
●
Developers merge to development branch...period!
– Do NOT merge conflicts into any public branch.
45
Essential Git For Developers
●
Commit procedure (origin pull/merge/push)
– Before merging changes to public development:
●
'git checkout development'
●
'git pull origin development'
– Should be no conflicts.
●
'git checkout {user}-development'
●
'git merge development'
– Fix conflicts
● 'git checkout development'
●
'git merge {user}-development'
●
'git push origin development'
46
Essential Git For Developers
●
Public and Private branches
– Typically {user}-development branches remain private.
●
The team is not aware of commits done there.
●
Frequent commits encouraged.
– Development, Staging, and Master are public and entire team can view
state/commits.
● All developers can merge to development.
● Only authorized people can merge to staging or master.
47
Essential Git For Developers
● Team Developer workflow
– Git is ideal for team development
48
Essential Git For Developers
●
Team Developer workflow (private)
– Project/ticket assigned, create branch
●
'git checkout development'
●
'git branch {user}-development' or 'git checkout -b {user}-development'
– Start coding.
– Commit often.
Checkout dev.
to private
{user}-development
Project
assigned
49
Essential Git For Developers
●
Team Developer workflow (private)
– Regularly commit code.
●
'git add {filename}' X each file
●
'git commit -m {commit message}'
– Regularly pull from origin.
●
'git checkout development' followed by 'git pull origin development'
●
'git checkout {user}-development' followed by 'git merge development'
Checkout dev.
to private
{user}-development
Multiple
commits
Coding
Project
assigned
50
Essential Git For Developers
●
Team Developer workflow (private)
– Development completed, ready for QA testing.
●
'git checkout development'
●
'git pull origin development' should be no conflicts.
●
'git merge {user}-development' should be no conflicts.
Checkout dev.
to private
{user}-development
Merge changes
to development
Multiple
commits
Coding
Tests
pass
Project
assigned
51
Essential Git For Developers
●
Team QA workflow (public)
– Testing done in development branch.
– Failed developer picks up on {user}-development.→
– Bug fixed re-push to development.→
Testing from
development
Test
passed
Testing
assigned
no
Return to
developer flow
52
Essential Git For Developers
●
Team QA workflow (public)
– Testing done in development branch.
– Success merge to staging→
●
'git checkout staging'
●
'git pull origin staging'
●
'git merge development'
●
'git push origin staging'
Testing from
development
Merge to
staging
Test
passed
Testing
assigned
yes
no
Return to
developer flow
53
Essential Git For Developers
●
Team Deployment Mgr. workflow (public)
– Regression testing done in staging branch.
– Testing failed:
●
'git branch -b {tempname}-staging'
– Code to fix bug
●
'git add {files}'
●
'git commit -m {message}'
Regression testing
In staging
Test
passed
Deploy
assigned
no
Temp branch
created
54
Essential Git For Developers
●
Team Deployment Mgr. workflow (public)
– Send fix back for regression testing done in staging branch.
●
'git merge staging' just to check for conflicts.
●
'git checkout staging'
●
'git merge {tempname}-staging'
Regression testing
In staging
Test
passed
Deploy
assigned
no
Temp branch
created
Bug
fixed
55
Essential Git For Developers
●
Team Deployment Mgr. workflow (public)
– If regression tests pass:
●
'git merge master' in case of conflicts
●
'git checkout master' then 'git pull origin master'
●
'git merge staging'
Regression testing
In staging
Merge to
master
Test
passed
Deploy
assigned
yes
no
Temp branch
created
Bug
fixed
56
Essential Git For Developers
●
Team Deployment Mgr. workflow (public)
– All is good, create annotated tag.
●
'git tag -a v1.0 -m '{message}' (Note: 'git tag' lists all tags.)
Regression testing
In staging
Merge to
master
Test
passed
Deploy
assigned
yes
no
Temp branch
created
Bug
fixed
Tag
created
57
Essential Git For Developers
●
Single Developer workflow (small project)
– Pretty similar, but no staging.
– Note: Still use {user}-development per task/project/ticket.
{user}-development
Merge to
development
Test
passed
Project
assigned
Tag
created
Test
passed
Merge to
master
58
Essential Git For Developers
●
Tools
– gitk
– gitx
– git-cola
– SmartGit
– GitEye
– TortoiseGit
– IDE
●
Eclipse
– Zend Studio
– Aptana
●
PHPStorm
●
etc.
59
Essential Git For Developers
●
github.com
– Great place to share code.
– Promotes collaboration
– API enhances connectivity and use
– Awesome plugins
– Easy to use
60
Essential Git For Developers
●
github – how to clone locally
– Standard 'git clone' command
– Now have a clone local to work on.
– Follow workflow as shown earlier.
61
Essential Git For Developers
●
Conclusion
– Always use source control!!!
– Git is an easy solution, just 'git init'.
– Plan a workflow and stick with it...ALWAYS!
– 3rd party repositories = backed up
– Git easy to connect to from anywhere.
– Love iteration!
62
Essential Git For Developers
● Resources
– http://nvie.com/posts/a-successful-git-branching-model/
– http://github.com
– http://training.github.com/
– https://bitbucket.org/
– http://git-scm.com
Essential Git For Developers
● Thank you!
Adam Culp
http://www.geekyboy.com
http://RunGeekRadio.com
Twitter @adamculp
https://joind.in/14744
Questions?

More Related Content

What's hot

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
 
Git Introduction
Git IntroductionGit Introduction
Git IntroductionGareth Hall
 
Brief tutorial on Git
Brief tutorial on GitBrief tutorial on Git
Brief tutorial on Git聖文 鄭
 
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 GitHubBigBlueHat
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practiceMajid Hosseini
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to GitColin Su
 
Introduction to github slideshare
Introduction to github slideshareIntroduction to github slideshare
Introduction to github slideshareRakesh Sukumar
 
Git, GitHub and Open Source
Git, GitHub and Open SourceGit, GitHub and Open Source
Git, GitHub and Open SourceLorna Mitchell
 
Software Versioning with Bitbucket and Eclipse
Software Versioning with Bitbucket and EclipseSoftware Versioning with Bitbucket and Eclipse
Software Versioning with Bitbucket and EclipseHüseyin Ergin
 
Workshop on Git and GitHub
Workshop on Git and GitHubWorkshop on Git and GitHub
Workshop on Git and GitHubDSCVSSUT
 
2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_final2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_finalMythri P K
 
Using Git/Gerrit and Jenkins to Manage the Code Review Processord
Using Git/Gerrit and Jenkins to Manage the Code Review ProcessordUsing Git/Gerrit and Jenkins to Manage the Code Review Processord
Using Git/Gerrit and Jenkins to Manage the Code Review ProcessordMarc Karasek
 

What's hot (20)

Git advanced
Git advancedGit advanced
Git advanced
 
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
 
Git Introduction
Git IntroductionGit Introduction
Git Introduction
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
 
Git
GitGit
Git
 
Brief tutorial on Git
Brief tutorial on GitBrief tutorial on Git
Brief tutorial on Git
 
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
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practice
 
Git & Github
Git & GithubGit & Github
Git & Github
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Git
GitGit
Git
 
Flow
FlowFlow
Flow
 
Introduction to github slideshare
Introduction to github slideshareIntroduction to github slideshare
Introduction to github slideshare
 
Git, GitHub and Open Source
Git, GitHub and Open SourceGit, GitHub and Open Source
Git, GitHub and Open Source
 
Software Versioning with Bitbucket and Eclipse
Software Versioning with Bitbucket and EclipseSoftware Versioning with Bitbucket and Eclipse
Software Versioning with Bitbucket and Eclipse
 
Workshop on Git and GitHub
Workshop on Git and GitHubWorkshop on Git and GitHub
Workshop on Git and GitHub
 
2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_final2015-ghci-presentation-git_gerritJenkins_final
2015-ghci-presentation-git_gerritJenkins_final
 
Git and Github
Git and GithubGit and Github
Git and Github
 
Using Git/Gerrit and Jenkins to Manage the Code Review Processord
Using Git/Gerrit and Jenkins to Manage the Code Review ProcessordUsing Git/Gerrit and Jenkins to Manage the Code Review Processord
Using Git/Gerrit and Jenkins to Manage the Code Review Processord
 
Git'in on Windows
Git'in on WindowsGit'in on Windows
Git'in on Windows
 

Viewers also liked

UA Testing with Selenium and PHPUnit - ZendCon 2013
UA Testing with Selenium and PHPUnit - ZendCon 2013UA Testing with Selenium and PHPUnit - ZendCon 2013
UA Testing with Selenium and PHPUnit - ZendCon 2013Michelangelo van Dam
 
The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5Wim Godden
 
Clean application development tutorial
Clean application development tutorialClean application development tutorial
Clean application development tutorialAdam Culp
 
Git for the Android Developer
Git for the Android DeveloperGit for the Android Developer
Git for the Android DeveloperEffective
 
.Git for WordPress Developers
.Git for WordPress Developers.Git for WordPress Developers
.Git for WordPress Developersmpvanwinkle
 
Essential git for developers
Essential git for developersEssential git for developers
Essential git for developersAidan Casey
 
Git for Android Developers
Git for Android DevelopersGit for Android Developers
Git for Android DevelopersTack Mobile
 
Git For The Android Developer
Git For The Android DeveloperGit For The Android Developer
Git For The Android DeveloperEffective
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalabilityWim Godden
 
Introduction to Git for developers
Introduction to Git for developersIntroduction to Git for developers
Introduction to Git for developersDmitry Guyvoronsky
 
[Easy] How to use Evernote: Beginner's Guide
[Easy]  How to use Evernote: Beginner's Guide[Easy]  How to use Evernote: Beginner's Guide
[Easy] How to use Evernote: Beginner's GuideAna Uy
 
DATAS Technolody may2016 eng AK
DATAS Technolody may2016 eng AKDATAS Technolody may2016 eng AK
DATAS Technolody may2016 eng AKAlexey Kononenko
 
Git for the Android Developer
Git for the Android DeveloperGit for the Android Developer
Git for the Android DeveloperEffectiveUI
 
Platform freelance ASP .NET / C#
Platform freelance ASP .NET / C# Platform freelance ASP .NET / C#
Platform freelance ASP .NET / C# Saâd Zerhouni
 

Viewers also liked (16)

UA Testing with Selenium and PHPUnit - ZendCon 2013
UA Testing with Selenium and PHPUnit - ZendCon 2013UA Testing with Selenium and PHPUnit - ZendCon 2013
UA Testing with Selenium and PHPUnit - ZendCon 2013
 
The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5
 
Clean application development tutorial
Clean application development tutorialClean application development tutorial
Clean application development tutorial
 
Git for the Android Developer
Git for the Android DeveloperGit for the Android Developer
Git for the Android Developer
 
.Git for WordPress Developers
.Git for WordPress Developers.Git for WordPress Developers
.Git for WordPress Developers
 
Evernote
EvernoteEvernote
Evernote
 
Essential git for developers
Essential git for developersEssential git for developers
Essential git for developers
 
Git for Android Developers
Git for Android DevelopersGit for Android Developers
Git for Android Developers
 
Git For The Android Developer
Git For The Android DeveloperGit For The Android Developer
Git For The Android Developer
 
Using unicode with php
Using unicode with phpUsing unicode with php
Using unicode with php
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalability
 
Introduction to Git for developers
Introduction to Git for developersIntroduction to Git for developers
Introduction to Git for developers
 
[Easy] How to use Evernote: Beginner's Guide
[Easy]  How to use Evernote: Beginner's Guide[Easy]  How to use Evernote: Beginner's Guide
[Easy] How to use Evernote: Beginner's Guide
 
DATAS Technolody may2016 eng AK
DATAS Technolody may2016 eng AKDATAS Technolody may2016 eng AK
DATAS Technolody may2016 eng AK
 
Git for the Android Developer
Git for the Android DeveloperGit for the Android Developer
Git for the Android Developer
 
Platform freelance ASP .NET / C#
Platform freelance ASP .NET / C# Platform freelance ASP .NET / C#
Platform freelance ASP .NET / C#
 

Similar to Essential git for developers

Introduction to Git
Introduction to GitIntroduction to Git
Introduction to GitAmit Mathur
 
Pro git - grasping it conceptually
Pro git - grasping it conceptuallyPro git - grasping it conceptually
Pro git - grasping it conceptuallyseungzzang Kim
 
Git with the flow
Git with the flowGit with the flow
Git with the flowDana White
 
Managing releases effectively through git
Managing releases effectively through gitManaging releases effectively through git
Managing releases effectively through gitMohd Farid
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git TutorialSage Sharp
 
Git tech talk
Git tech talkGit tech talk
Git tech talkrazasayed
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to GitJohn Ombagi
 
Git and GitHub workflows
Git and GitHub workflowsGit and GitHub workflows
Git and GitHub workflowsArthur Shvetsov
 
Bedjango talk about Git & GitHub
Bedjango talk about Git & GitHubBedjango talk about Git & GitHub
Bedjango talk about Git & GitHubBeDjango
 
The Fundamentals of Git
The Fundamentals of GitThe Fundamentals of Git
The Fundamentals of GitDivineOmega
 
Introduction of Git
Introduction of GitIntroduction of Git
Introduction of GitWayne Chen
 
Collaborative development with git
Collaborative development with gitCollaborative development with git
Collaborative development with gitJoseluis Laso
 

Similar to Essential git for developers (20)

Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Pro git - grasping it conceptually
Pro git - grasping it conceptuallyPro git - grasping it conceptually
Pro git - grasping it conceptually
 
Git with the flow
Git with the flowGit with the flow
Git with the flow
 
Managing releases effectively through git
Managing releases effectively through gitManaging releases effectively through git
Managing releases effectively through git
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
 
Git tech talk
Git tech talkGit tech talk
Git tech talk
 
Techoalien git
Techoalien gitTechoalien git
Techoalien git
 
Techoalien git
Techoalien gitTechoalien git
Techoalien git
 
Techoalien git
Techoalien gitTechoalien git
Techoalien git
 
3 Git
3 Git3 Git
3 Git
 
Gn unify git
Gn unify gitGn unify git
Gn unify git
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Git and GitHub workflows
Git and GitHub workflowsGit and GitHub workflows
Git and GitHub workflows
 
Git best practices workshop
Git best practices workshopGit best practices workshop
Git best practices workshop
 
Bedjango talk about Git & GitHub
Bedjango talk about Git & GitHubBedjango talk about Git & GitHub
Bedjango talk about Git & GitHub
 
The Fundamentals of Git
The Fundamentals of GitThe Fundamentals of Git
The Fundamentals of Git
 
Git kelvin
Git   kelvinGit   kelvin
Git kelvin
 
Git and Github workshop
Git and Github workshopGit and Github workshop
Git and Github workshop
 
Introduction of Git
Introduction of GitIntroduction of Git
Introduction of Git
 
Collaborative development with git
Collaborative development with gitCollaborative development with git
Collaborative development with git
 

More from Adam Culp

Putting legacy to REST with middleware
Putting legacy to REST with middlewarePutting legacy to REST with middleware
Putting legacy to REST with middlewareAdam Culp
 
Release your refactoring superpower
Release your refactoring superpowerRelease your refactoring superpower
Release your refactoring superpowerAdam Culp
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical DebtAdam Culp
 
Developing PHP Applications Faster
Developing PHP Applications FasterDeveloping PHP Applications Faster
Developing PHP Applications FasterAdam Culp
 
Containing Quality
Containing QualityContaining Quality
Containing QualityAdam Culp
 
Debugging elephpants
Debugging elephpantsDebugging elephpants
Debugging elephpantsAdam Culp
 
Zend expressive workshop
Zend expressive workshopZend expressive workshop
Zend expressive workshopAdam Culp
 
Expressive Microservice Framework Blastoff
Expressive Microservice Framework BlastoffExpressive Microservice Framework Blastoff
Expressive Microservice Framework BlastoffAdam Culp
 
Foundations of Zend Framework
Foundations of Zend FrameworkFoundations of Zend Framework
Foundations of Zend FrameworkAdam Culp
 
Accidental professional
Accidental professionalAccidental professional
Accidental professionalAdam Culp
 
Build great products
Build great productsBuild great products
Build great productsAdam Culp
 
Does Your Code Measure Up?
Does Your Code Measure Up?Does Your Code Measure Up?
Does Your Code Measure Up?Adam Culp
 
Practical PHP Deployment with Jenkins
Practical PHP Deployment with JenkinsPractical PHP Deployment with Jenkins
Practical PHP Deployment with JenkinsAdam Culp
 
Virtualizing Development
Virtualizing DevelopmentVirtualizing Development
Virtualizing DevelopmentAdam Culp
 
Refactoring Legacy Code
Refactoring Legacy CodeRefactoring Legacy Code
Refactoring Legacy CodeAdam Culp
 
Deprecated: Foundations of Zend Framework 2
Deprecated: Foundations of Zend Framework 2Deprecated: Foundations of Zend Framework 2
Deprecated: Foundations of Zend Framework 2Adam Culp
 
Refactoring 101
Refactoring 101Refactoring 101
Refactoring 101Adam Culp
 
Vagrant for Virtualized Development
Vagrant for Virtualized DevelopmentVagrant for Virtualized Development
Vagrant for Virtualized DevelopmentAdam Culp
 

More from Adam Culp (20)

Hypermedia
HypermediaHypermedia
Hypermedia
 
Putting legacy to REST with middleware
Putting legacy to REST with middlewarePutting legacy to REST with middleware
Putting legacy to REST with middleware
 
php-1701-a
php-1701-aphp-1701-a
php-1701-a
 
Release your refactoring superpower
Release your refactoring superpowerRelease your refactoring superpower
Release your refactoring superpower
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
Developing PHP Applications Faster
Developing PHP Applications FasterDeveloping PHP Applications Faster
Developing PHP Applications Faster
 
Containing Quality
Containing QualityContaining Quality
Containing Quality
 
Debugging elephpants
Debugging elephpantsDebugging elephpants
Debugging elephpants
 
Zend expressive workshop
Zend expressive workshopZend expressive workshop
Zend expressive workshop
 
Expressive Microservice Framework Blastoff
Expressive Microservice Framework BlastoffExpressive Microservice Framework Blastoff
Expressive Microservice Framework Blastoff
 
Foundations of Zend Framework
Foundations of Zend FrameworkFoundations of Zend Framework
Foundations of Zend Framework
 
Accidental professional
Accidental professionalAccidental professional
Accidental professional
 
Build great products
Build great productsBuild great products
Build great products
 
Does Your Code Measure Up?
Does Your Code Measure Up?Does Your Code Measure Up?
Does Your Code Measure Up?
 
Practical PHP Deployment with Jenkins
Practical PHP Deployment with JenkinsPractical PHP Deployment with Jenkins
Practical PHP Deployment with Jenkins
 
Virtualizing Development
Virtualizing DevelopmentVirtualizing Development
Virtualizing Development
 
Refactoring Legacy Code
Refactoring Legacy CodeRefactoring Legacy Code
Refactoring Legacy Code
 
Deprecated: Foundations of Zend Framework 2
Deprecated: Foundations of Zend Framework 2Deprecated: Foundations of Zend Framework 2
Deprecated: Foundations of Zend Framework 2
 
Refactoring 101
Refactoring 101Refactoring 101
Refactoring 101
 
Vagrant for Virtualized Development
Vagrant for Virtualized DevelopmentVagrant for Virtualized Development
Vagrant for Virtualized Development
 

Recently uploaded

UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2DianaGray10
 
Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.IPLOOK Networks
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationKnoldus Inc.
 
My key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIMy key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIVijayananda Mohire
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updateadam112203
 
.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptxHansamali Gamage
 
Where developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingWhere developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingFrancesco Corti
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc
 
3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud DataEric D. Schabell
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechProduct School
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsDianaGray10
 
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfQ4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfTejal81
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfInfopole1
 
UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3DianaGray10
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 
EMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarEMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarThousandEyes
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNeo4j
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosErol GIRAUDY
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxSatishbabu Gunukula
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and businessFrancesco Corti
 

Recently uploaded (20)

UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2
 
Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.Introduction - IPLOOK NETWORKS CO., LTD.
Introduction - IPLOOK NETWORKS CO., LTD.
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its application
 
My key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAIMy key hands-on projects in Quantum, and QAI
My key hands-on projects in Quantum, and QAI
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 update
 
.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx.NET 8 ChatBot with Azure OpenAI Services.pptx
.NET 8 ChatBot with Azure OpenAI Services.pptx
 
Where developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is goingWhere developers are challenged, what developers want and where DevEx is going
Where developers are challenged, what developers want and where DevEx is going
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
 
3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projects
 
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfQ4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdf
 
UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3UiPath Studio Web workshop Series - Day 3
UiPath Studio Web workshop Series - Day 3
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
EMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarEMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? Webinar
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4j
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenarios
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptx
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and business
 

Essential git for developers

  • 1. Essential Git For Developers By: Adam Culp Twitter: @adamculp https://joind.in/14744
  • 2. 2 Essential Git For Developers ● About me – PHP 5.3 Certified – Work at Zend Technologies – Organizer SoFloPHP (South Florida) – Organized SunshinePHP (Miami) – Long distance runner – Judo Black Belt Instructor
  • 3. 3 Essential Git For Developers ● Fan of iteration – Everything requires iteration to do well: (practice makes perfect) ● Long distance running ● Judo ● Development ● Avoid project managers ● Version Control!
  • 4. 4 Essential Git For Developers ● Why use Git? – No centralization ● No central server (unless desired) – Each clone = full repository ● Git tracks state, history, and integrity – Branching and Merging work – Fast ● Local vs Remote ● Only one .git directory – Files to be committed are “staged” first – Free and Open Source – Flexible workflow
  • 5. 5 Essential Git For Developers ● How Others Looks At Data. – As files and the changes made to each file. Version 1 Version 2 Version 3 Version 4 Version 5 File A File B File C Diff 1 Diff 1 Diff 2 Diff 1 Diff 2 Diff 2 Diff 3
  • 6. 6 Essential Git For Developers ● How Git Looks At Data. – As whole files, not files + diffs. Version 1 Version 2 Version 3 Version 4 Version 5 File A File B File C File A1 File A2 File B1 File B2 File C1 File C2 File C3 File A1 File A2 File BFile B File C2 Green means whole file, yellow means pointer to previous whole file.
  • 7. 7 Essential Git For Developers ● Subversion-Style Workflow Shared Repository Developer Developer Developer
  • 8. 8 Essential Git For Developers ● Integration Manager Workflow Blessed Repository Integration Manager Developer Public Developer Public Developer Private Developer Private
  • 9. 9 Essential Git For Developers ● Dictator and Lieutenants Workflow Blessed Repository Dictator Developer Developer Developer Developer Lieutenant Lieutenant
  • 10. 10 Essential Git For Developers ● Single Developer – One repository, everything in one basket. ● Remember to backup Developer Local Repository
  • 11. 11 Essential Git For Developers ● Each 'git clone' == full repository
  • 12. 12 Essential Git For Developers ● What is actually going on? – A bunch of repositories! Repository Repository Repository Repository
  • 13. 13 Essential Git For Developers ● But it could be: – Repositories can connect in all directions. Repository Repository Repository Repository
  • 14. 14 Essential Git For Developers ● Most common commands – git config – git init – git clone – git status – git add – git commit – git log or show – git branch – git checkout – git merge – git pull or push
  • 15. 15 Essential Git For Developers ● Help! – Adding '-h' to any command will return help on usage.
  • 16. 16 Essential Git For Developers ● git config – Easily set your information to accompany commits. – Generally a one time thing.
  • 17. 17 Essential Git For Developers ● git init – Instruct Git to track project by simply 'git init'. – No more excuses! Version all the things!
  • 18. 18 Essential Git For Developers ● git clone {repo} {destination} – Creates new repository based on another. – Cloned repository becomes “Origin”. ● Internal pointer for where it came from.
  • 19. 19 Essential Git For Developers ● Example of 'git clone' – Below we clone a repo from github. – We address the .git directory. – Specify where to put it.
  • 20. 20 Essential Git For Developers ● git status – Provides status of resources in the tracked project.
  • 21. 21 Essential Git For Developers ● git status – Below 'git status' informs us of untracked files after created.
  • 22. 22 Essential Git For Developers ● git add – Stages files to be committed.
  • 23. 23 Essential Git For Developers ● git commit – A 'git commit' includes all “staged” files. – Use '-m' to store a message with the commit. ● Or git prompts user to add a message. (using default editor)
  • 24. 24 Essential Git For Developers ● More on commits – A commit should be: ● Done OFTEN! ● Commit messages – Always included – Short – Informative ● Single commit per bug or ticket.
  • 25. 25 Essential Git For Developers ● git log – Shows history of prior commits. – We've only done one, and here it is:
  • 26. 26 Essential Git For Developers ● git show {commit hash} – Hash optional, will show previous by default. – Shows commit + diff view of files.
  • 27. 27 Essential Git For Developers ● What would a commit do? – We did a 'git add' for file #2, and modified file 1.
  • 28. 28 Essential Git For Developers ● And now? – We did a 'git add' for modified file 1.
  • 29. 29 Essential Git For Developers ● And finally? – We did a 'git add' for new file 3.
  • 30. 30 Essential Git For Developers ● After the commit. – All staged files were added. – A 'git status' reveals nothing new or different.
  • 31. 31 Essential Git For Developers ● Commits do not carry a version # – Git doesn't use numbers like 1, 2, 3... – Instead uses hashes like 6e7e6999c879f460b5e1d7e29ffe9907062ec20a
  • 32. 32 Essential Git For Developers ● Working in 'master' is bad. – Should not be working in the 'master' branch. – 'master' should be pristine version. ● Most bug free. ● Tested ● Same as “Production”
  • 33. 33 Essential Git For Developers ● git branch – Shows a list of existing branches. – The * indicates active branch.
  • 34. 34 Essential Git For Developers ● git branch {name} {branch} ● Or git checkout -b {name} {branch} – Creates new branch. – Checkout -b checks out after creation. – Below we create a 'development' branch. – New branch has same state as active/specified branch.
  • 35. 35 Essential Git For Developers ● git checkout {name} – Include “-b” flag to create new branch. – Switches to a specified branch. – Branches carry own state. – In file browser file contents different.
  • 36. 36 Essential Git For Developers ● What if? – A file has been edited, but not committed. – We are in 'development' branch. – What if we 'git checkout master'?
  • 37. 37 Essential Git For Developers ● Change branch with uncommitted files – Merges uncommitted content on checkout. ● Whether 'staged' or not. – Does NOT merge over newly created files. (changes only) – Conflicts get exciting. (Not covered in this talk.)
  • 38. 38 Essential Git For Developers ● File not actually changed – On 'git checkout development' and commit: ● File in development carries edit committed. ● File in master is reset, even though merged previously. master development
  • 39. 39 Essential Git For Developers ● But if commit done first – Commit only done on active branch. – Master branch is unchanged. ('git log' shown below) – Master files do not contain merged changes. master development
  • 40. 40 Essential Git For Developers ● git merge {branch} – Git merges specified branch into active branch. – We merge change from development to master. ● 'git checkout master' ● 'git merge development'
  • 41. 41 Essential Git For Developers ● What are “fast forward” commits? – Merges individual commits into flow as if a checkout never occurred.
  • 42. 42 Essential Git For Developers ● Ignoring – We can exclude: ● Files ● Folders ● Config files with passwords ! ! ! – Simply add excluded content to the file '.gitignore'.
  • 43. 43 Essential Git For Developers ● Typical branches for teams – Conventions: ● Testing, Staging and Master branches off limits but public. ● Development public, public to all. ● {user}-development branches local and private.
  • 44. 44 Essential Git For Developers ● Typical rules for branch usage – No code leaves {user}-development unless finished and stable. ● Developers merge to development branch...period! – Do NOT merge conflicts into any public branch.
  • 45. 45 Essential Git For Developers ● Commit procedure (origin pull/merge/push) – Before merging changes to public development: ● 'git checkout development' ● 'git pull origin development' – Should be no conflicts. ● 'git checkout {user}-development' ● 'git merge development' – Fix conflicts ● 'git checkout development' ● 'git merge {user}-development' ● 'git push origin development'
  • 46. 46 Essential Git For Developers ● Public and Private branches – Typically {user}-development branches remain private. ● The team is not aware of commits done there. ● Frequent commits encouraged. – Development, Staging, and Master are public and entire team can view state/commits. ● All developers can merge to development. ● Only authorized people can merge to staging or master.
  • 47. 47 Essential Git For Developers ● Team Developer workflow – Git is ideal for team development
  • 48. 48 Essential Git For Developers ● Team Developer workflow (private) – Project/ticket assigned, create branch ● 'git checkout development' ● 'git branch {user}-development' or 'git checkout -b {user}-development' – Start coding. – Commit often. Checkout dev. to private {user}-development Project assigned
  • 49. 49 Essential Git For Developers ● Team Developer workflow (private) – Regularly commit code. ● 'git add {filename}' X each file ● 'git commit -m {commit message}' – Regularly pull from origin. ● 'git checkout development' followed by 'git pull origin development' ● 'git checkout {user}-development' followed by 'git merge development' Checkout dev. to private {user}-development Multiple commits Coding Project assigned
  • 50. 50 Essential Git For Developers ● Team Developer workflow (private) – Development completed, ready for QA testing. ● 'git checkout development' ● 'git pull origin development' should be no conflicts. ● 'git merge {user}-development' should be no conflicts. Checkout dev. to private {user}-development Merge changes to development Multiple commits Coding Tests pass Project assigned
  • 51. 51 Essential Git For Developers ● Team QA workflow (public) – Testing done in development branch. – Failed developer picks up on {user}-development.→ – Bug fixed re-push to development.→ Testing from development Test passed Testing assigned no Return to developer flow
  • 52. 52 Essential Git For Developers ● Team QA workflow (public) – Testing done in development branch. – Success merge to staging→ ● 'git checkout staging' ● 'git pull origin staging' ● 'git merge development' ● 'git push origin staging' Testing from development Merge to staging Test passed Testing assigned yes no Return to developer flow
  • 53. 53 Essential Git For Developers ● Team Deployment Mgr. workflow (public) – Regression testing done in staging branch. – Testing failed: ● 'git branch -b {tempname}-staging' – Code to fix bug ● 'git add {files}' ● 'git commit -m {message}' Regression testing In staging Test passed Deploy assigned no Temp branch created
  • 54. 54 Essential Git For Developers ● Team Deployment Mgr. workflow (public) – Send fix back for regression testing done in staging branch. ● 'git merge staging' just to check for conflicts. ● 'git checkout staging' ● 'git merge {tempname}-staging' Regression testing In staging Test passed Deploy assigned no Temp branch created Bug fixed
  • 55. 55 Essential Git For Developers ● Team Deployment Mgr. workflow (public) – If regression tests pass: ● 'git merge master' in case of conflicts ● 'git checkout master' then 'git pull origin master' ● 'git merge staging' Regression testing In staging Merge to master Test passed Deploy assigned yes no Temp branch created Bug fixed
  • 56. 56 Essential Git For Developers ● Team Deployment Mgr. workflow (public) – All is good, create annotated tag. ● 'git tag -a v1.0 -m '{message}' (Note: 'git tag' lists all tags.) Regression testing In staging Merge to master Test passed Deploy assigned yes no Temp branch created Bug fixed Tag created
  • 57. 57 Essential Git For Developers ● Single Developer workflow (small project) – Pretty similar, but no staging. – Note: Still use {user}-development per task/project/ticket. {user}-development Merge to development Test passed Project assigned Tag created Test passed Merge to master
  • 58. 58 Essential Git For Developers ● Tools – gitk – gitx – git-cola – SmartGit – GitEye – TortoiseGit – IDE ● Eclipse – Zend Studio – Aptana ● PHPStorm ● etc.
  • 59. 59 Essential Git For Developers ● github.com – Great place to share code. – Promotes collaboration – API enhances connectivity and use – Awesome plugins – Easy to use
  • 60. 60 Essential Git For Developers ● github – how to clone locally – Standard 'git clone' command – Now have a clone local to work on. – Follow workflow as shown earlier.
  • 61. 61 Essential Git For Developers ● Conclusion – Always use source control!!! – Git is an easy solution, just 'git init'. – Plan a workflow and stick with it...ALWAYS! – 3rd party repositories = backed up – Git easy to connect to from anywhere. – Love iteration!
  • 62. 62 Essential Git For Developers ● Resources – http://nvie.com/posts/a-successful-git-branching-model/ – http://github.com – http://training.github.com/ – https://bitbucket.org/ – http://git-scm.com
  • 63. Essential Git For Developers ● Thank you! Adam Culp http://www.geekyboy.com http://RunGeekRadio.com Twitter @adamculp https://joind.in/14744 Questions?