SlideShare a Scribd company logo
Git for Force.com Developers
Managing code and Collaborating on projects
John Stevenson
Developer Evangelist
Salesforce.com
@jr0cket
Safe harbor
Safe harbor statement under the Private Securities Litigation Reform Act of 1995:
This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties
materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results
expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be
deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other
financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any
statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services.
The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new
functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our
operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any
litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our
relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of
our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to
larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is
included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent
fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor
Information section of our Web site.
Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently
available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions
based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these
forward-looking statements.
What is this talk about
Understanding the value of Git
Taking your first steps Git
Using Git for Force.com projects
Collaborating with Git & Github
The value of Git
Understanding the value of Git
Manage your code changes over time
- understanding which version of your code is deployed
- rollback & compare to earlier versions
Experiment with code using branching
- branches are easily thrown away or merged if they are valuable
Collaborate easily
- share code commits using distributed nature of Git
Getting Started with Git
Taking your first steps Git
Install Git

http://git-scm.com/

Identify
yourself to git

git config --global user.name “”

Create your
first repository

git config --global user.email “”
git init
Dreamforce 13 developer session: Git for Force.com developers
Salesforce Git Cheat Sheet available in the
Developer Library
Dreamforce 13 developer session: Git for Force.com developers
The common Git commands
Creating a Git repository locally
Create a place to manage your changes
- stored in a folder called .git

git init
Removing the .git folder from your project removes any version
control and you will loose your change history
Adding files
You can tell git which file(s) you want to make
part of the next commit (version)
- either a specific file name or pattern, or using . every change
is added
git add filename
git add .
Understanding what has changed
Git Status gives an overview of local file changes
- you will use this command very often

git status
Git status helps you keep track of your changes and which ones
to make part of the next commit.
Creating a commit (version)
Create a commit with all the files in staging
- providing a message to describe this commit

git commit -m “useful commit message”
Commit messages help the team quickly review changes and
versions
Tracing your commits with Git log
Quickly review your change history
- this is where good commit messages speed things up

git log
git log --oneline --graph --decorate
The default output of Git Log is basic, if you use the command
line then create an alias with your preferred options
Create an alias for git log
Save yourself some typing by creating aliases
- these are saved in the file ~/.gitconfig

git config alias.lg
“log –oneline --graph –decorate”
You can also edit the ~/.gitconf file directly (if you are careful)
Seeing what code has changed
Compare your working files with existing commits
- helps you understand what changed, what should be committed next

git diff
git diff --cached
The --cached option compares the working directory with the
staged files rather than committed changes.
Dreamforce 13 developer session: Git for Force.com developers
Staging and committing
Staging allows you to group changes across multiple files easily
- easier to un-stage files than remove from a commit
- gives another step to manage and compare changes
A Staged file is over-written when you “git add” the same file
- staging does not create a version
- commit when you have a meaningful (set of) change(s)
Share your changes with others
We work in teams, so we can share our commits
- via Github, an internal Git server or directly between developers

git push repository branch
git archive my-project.zip
An archive file (.tar or .zip) will contain the entire history of your
code by default
Using Git with Force.com IDE
Getting Force.com IDE
Download Eclipse version 4.2 or 4.3
- get the Java Developer edition

Add the Force.com IDE plugin
Eclipse uses a plugin called EGit to work with local and remote
repositories, this is part of the Java Developer version
Identifying yourself to Git with Force.com IDE
You will be prompted for your user information when you create
your first commit
Identifying yourself to Git with Force.com IDE
Force.com IDE will use ~/.gitconfig if it already exists
Using Git for Force.com projects
Window > Open Perspective > Git repository exploring
Creating a repository with Force.com IDE
Creating a repository with Force.com IDE
Provide the location and name for your local repository

