SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
Git Source Control:
For the Rest of Us
Nolan Erck
CF.Objective 2014
About Me
● Consultant (southofshasta.com)
● Software Development, Training, Design
● Using ColdFusion since 1999 (4.x)
● Other stuff: C++, Java, jQuery, PHP, .NET, etc.
● Manager of SacInteractive (formerly Sacramento CFUG)
● Reformed Video Game Developer.
● Stuff I've Done: CycleGear.com, CastImages.com,
Fusion Events Staffing, Grim Fandango, Star Wars
Rogue Squadron, SimPark, SimSafari.
Today's Agenda
● What is “source control”?
● When/why do I need it?
● How to use Git from a GUI.
● The difference in Git and GitHub.
● Next steps:
● branching, merging, reverting.
● Demos of how to do this.
● Other info.
● Questions.
Quick show of hands
(It's okay to raise your hand, I promise.)
● Who is brand new to source control?
● Who is NOT currently using any source control
in your projects?
● Who uses .OLD or .BAK files as a way to “save
your place” before making a change?
● Who makes ZIP files to backup the last version
of your code?
Scenario 1
● You're about to make a change to your website.
● “I should save a copy of this somewhere before
I break anything.”
● Windows Explorer
● AboutUs.html ---> AboutUs.BAK
● That's good, right?
Scenario 1 (cont)
● What about when you make a second change
to AboutUs.html?
● Rename the file again
● AboutUs.HTML ---> AboutUs.OLD
● Fast-forward 6 months
● Which is the “most recent backup”, BAK or OLD?
● Can't remember, have to “diff” by hand. Boo.
But wait, it gets worse
● Do you use FTP to update the site?
● And move /wwwroot up all at once?
● AboutUs.BAK and .OLD are in now in Production.
● Http://sitename/AboutUs.OLD Is a valid URL.
● Won't be processed by ColdFusion (or Ruby, PHP, etc)
● Original source code gets sent to the browser as plain
text!
● Security issue!
Don't believe me? Here's proof.
Scenario 2
● Rob and I are splitting a project.
● I'm working in contact.html
● Rob emails me a copy of contact.html with
changes of his own.
● Which lines changed? Did he change them
before/after my edits?
● I have to manually “diff” the 2 files. Boo.
Ever had this phone call?
Client: “You MUST have made a change to
the site today! Everything was working FINE
yesterday and now there is a bug.
What did YOU break?!”
Or this one?
Client: “Remember that huge change you
made to the site last week? Well I need you to
undo it. Today. Right now. Can't you just
CLICK something and make that happen?”
If only there was a way to prevent all of these
situations from happening!
There is.
Source Control.
It doesn't have to be Git. For today's talk we'll
focus on Git with a GUI client.
(Others: Subversion, CVS, Team Foundation
Server, Visual SourceSafe, PerfForce,
Mercurial.)
Source control...
● Acts as a “librarian” and “hall monitor” for your site assets
(code, images, config files, etc).
● Is software that tracks all the changes made to files on a project
(by me, Rob, you, that guy, everyone).
● Let's us share files safely.
● No more emailing files!
● Let's us change files safely too.
● No more BAK and OLD! No more ZIPs!
● Is platform agnostic.
● Works for Windows, Mac, Linux development.
● For any kind of code you write: CF, C++, Java, iPhone,
Ruby, COBOL, PHP, QBASIC, InstallShield, whatever.
Two pieces to the software
● Client
● Server
Two pieces to the software
● Client
● Desktop app, lives on your Dev box.
● OSX: Tower, GitBox, SourceTree, SmartGit, etc.
● Windows: TortoiseGit, SmartGit, etc.
● Can use any one you want.
● Can mix/match among team members.
● Free to $50-ish.
● Can change at any time, don't have to be “married”
to 1 particular client.
Two pieces to the software
● Server
● So all team members can share files.
● A central place to do the “librarian” work.
– Keep track of who changes what, when, etc.
● GitHub, Unfuddle, BeanStalk, host your own, etc.
● Can use any one you want (doesn't HAVE to be
GitHub, that's just 1 of the vendors available).
– Git != GitHub
● Git = the protocol under the hood (e.g. CVS, Subversion)
● GitHub = a popular choice for your Git server
Server + Clients
Git Server
John
GitHub, BitBucket,
Unfuddle, etc
Paul George WWW
TortoiseGit GitBox GitBox SmartGit
(Poor Ringo...always left out.)
Adding a file to a Git Repo
● AKA the “git add” command.
● “I want Git to watch this file for changes”.
● Do it once, after you create the file.
● Just because you MAKE a file, that DOESN'T mean
Git watches it for changes.
● You MUST “add” the file to the Git repo.
● Let's look at an example....
Committing a file
● “git commit”
● Git: take a snapshot of what this file looks like
right now, for later reference.
● Do this instead of making .BAK files.
● The “committed” version of the file is stored
locally.
● Let's look at an example...
Pushing a file
● “git push”
● Git: “take the snapshot you made and copy it up
to the Git server.”
● Do this whenever the file(s) is ready to be
shared with your team, or ready for inclusion in
the latest build, etc.
● Let's look at an example...
Reverting a file
● AKA the “git revert” command.
● “Ack! I just made a huge mistake in this file.
How do I get it back to what it used to look
like?”
● Do this any time you messed up and need to
undo a change.
● Under the hood, Git protocol is the same
regardless of GUI client. The actual “thing” you
press will vary between GUI clients.
● Here's an example in TortoiseGit...
Branching
● “git branch”
● “I'm about to make a change to the site. I want
a safe way to add my changes, but undo them
quickly if something goes wrong.”
● Do this: Always.
● If you're making a change to the site, put it in its
own branch.
– Yes, even for that tiny change that's only in 1 file.
● Example time again...
Merging Branches
● “git merge”
● “My new feature has been blessed by QA as
bug free and is ready to be put on the Live
server”.
● (Or combined with other features for the next build.)
● Let's look at an example...
Common Practices
● Make a branch called “Master” for what the Production server
should look like.
● Don't actually write code in this branch.
– Write in other branches, then merge them into Master.
● Anytime I “pull from Master”, I get an exact copy of what's on
the Live server.
● Make a branch called “QA”. As bugs are fixed, merge them into
QA.
● When everything in QA looks correct, merge it into “master”.
● Don't be afraid to make “temporary branches” to try out new
ideas. There is no harm in making/deleting new branches.
Other Resources
● Pro Git Book
● FREE!
● http://git-scm.com/book
● Good info, examples are command-line.
● Tim Cunningham's Git presos and blog entries
(cfmumbojumbo.com)
● CF Hour Podcast, episode 118
● Lots of (short) tutorial videos on YouTube
● Google
Questions? Comments?
Ways to reach me...
Email: nolan.erck@gmail.com
Twitter: @southofshasta
Blog: southofshasta.com
Thanks!

Mais conteúdo relacionado

Mais procurados

Git For The Android Developer
Git For The Android DeveloperGit For The Android Developer
Git For The Android DeveloperEffective
 
Git for Android Developers
Git for Android DevelopersGit for Android Developers
Git for Android DevelopersTony Hillerson
 
Go with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress WorkflowGo with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress WorkflowAnn Cascarano
 
PUG Romagna - Pipeline + Deployer PHP
PUG Romagna - Pipeline + Deployer PHPPUG Romagna - Pipeline + Deployer PHP
PUG Romagna - Pipeline + Deployer PHPGiuseppe Morelli
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development WorkflowVũ Nguyễn
 
Git workflow in agile development
Git workflow in agile developmentGit workflow in agile development
Git workflow in agile developmentZack Siri
 
COSCUP 2016: Project 52 每週一個小專案來學習 Golang
COSCUP 2016: Project 52 每週一個小專案來學習 GolangCOSCUP 2016: Project 52 每週一個小專案來學習 Golang
COSCUP 2016: Project 52 每週一個小專案來學習 GolangEvan Lin
 
Go with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress WorkflowGo with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress WorkflowAnn Cascarano
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practiceMajid Hosseini
 
Ignite Devops Fast Moving Software
Ignite Devops Fast Moving SoftwareIgnite Devops Fast Moving Software
Ignite Devops Fast Moving SoftwareSpamapS
 
7 recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...7 recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...César Hernández
 
Successful Joomla migrations that don't hurt Search Engine Rankings
Successful Joomla migrations that don't hurt Search Engine RankingsSuccessful Joomla migrations that don't hurt Search Engine Rankings
Successful Joomla migrations that don't hurt Search Engine RankingsJoomla Day South Africa
 
Why Your Site is Slow: Performance Answers for Your Clients
Why Your Site is Slow: Performance Answers for Your ClientsWhy Your Site is Slow: Performance Answers for Your Clients
Why Your Site is Slow: Performance Answers for Your ClientsPantheon
 
Open Source Collaboration With Git And Git Hub
Open Source Collaboration With Git And Git HubOpen Source Collaboration With Git And Git Hub
Open Source Collaboration With Git And Git HubNick Quaranto
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsMichael Lihs
 

Mais procurados (20)

Git For The Android Developer
Git For The Android DeveloperGit For The Android Developer
Git For The Android Developer
 
Juc boston2014.pptx
Juc boston2014.pptxJuc boston2014.pptx
Juc boston2014.pptx
 
Up GitLab Presentation 2015
Up GitLab Presentation 2015Up GitLab Presentation 2015
Up GitLab Presentation 2015
 
Git for Android Developers
Git for Android DevelopersGit for Android Developers
Git for Android Developers
 
Sculpin
SculpinSculpin
Sculpin
 
Go with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress WorkflowGo with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress Workflow
 
PUG Romagna - Pipeline + Deployer PHP
PUG Romagna - Pipeline + Deployer PHPPUG Romagna - Pipeline + Deployer PHP
PUG Romagna - Pipeline + Deployer PHP
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development Workflow
 
Git workflow in agile development
Git workflow in agile developmentGit workflow in agile development
Git workflow in agile development
 
COSCUP 2016: Project 52 每週一個小專案來學習 Golang
COSCUP 2016: Project 52 每週一個小專案來學習 GolangCOSCUP 2016: Project 52 每週一個小專案來學習 Golang
COSCUP 2016: Project 52 每週一個小專案來學習 Golang
 
Go with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress WorkflowGo with the Flow - A Guide to a WordPress Workflow
Go with the Flow - A Guide to a WordPress Workflow
 
Git & Github
Git & GithubGit & Github
Git & Github
 
Git and git workflow best practice
Git and git workflow best practiceGit and git workflow best practice
Git and git workflow best practice
 
Ignite Devops Fast Moving Software
Ignite Devops Fast Moving SoftwareIgnite Devops Fast Moving Software
Ignite Devops Fast Moving Software
 
7 recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...7 recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
 
Blogging for hackers (english)
Blogging for hackers (english)Blogging for hackers (english)
Blogging for hackers (english)
 
Successful Joomla migrations that don't hurt Search Engine Rankings
Successful Joomla migrations that don't hurt Search Engine RankingsSuccessful Joomla migrations that don't hurt Search Engine Rankings
Successful Joomla migrations that don't hurt Search Engine Rankings
 
Why Your Site is Slow: Performance Answers for Your Clients
Why Your Site is Slow: Performance Answers for Your ClientsWhy Your Site is Slow: Performance Answers for Your Clients
Why Your Site is Slow: Performance Answers for Your Clients
 
Open Source Collaboration With Git And Git Hub
Open Source Collaboration With Git And Git HubOpen Source Collaboration With Git And Git Hub
Open Source Collaboration With Git And Git Hub
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
 

Semelhante a Git Source Control for Beginners

Introduction to git & WordPress
Introduction to git & WordPressIntroduction to git & WordPress
Introduction to git & WordPressJosh Lee
 
Collaborative development with git
Collaborative development with gitCollaborative development with git
Collaborative development with gitJoseluis Laso
 
Brief tutorial on Git
Brief tutorial on GitBrief tutorial on Git
Brief tutorial on Git聖文 鄭
 
Improve the deployment process step by step
Improve the deployment process step by stepImprove the deployment process step by step
Improve the deployment process step by stepDaniel Fahlke
 
Using Git with WordPress - Presented by Nigel Rodgers.
Using Git with WordPress - Presented by Nigel Rodgers.Using Git with WordPress - Presented by Nigel Rodgers.
Using Git with WordPress - Presented by Nigel Rodgers.WordCamp Harare
 
You're doing it wrong! Git it right!
You're doing it wrong! Git it right!You're doing it wrong! Git it right!
You're doing it wrong! Git it right!Cory Webb
 
Microservices Development Process at Predix.io
Microservices Development Process at Predix.ioMicroservices Development Process at Predix.io
Microservices Development Process at Predix.ioConstantine Grigel
 
BLUG 2012 Version Control for Notes Developers
BLUG 2012 Version Control for Notes DevelopersBLUG 2012 Version Control for Notes Developers
BLUG 2012 Version Control for Notes DevelopersMartin Jinoch
 
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...Nico Meisenzahl
 
Buildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in pythonBuildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in pythonCodeSyntax
 
Lesson 0.5 Introduction to Git (1).pptx
Lesson 0.5 Introduction to Git (1).pptxLesson 0.5 Introduction to Git (1).pptx
Lesson 0.5 Introduction to Git (1).pptxAliSaeed579036
 
How to plan and define your CI-CD pipeline
How to plan and define your CI-CD pipelineHow to plan and define your CI-CD pipeline
How to plan and define your CI-CD pipelineElasTest Project
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsGR8Conf
 
Git 101: Force-sensitive to Jedi padawan
Git 101: Force-sensitive to Jedi padawanGit 101: Force-sensitive to Jedi padawan
Git 101: Force-sensitive to Jedi padawanJames Ford
 
Spark and S3 with Ryan Blue
Spark and S3 with Ryan BlueSpark and S3 with Ryan Blue
Spark and S3 with Ryan BlueDatabricks
 
Detecting secrets in code committed to gitlab (in real time)
Detecting secrets in code committed to gitlab (in real time)Detecting secrets in code committed to gitlab (in real time)
Detecting secrets in code committed to gitlab (in real time)Chandrapal Badshah
 
Git Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-FlowGit Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-FlowMikhail Melnik
 
Survival of the Continuist
Survival of the ContinuistSurvival of the Continuist
Survival of the ContinuistPaul Blundell
 

Semelhante a Git Source Control for Beginners (20)

DevOps Workshop Part 1
DevOps Workshop Part 1DevOps Workshop Part 1
DevOps Workshop Part 1
 
Introduction to git & WordPress
Introduction to git & WordPressIntroduction to git & WordPress
Introduction to git & WordPress
 
Collaborative development with git
Collaborative development with gitCollaborative development with git
Collaborative development with git
 
Brief tutorial on Git
Brief tutorial on GitBrief tutorial on Git
Brief tutorial on Git
 
Improve the deployment process step by step
Improve the deployment process step by stepImprove the deployment process step by step
Improve the deployment process step by step
 
Using Git with WordPress - Presented by Nigel Rodgers.
Using Git with WordPress - Presented by Nigel Rodgers.Using Git with WordPress - Presented by Nigel Rodgers.
Using Git with WordPress - Presented by Nigel Rodgers.
 
You're doing it wrong! Git it right!
You're doing it wrong! Git it right!You're doing it wrong! Git it right!
You're doing it wrong! Git it right!
 
Microservices Development Process at Predix.io
Microservices Development Process at Predix.ioMicroservices Development Process at Predix.io
Microservices Development Process at Predix.io
 
BLUG 2012 Version Control for Notes Developers
BLUG 2012 Version Control for Notes DevelopersBLUG 2012 Version Control for Notes Developers
BLUG 2012 Version Control for Notes Developers
 
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
Gitlab Commit: How Containerized GitLab CI Pipelines Can Help You Streamline ...
 
Buildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in pythonBuildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in python
 
Lesson 0.5 Introduction to Git (1).pptx
Lesson 0.5 Introduction to Git (1).pptxLesson 0.5 Introduction to Git (1).pptx
Lesson 0.5 Introduction to Git (1).pptx
 
How to plan and define your CI-CD pipeline
How to plan and define your CI-CD pipelineHow to plan and define your CI-CD pipeline
How to plan and define your CI-CD pipeline
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails Projects
 
Git 101: Force-sensitive to Jedi padawan
Git 101: Force-sensitive to Jedi padawanGit 101: Force-sensitive to Jedi padawan
Git 101: Force-sensitive to Jedi padawan
 
Git Basics
Git BasicsGit Basics
Git Basics
 
Spark and S3 with Ryan Blue
Spark and S3 with Ryan BlueSpark and S3 with Ryan Blue
Spark and S3 with Ryan Blue
 
Detecting secrets in code committed to gitlab (in real time)
Detecting secrets in code committed to gitlab (in real time)Detecting secrets in code committed to gitlab (in real time)
Detecting secrets in code committed to gitlab (in real time)
 
Git Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-FlowGit Series. Episode 3. Git Flow and Github-Flow
Git Series. Episode 3. Git Flow and Github-Flow
 
Survival of the Continuist
Survival of the ContinuistSurvival of the Continuist
Survival of the Continuist
 

Mais de ColdFusionConference

Building better SQL Server Databases
Building better SQL Server DatabasesBuilding better SQL Server Databases
Building better SQL Server DatabasesColdFusionConference
 
API Economy, Realizing the Business Value of APIs
API Economy, Realizing the Business Value of APIsAPI Economy, Realizing the Business Value of APIs
API Economy, Realizing the Business Value of APIsColdFusionConference
 
Crafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectCrafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectColdFusionConference
 
Security And Access Control For APIS using CF API Manager
Security And Access Control For APIS using CF API ManagerSecurity And Access Control For APIS using CF API Manager
Security And Access Control For APIS using CF API ManagerColdFusionConference
 
Monetizing Business Models: ColdFusion and APIS
Monetizing Business Models: ColdFusion and APISMonetizing Business Models: ColdFusion and APIS
Monetizing Business Models: ColdFusion and APISColdFusionConference
 
Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016ColdFusionConference
 
Developer Insights for Application Upgrade to ColdFusion 2016
Developer Insights for Application Upgrade to ColdFusion 2016Developer Insights for Application Upgrade to ColdFusion 2016
Developer Insights for Application Upgrade to ColdFusion 2016ColdFusionConference
 
ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995ColdFusionConference
 
Super Fast Application development with Mura CMS
Super Fast Application development with Mura CMSSuper Fast Application development with Mura CMS
Super Fast Application development with Mura CMSColdFusionConference
 
Build your own secure and real-time dashboard for mobile and web
Build your own secure and real-time dashboard for mobile and webBuild your own secure and real-time dashboard for mobile and web
Build your own secure and real-time dashboard for mobile and webColdFusionConference
 

Mais de ColdFusionConference (20)

Api manager preconference
Api manager preconferenceApi manager preconference
Api manager preconference
 
Cf ppt vsr
Cf ppt vsrCf ppt vsr
Cf ppt vsr
 
Building better SQL Server Databases
Building better SQL Server DatabasesBuilding better SQL Server Databases
Building better SQL Server Databases
 
API Economy, Realizing the Business Value of APIs
API Economy, Realizing the Business Value of APIsAPI Economy, Realizing the Business Value of APIs
API Economy, Realizing the Business Value of APIs
 
Don't just pdf, Smart PDF
Don't just pdf, Smart PDFDon't just pdf, Smart PDF
Don't just pdf, Smart PDF
 
Crafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectCrafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an Architect
 
Security And Access Control For APIS using CF API Manager
Security And Access Control For APIS using CF API ManagerSecurity And Access Control For APIS using CF API Manager
Security And Access Control For APIS using CF API Manager
 
Monetizing Business Models: ColdFusion and APIS
Monetizing Business Models: ColdFusion and APISMonetizing Business Models: ColdFusion and APIS
Monetizing Business Models: ColdFusion and APIS
 
Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016
 
ColdFusion in Transit action
ColdFusion in Transit actionColdFusion in Transit action
ColdFusion in Transit action
 
Developer Insights for Application Upgrade to ColdFusion 2016
Developer Insights for Application Upgrade to ColdFusion 2016Developer Insights for Application Upgrade to ColdFusion 2016
Developer Insights for Application Upgrade to ColdFusion 2016
 
Where is cold fusion headed
Where is cold fusion headedWhere is cold fusion headed
Where is cold fusion headed
 
ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995
 
Instant ColdFusion with Vagrant
Instant ColdFusion with VagrantInstant ColdFusion with Vagrant
Instant ColdFusion with Vagrant
 
Restful services with ColdFusion
Restful services with ColdFusionRestful services with ColdFusion
Restful services with ColdFusion
 
Super Fast Application development with Mura CMS
Super Fast Application development with Mura CMSSuper Fast Application development with Mura CMS
Super Fast Application development with Mura CMS
 
Build your own secure and real-time dashboard for mobile and web
Build your own secure and real-time dashboard for mobile and webBuild your own secure and real-time dashboard for mobile and web
Build your own secure and real-time dashboard for mobile and web
 
Why Everyone else writes bad code
Why Everyone else writes bad codeWhy Everyone else writes bad code
Why Everyone else writes bad code
 
Securing applications
Securing applicationsSecuring applications
Securing applications
 
Testing automaton
Testing automatonTesting automaton
Testing automaton
 

Último

What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?Watsoo Telematics
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 

Último (20)

What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 

Git Source Control for Beginners

  • 1. Git Source Control: For the Rest of Us Nolan Erck CF.Objective 2014
  • 2. About Me ● Consultant (southofshasta.com) ● Software Development, Training, Design ● Using ColdFusion since 1999 (4.x) ● Other stuff: C++, Java, jQuery, PHP, .NET, etc. ● Manager of SacInteractive (formerly Sacramento CFUG) ● Reformed Video Game Developer. ● Stuff I've Done: CycleGear.com, CastImages.com, Fusion Events Staffing, Grim Fandango, Star Wars Rogue Squadron, SimPark, SimSafari.
  • 3. Today's Agenda ● What is “source control”? ● When/why do I need it? ● How to use Git from a GUI. ● The difference in Git and GitHub. ● Next steps: ● branching, merging, reverting. ● Demos of how to do this. ● Other info. ● Questions.
  • 4. Quick show of hands (It's okay to raise your hand, I promise.) ● Who is brand new to source control? ● Who is NOT currently using any source control in your projects? ● Who uses .OLD or .BAK files as a way to “save your place” before making a change? ● Who makes ZIP files to backup the last version of your code?
  • 5. Scenario 1 ● You're about to make a change to your website. ● “I should save a copy of this somewhere before I break anything.” ● Windows Explorer ● AboutUs.html ---> AboutUs.BAK ● That's good, right?
  • 6. Scenario 1 (cont) ● What about when you make a second change to AboutUs.html? ● Rename the file again ● AboutUs.HTML ---> AboutUs.OLD ● Fast-forward 6 months ● Which is the “most recent backup”, BAK or OLD? ● Can't remember, have to “diff” by hand. Boo.
  • 7. But wait, it gets worse ● Do you use FTP to update the site? ● And move /wwwroot up all at once? ● AboutUs.BAK and .OLD are in now in Production. ● Http://sitename/AboutUs.OLD Is a valid URL. ● Won't be processed by ColdFusion (or Ruby, PHP, etc) ● Original source code gets sent to the browser as plain text! ● Security issue!
  • 8. Don't believe me? Here's proof.
  • 9. Scenario 2 ● Rob and I are splitting a project. ● I'm working in contact.html ● Rob emails me a copy of contact.html with changes of his own. ● Which lines changed? Did he change them before/after my edits? ● I have to manually “diff” the 2 files. Boo.
  • 10. Ever had this phone call? Client: “You MUST have made a change to the site today! Everything was working FINE yesterday and now there is a bug. What did YOU break?!”
  • 11. Or this one? Client: “Remember that huge change you made to the site last week? Well I need you to undo it. Today. Right now. Can't you just CLICK something and make that happen?”
  • 12. If only there was a way to prevent all of these situations from happening!
  • 13. There is. Source Control. It doesn't have to be Git. For today's talk we'll focus on Git with a GUI client. (Others: Subversion, CVS, Team Foundation Server, Visual SourceSafe, PerfForce, Mercurial.)
  • 14. Source control... ● Acts as a “librarian” and “hall monitor” for your site assets (code, images, config files, etc). ● Is software that tracks all the changes made to files on a project (by me, Rob, you, that guy, everyone). ● Let's us share files safely. ● No more emailing files! ● Let's us change files safely too. ● No more BAK and OLD! No more ZIPs! ● Is platform agnostic. ● Works for Windows, Mac, Linux development. ● For any kind of code you write: CF, C++, Java, iPhone, Ruby, COBOL, PHP, QBASIC, InstallShield, whatever.
  • 15. Two pieces to the software ● Client ● Server
  • 16. Two pieces to the software ● Client ● Desktop app, lives on your Dev box. ● OSX: Tower, GitBox, SourceTree, SmartGit, etc. ● Windows: TortoiseGit, SmartGit, etc. ● Can use any one you want. ● Can mix/match among team members. ● Free to $50-ish. ● Can change at any time, don't have to be “married” to 1 particular client.
  • 17. Two pieces to the software ● Server ● So all team members can share files. ● A central place to do the “librarian” work. – Keep track of who changes what, when, etc. ● GitHub, Unfuddle, BeanStalk, host your own, etc. ● Can use any one you want (doesn't HAVE to be GitHub, that's just 1 of the vendors available). – Git != GitHub ● Git = the protocol under the hood (e.g. CVS, Subversion) ● GitHub = a popular choice for your Git server
  • 18. Server + Clients Git Server John GitHub, BitBucket, Unfuddle, etc Paul George WWW TortoiseGit GitBox GitBox SmartGit (Poor Ringo...always left out.)
  • 19. Adding a file to a Git Repo ● AKA the “git add” command. ● “I want Git to watch this file for changes”. ● Do it once, after you create the file. ● Just because you MAKE a file, that DOESN'T mean Git watches it for changes. ● You MUST “add” the file to the Git repo. ● Let's look at an example....
  • 20. Committing a file ● “git commit” ● Git: take a snapshot of what this file looks like right now, for later reference. ● Do this instead of making .BAK files. ● The “committed” version of the file is stored locally. ● Let's look at an example...
  • 21. Pushing a file ● “git push” ● Git: “take the snapshot you made and copy it up to the Git server.” ● Do this whenever the file(s) is ready to be shared with your team, or ready for inclusion in the latest build, etc. ● Let's look at an example...
  • 22. Reverting a file ● AKA the “git revert” command. ● “Ack! I just made a huge mistake in this file. How do I get it back to what it used to look like?” ● Do this any time you messed up and need to undo a change. ● Under the hood, Git protocol is the same regardless of GUI client. The actual “thing” you press will vary between GUI clients. ● Here's an example in TortoiseGit...
  • 23. Branching ● “git branch” ● “I'm about to make a change to the site. I want a safe way to add my changes, but undo them quickly if something goes wrong.” ● Do this: Always. ● If you're making a change to the site, put it in its own branch. – Yes, even for that tiny change that's only in 1 file. ● Example time again...
  • 24. Merging Branches ● “git merge” ● “My new feature has been blessed by QA as bug free and is ready to be put on the Live server”. ● (Or combined with other features for the next build.) ● Let's look at an example...
  • 25. Common Practices ● Make a branch called “Master” for what the Production server should look like. ● Don't actually write code in this branch. – Write in other branches, then merge them into Master. ● Anytime I “pull from Master”, I get an exact copy of what's on the Live server. ● Make a branch called “QA”. As bugs are fixed, merge them into QA. ● When everything in QA looks correct, merge it into “master”. ● Don't be afraid to make “temporary branches” to try out new ideas. There is no harm in making/deleting new branches.
  • 26. Other Resources ● Pro Git Book ● FREE! ● http://git-scm.com/book ● Good info, examples are command-line. ● Tim Cunningham's Git presos and blog entries (cfmumbojumbo.com) ● CF Hour Podcast, episode 118 ● Lots of (short) tutorial videos on YouTube ● Google
  • 27. Questions? Comments? Ways to reach me... Email: nolan.erck@gmail.com Twitter: @southofshasta Blog: southofshasta.com Thanks!