Don’t select a bare repository as you will not be able to use a working directory
Creating a repository with Force.com IDE
Using Git & Force.com IDE
with an Apex project
Using the Apex Workbook as the example project
Creating a Developer Org
Create a new developer Org
- via developer.force.com
Install a package to create the custom objects our Apex code is
going to work with
- http://bit.ly/ApexWorkbookPackage1_4
Load data into your Developer Org
Open the Developer Console
1) click Debug > Open Execute Anonymous Window
2) the Enter Apex Code window is displayed
3) Enter the following apex code and execute
ApexWorkbook.loadData();
Creating a new project in Force.com IDE
Change to the Force.com Perspective
See the newly created project
Create your first Apex class
Code your Apex class
New Class files marked as untracked
New files and their parent folders are marked with ?
Adding the HelloWorld class to Git
Switch to Git Repository Exploring perspective
Right-click the file name and select Add to Git index
Comparing additional changes with staging
Committing your new code locally
Enter a useful commit message and press commit
Syncronize your changes with your Org
View the local commit history
View details of a commit
Github
Social Coding
Collaborating with Github
Collaborate as a team
Work on Open Source projects
Get contributions from anyone in the world
Include code review into your change management
Dreamforce 13 developer session: Git for Force.com developers
Creating, Forking & Cloning
Creating a repository & Forking a repository
- via the Github website
Cloning a repository (get a local copy)
git clone alias repository-address
Sharing changes back to Github
Git Push sends all commits that are only in your local
repository to Github
Specify with repository (alias name) and branch you want to share
git push alias branch
Cloning a repository in Force.com IDE
Tips when using
Github & Force.com IDE
Be wary of what you name your project
Project & Git repository names should match
A repository on Github has a web address (URL)
- avoid using spaces and special characters
Suggested approach
- create your repository on Github first
- clone your github repository to your laptop
- create a project in Force.com
Commit changes before sync’ing
Commit changes before syncing or merging with your org
- ensure you don’t loose local changes
- commit before using “Save to Server” or “Synchronize with
Server”
Create a branch if you are not sure you want to keep your code
changes
- or use “git stash” if you have many unrelated changes
Drive all changes locally
Avoid making changes directly on the Org
- or sync changes to locally as soon as you make them
Changes on the server are too easy to forget
- can make merging changes more complicated
- more likelihood of merge conflicts, meaning more work for the
team
Where to go next
try.git.com – free online interactive training
Git Visual Cheetsheet – interactive command reference
Salesforce Git Cheatsheet - available at Dreamforce in the
Developer Library
Practice !
Dreamforce 13 developer session: Git for Force.com developers
Thank you
John Stevenson
Developer Evangelist
@jr0cket

git-scm.com
try.github.com
developer.force.com
blog.jr0cket.co.uk
Dreamforce 13 developer session: Git for Force.com developers

More Related Content

What's hot (20)

PDF
TDX19 - Accelerate DevOps with GitLab and Salesforce
Doug Ayers
 
PPTX
Continuous Integration In The Cloud Final (1)
Alexis Williams
 
PDF
Best Practices for Successful Deployment
Salesforce Developers
 
PDF
Managing Change With A Sensible Sandbox Architecture
Alexander Sutherland
 
PPTX
Scaling Continuous Integration for Puppet
Salesforce Engineering
 
PPTX
Dependency Injection with the Force DI Framework
Doug Ayers
 
PDF
Continuous Integration and Testing with Branch Orgs
Salesforce Developers
 
PDF
Salesforce API Series: Release Management with the Metadata API webinar
Salesforce Developers
 
PPTX
Design patterns for salesforce app decomposition
Sai Jithesh ☁️
 
PDF
Webinar: From Sandbox to Production: Demystifying Force.com Release Managemen...
Salesforce Developers
 
PDF
5 Essentials for Simplifiied Release Management and Continuous Delivery
Salesforce Developers
 
PDF
Salesforce Release Management - Best Practices and Tools for Deployment
Salesforce Developers
 
PPTX
How Open Source Embiggens Salesforce.com
Salesforce Engineering
 
PPTX
The definitive guide to salesforce sandbox flosum
Flosum
 
PPTX
DevOps in Salesforce AppCloud
rsg00usa
 
PPTX
Salesforce Continuous Integration with AutoRABIT
Vishnu Raju Datla
 
PDF
Introduction to Enterprise-Release Engineering on the Salesforce Platform
Salesforce Developers
 
PDF
CodeLive with Adam Daw - Building a mobile friendly geolocation aware candy t...
JackGuo20
 
PDF
Continuous Delivery (Internet-Briefing 2012-04-03)
Netcetera
 
PPT
Under the Hood of Sandbox Templates
Salesforce Developers
 
TDX19 - Accelerate DevOps with GitLab and Salesforce
Doug Ayers
 
Continuous Integration In The Cloud Final (1)
Alexis Williams
 
Best Practices for Successful Deployment
Salesforce Developers
 
Managing Change With A Sensible Sandbox Architecture
Alexander Sutherland
 
Scaling Continuous Integration for Puppet
Salesforce Engineering
 
Dependency Injection with the Force DI Framework
Doug Ayers
 
Continuous Integration and Testing with Branch Orgs
Salesforce Developers
 
Salesforce API Series: Release Management with the Metadata API webinar
Salesforce Developers
 
Design patterns for salesforce app decomposition
Sai Jithesh ☁️
 
Webinar: From Sandbox to Production: Demystifying Force.com Release Managemen...
Salesforce Developers
 
5 Essentials for Simplifiied Release Management and Continuous Delivery
Salesforce Developers
 
Salesforce Release Management - Best Practices and Tools for Deployment
Salesforce Developers
 
How Open Source Embiggens Salesforce.com
Salesforce Engineering
 
The definitive guide to salesforce sandbox flosum
Flosum
 
DevOps in Salesforce AppCloud
rsg00usa
 
Salesforce Continuous Integration with AutoRABIT
Vishnu Raju Datla
 
Introduction to Enterprise-Release Engineering on the Salesforce Platform
Salesforce Developers
 
CodeLive with Adam Daw - Building a mobile friendly geolocation aware candy t...
JackGuo20
 
Continuous Delivery (Internet-Briefing 2012-04-03)
Netcetera
 
Under the Hood of Sandbox Templates
Salesforce Developers
 

Similar to Dreamforce 13 developer session: Git for Force.com developers (20)

PPT
Dreamforce14 Metadata Management with Git Version Control
John Stevenson
 
PPTX
Git/Github & Salesforce
Gordon Bockus
 
PPTX
Code repository management
Cloud Analogy
 
PDF
Git Version Control for the Complete N00b by Adam LaBarge
East Bay WordPress Meetup
 
PDF
Git Mastery
ShehryarSH1
 
PDF
[Perforce] Git Fusion
Perforce
 
PDF
Git & version control crash course
Eslam Saeed
 
PPTX
Git Series - Part 1
Mohamed Abdeen
 
PPTX
Basics of git
Ahmed Al-sabsab
 
PPTX
EdTechJoker Spring 2020 - Lecture 2 - Git
Bryan Ollendyke
 
PPTX
Git and Github.pptx
aymanessam16
 
PPTX
Version Control with Git
Sahil Agarwal
 
PPT
Open up your platform with Open Source and GitHub
Scott Graham
 
PDF
Intro to Gitflow
Ben Speakmon
 
PPTX
Git Basics for Software Version Management
ishanmittal49
 
PPTX
Do you git it
Hridyesh Bisht
 
PPTX
Sample From Ramesh
Ramesh Kumar
 
PPTX
Introduction to Git
Callon Campbell
 
PDF
Harvard ABCD-WWW Git presentation
Jeff Byrnes
 
PDF
The Junior Developer Survival Guide - GDI Ann Arbor 2/10/15
James York
 
Dreamforce14 Metadata Management with Git Version Control
John Stevenson
 
Git/Github & Salesforce
Gordon Bockus
 
Code repository management
Cloud Analogy
 
Git Version Control for the Complete N00b by Adam LaBarge
East Bay WordPress Meetup
 
Git Mastery
ShehryarSH1
 
[Perforce] Git Fusion
Perforce
 
Git & version control crash course
Eslam Saeed
 
Git Series - Part 1
Mohamed Abdeen
 
Basics of git
Ahmed Al-sabsab
 
EdTechJoker Spring 2020 - Lecture 2 - Git
Bryan Ollendyke
 
Git and Github.pptx
aymanessam16
 
Version Control with Git
Sahil Agarwal
 
Open up your platform with Open Source and GitHub
Scott Graham
 
Intro to Gitflow
Ben Speakmon
 
Git Basics for Software Version Management
ishanmittal49
 
Do you git it
Hridyesh Bisht
 
Sample From Ramesh
Ramesh Kumar
 
Introduction to Git
Callon Campbell
 
Harvard ABCD-WWW Git presentation
Jeff Byrnes
 
The Junior Developer Survival Guide - GDI Ann Arbor 2/10/15
James York
 
Ad

More from John Stevenson (20)

PDF
ClojureX Conference 2017 - 10 amazing years of Clojure
John Stevenson
 
PDF
Confessions of a developer community builder
John Stevenson
 
PDF
Progscon 2017: Taming the wild fronteer - Adventures in Clojurescript
John Stevenson
 
PDF
Introduction to Functional Reactive Web with Clojurescript
John Stevenson
 
PDF
Thinking Functionally with Clojure
John Stevenson
 
PDF
Communication improbable
John Stevenson
 
PDF
Getting into public speaking at conferences
John Stevenson
 
PDF
Functional web with clojure
John Stevenson
 
PDF
Get into Functional Programming with Clojure
John Stevenson
 
PDF
Guiding people into Clojure
John Stevenson
 
PDF
Git and github - Verson Control for the Modern Developer
John Stevenson
 
PDF
Get Functional Programming with Clojure
John Stevenson
 
PDF
So you want to run a developer event, are you crazy?
John Stevenson
 
PPTX
Trailhead live - Overview of Salesforce App Cloud
John Stevenson
 
PDF
Clojure for Java developers
John Stevenson
 
PPTX
Introducing the Salesforce platform
John Stevenson
 
ODP
Getting started with Clojure
John Stevenson
 
PPT
Salesforce Summer of Hacks London - Introduction
John Stevenson
 
PPTX
Heroku Introduction: Scaling customer facing apps & services
John Stevenson
 
PPT
Developers guide to the Salesforce1 Platform
John Stevenson
 
ClojureX Conference 2017 - 10 amazing years of Clojure
John Stevenson
 
Confessions of a developer community builder
John Stevenson
 
Progscon 2017: Taming the wild fronteer - Adventures in Clojurescript
John Stevenson
 
Introduction to Functional Reactive Web with Clojurescript
John Stevenson
 
Thinking Functionally with Clojure
John Stevenson
 
Communication improbable
John Stevenson
 
Getting into public speaking at conferences
John Stevenson
 
Functional web with clojure
John Stevenson
 
Get into Functional Programming with Clojure
John Stevenson
 
Guiding people into Clojure
John Stevenson
 
Git and github - Verson Control for the Modern Developer
John Stevenson
 
Get Functional Programming with Clojure
John Stevenson
 
So you want to run a developer event, are you crazy?
John Stevenson
 
Trailhead live - Overview of Salesforce App Cloud
John Stevenson
 
Clojure for Java developers
John Stevenson
 
Introducing the Salesforce platform
John Stevenson
 
Getting started with Clojure
John Stevenson
 
Salesforce Summer of Hacks London - Introduction
John Stevenson
 
Heroku Introduction: Scaling customer facing apps & services
John Stevenson
 
Developers guide to the Salesforce1 Platform
John Stevenson
 
Ad

Recently uploaded (20)

PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 

Dreamforce 13 developer session: Git for Force.com developers

  • 1. Git for Force.com Developers Managing code and Collaborating on projects John Stevenson Developer Evangelist Salesforce.com @jr0cket
  • 2. Safe harbor Safe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
  • 3. What is this talk about Understanding the value of Git Taking your first steps Git Using Git for Force.com projects Collaborating with Git & Github
  • 5. Understanding the value of Git Manage your code changes over time - understanding which version of your code is deployed - rollback & compare to earlier versions Experiment with code using branching - branches are easily thrown away or merged if they are valuable Collaborate easily - share code commits using distributed nature of Git
  • 7. Taking your first steps Git Install Git http://git-scm.com/ Identify yourself to git git config --global user.name “” Create your first repository git config --global user.email “” git init
  • 9. Salesforce Git Cheat Sheet available in the Developer Library
  • 11. The common Git commands
  • 12. Creating a Git repository locally Create a place to manage your changes - stored in a folder called .git git init Removing the .git folder from your project removes any version control and you will loose your change history
  • 13. Adding files You can tell git which file(s) you want to make part of the next commit (version) - either a specific file name or pattern, or using . every change is added git add filename git add .
  • 14. Understanding what has changed Git Status gives an overview of local file changes - you will use this command very often git status Git status helps you keep track of your changes and which ones to make part of the next commit.
  • 15. Creating a commit (version) Create a commit with all the files in staging - providing a message to describe this commit git commit -m “useful commit message” Commit messages help the team quickly review changes and versions
  • 16. Tracing your commits with Git log Quickly review your change history - this is where good commit messages speed things up git log git log --oneline --graph --decorate The default output of Git Log is basic, if you use the command line then create an alias with your preferred options
  • 17. Create an alias for git log Save yourself some typing by creating aliases - these are saved in the file ~/.gitconfig git config alias.lg “log –oneline --graph –decorate” You can also edit the ~/.gitconf file directly (if you are careful)
  • 18. Seeing what code has changed Compare your working files with existing commits - helps you understand what changed, what should be committed next git diff git diff --cached The --cached option compares the working directory with the staged files rather than committed changes.
  • 20. Staging and committing Staging allows you to group changes across multiple files easily - easier to un-stage files than remove from a commit - gives another step to manage and compare changes A Staged file is over-written when you “git add” the same file - staging does not create a version - commit when you have a meaningful (set of) change(s)
  • 21. Share your changes with others We work in teams, so we can share our commits - via Github, an internal Git server or directly between developers git push repository branch git archive my-project.zip An archive file (.tar or .zip) will contain the entire history of your code by default
  • 22. Using Git with Force.com IDE
  • 23. Getting Force.com IDE Download Eclipse version 4.2 or 4.3 - get the Java Developer edition Add the Force.com IDE plugin Eclipse uses a plugin called EGit to work with local and remote repositories, this is part of the Java Developer version
  • 24. Identifying yourself to Git with Force.com IDE You will be prompted for your user information when you create your first commit
  • 25. Identifying yourself to Git with Force.com IDE Force.com IDE will use ~/.gitconfig if it already exists
  • 26. Using Git for Force.com projects Window > Open Perspective > Git repository exploring
  • 27. Creating a repository with Force.com IDE
  • 28. Creating a repository with Force.com IDE Provide the location and name for your local repository Don’t select a bare repository as you will not be able to use a working directory
  • 29. Creating a repository with Force.com IDE
  • 30. Using Git & Force.com IDE with an Apex project Using the Apex Workbook as the example project
  • 31. Creating a Developer Org Create a new developer Org - via developer.force.com Install a package to create the custom objects our Apex code is going to work with - http://bit.ly/ApexWorkbookPackage1_4
  • 32. Load data into your Developer Org Open the Developer Console 1) click Debug > Open Execute Anonymous Window 2) the Enter Apex Code window is displayed 3) Enter the following apex code and execute ApexWorkbook.loadData();
  • 33. Creating a new project in Force.com IDE
  • 34. Change to the Force.com Perspective See the newly created project
  • 35. Create your first Apex class
  • 36. Code your Apex class
  • 37. New Class files marked as untracked New files and their parent folders are marked with ?
  • 38. Adding the HelloWorld class to Git Switch to Git Repository Exploring perspective Right-click the file name and select Add to Git index
  • 40. Committing your new code locally Enter a useful commit message and press commit
  • 41. Syncronize your changes with your Org
  • 42. View the local commit history
  • 43. View details of a commit
  • 45. Collaborating with Github Collaborate as a team Work on Open Source projects Get contributions from anyone in the world Include code review into your change management
  • 47. Creating, Forking & Cloning Creating a repository & Forking a repository - via the Github website Cloning a repository (get a local copy) git clone alias repository-address
  • 48. Sharing changes back to Github Git Push sends all commits that are only in your local repository to Github Specify with repository (alias name) and branch you want to share git push alias branch
  • 49. Cloning a repository in Force.com IDE
  • 50. Tips when using Github & Force.com IDE
  • 51. Be wary of what you name your project Project & Git repository names should match A repository on Github has a web address (URL) - avoid using spaces and special characters Suggested approach - create your repository on Github first - clone your github repository to your laptop - create a project in Force.com
  • 52. Commit changes before sync’ing Commit changes before syncing or merging with your org - ensure you don’t loose local changes - commit before using “Save to Server” or “Synchronize with Server” Create a branch if you are not sure you want to keep your code changes - or use “git stash” if you have many unrelated changes
  • 53. Drive all changes locally Avoid making changes directly on the Org - or sync changes to locally as soon as you make them Changes on the server are too easy to forget - can make merging changes more complicated - more likelihood of merge conflicts, meaning more work for the team
  • 54. Where to go next try.git.com – free online interactive training Git Visual Cheetsheet – interactive command reference Salesforce Git Cheatsheet - available at Dreamforce in the Developer Library Practice !
  • 56. Thank you John Stevenson Developer Evangelist @jr0cket git-scm.com try.github.com developer.force.com blog.jr0cket.co.uk

Editor's Notes

  • #9: You don’t need to remember all the commands I show you, there is a quickstart guide to give you a reference to all the common commands you will use first. There is a more detailed “Cheat sheet” available at Dreamforce
  • #11: Insert diagram
  • #12: To keep this nice and simple I am going to create some text files and capture different versions of those files in Git. This shows what each of these commands does, so even if only use Git via Force.com IDE you know what those commands are doing. This helps you make use of Force.com IDE more efficiently.
  • #13: Diff’ing
  • #14: Diff’ing
  • #15: Diff’ing
  • #16: Diff’ing
  • #17: Diff’ing
  • #18: Diff’ing
  • #19: Diff’ing
  • #20: TODO – fix diagram – git diff next to local repo shold not have the –cached option, it should be on the git diff against staging
  • #21: Diff’ing
  • #22: Diff’ing
  • #24: Add screenshots of using Eclipse and …
  • #25: Add screenshots of using Eclipse and …
  • #26: Add screenshots of using Eclipse and …
  • #27: Add screenshots of using Eclipse and …
  • #28: Add screenshots of using Eclipse and …
  • #29: A bare repository is one without a working directory. Files cannot be added, as the repository can only receive changes via a push to it.
  • #30: Add screenshots of using Eclipse and …
  • #32: Add screenshots of using Eclipse and …
  • #33: Add screenshots of using Eclipse and …
  • #34: Taking tips from the Blog Sandeep wrote on using Git.
  • #35: Taking tips from the Blog Sandeep wrote on using Git.
  • #36: Add screenshots of using Eclipse and …
  • #37: Add screenshots of using Eclipse and …
  • #38: Add screenshots of using Eclipse and …
  • #39: Add screenshots of using Eclipse and …
  • #40: Add screenshots of using Eclipse and …
  • #41: Add screenshots of using Eclipse and …
  • #42: Add screenshots of using Eclipse and …