SlideShare une entreprise Scribd logo
Git in gear:

How to track changes, travel back in time,
and code nicely with others.
Fureigh
@fureigh — info@fureigh.com
NYC Camp
April 10, 2014
Who am I?
Fureigh
Drupal and CiviCRM developer
2014 Code for America Fellow
info@fureigh.com — fureigh on drupal.org, IRC, Twitter, etc.
Who am I?
What are we going to discuss?
• What version control is and why we
care
• Setting up and getting started with
Git
• Fundamental commands
• How to use Git to experiment safely
• How to see who did what when
• Simple daily workflow (public repos)
What are we going to discuss?
• GitHub (github.com) – http://try.github.io
• This is by no means an exhaustive
guide to Git. See “Resources.”
• This will be less fun without a
computer, but you can still learn!
What we’re not doing
What is version control?
(save points for your work.)
!
(not only for code.)
Why use version control?
(tl;dr: to reduce
suffering.)
Why Git in particular?
• Cheap local branching
• Multiple workflows
• Fast
Let’s try it out!
• Linux: Search for ‘git’ or ‘git-core’

sudo yum install git / sudo apt-get install git-core

• Mac:

Download from git-scm.com

Applications -> Utilities -> Terminal

• Windows:

Download from git-scm.com

Start -> Programs -> Git -> Git Bash
Installing Git
10
Introduce yourself to Git
• Tell it your name:

git config --global user.name “Your Name”

• And your email address:

git config --global user.email
“your@email.com”

• And avoid unnecessary hassle:

git config --global core.safecrlf true
• Make a new project directory:

! mkdir myproject

cd myproject
• Tell Git to start paying attention to
your project:

! git init!
• Check what you’ve done.

git status
Starting a new project
• Make a new file:

touch newfile.txt
• Add it:

git add newfile.txt
• And make an initial commit:

! git commit -m “Initial 

commit.”
• See what you’ve done:

git log
Adding and committing
• The smaller your commits, the easier
it’ll be for you to go back and see
what you’ve done.

• …or undo changes that caused
damage.
Commit early and often!
• To edit your last commit message
(for the perfectionists among us):



git commit --amend -m “You see, 

what I really meant to say was 

this.”
Fear of (mis)commitment
• Make a change to newfile.txt.

vi newfile.txt
• See which files have been changed:

git status
• See more precisely what’s changed:

git diff



(specific file, patch creation)
Checking what’s different
• It’s also what we use to make
patches!
• Make another change:

vi newfile.txt
• See what’s changed:

git diff
• Make it into a patch:

git diff newfile.txt > made-

everything-more-awesome.patch
Hey, speaking of diff…
• Your .gitignore file keeps Git from
getting cluttered.

• Create it in the root directory of your
Git repository.
Keep the crud out
• Let’s make a .gitignore file.

touch secret_passwords.txt

vi .gitignore

.secret_passwords.txt



(Note: case-sensitive!)
• What else might we .gitignore?

sites/default/settings.php

*.DS_Store
• git add .gitignore
moar .gitignore
• Make a new branch and switch to it:

git checkout -b 41014-snazzytheme

• View current branches:

git branch

(Asterisk tells you where you are.)

• (If you wanted to switch back to master:)

git checkout master
Using Git to experiment safely
• Make edits.
• Check status.
• Diff to check what’s changed.
• Add files if necessary.
• Commit changes. They’ll go to the
41014-snazzytheme branch, NOT to
master.
Wash, rinse, repeat.
• First, switch back to master:

git checkout master
• You can verify that:

git branch
• Merge the other branch:

git merge snazzytheme

(No squashing!)
• You can see the commit in the log:

git log -1

(git log -s)
Putting it back on master
• Delete the ‘snazzytheme’ branch:

git branch -d snazzytheme

• You can verify that:

git branch
Deleting branches
• If you want to mark a commit as
special:



git tag -a v1.0 -m “Initial launch!”

• Tell me all about that, Git.



git show v1.0
Tagging
25
But wait!
Something’s gone wrong!
!
(let’s say)
26
photo by Amy Strycula (http://www.amystrycula.com) (Amy Strycula's personal archive)
[CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
• Say you delete a file:

git rm newfile.txt
• J/k! Forget everything since my last
commit!

git reset --hard
• Check that all’s well:

git status
• For individual files:

git checkout yesterday.txt
Turning back (recent) time
• What happened? When do you hypothesize
was last-known-good?

git log

git blame – who did this?
• First 5 characters of each long string are a
commit ID.
• To view changes between second and third
commits:

git diff 22222:33333
• To revert:

git revert HEAD <- reverts most recent

or: git checkout 22222 filename.txt
Disaster recovery
• (git clone)
• git checkout master
• git pull
• git checkout -b issue-branch

Creates and switches you into a branch.
• git status (as you’re going along)
• git add [filename]
• git diff
• git commit -m “Detailed commit message.”
• git checkout master
• git merge issue-branch
• git push; git branch -d issue-branch
Simple daily workflow
http://nakedstartup.com/2010/04/simple-daily-git-workflow/
• Each project (module, theme, etc.) gets its
own repository.
• Who gets commit access? Project
administrator and people to whom they grant
permission.
• If you’re a project creator, follow the steps
on the Version Control tab of your project’s
page.
• That page also lets anyone clone the git repo.
Perfect for making patches.
• drupal.org/documentation/git
Git on drupal.org
• git log —name-only

• git add -p
!
• git merge --squash

• (fun with git config: color diffing and more)
Gittin’ fancy
• git-scm.com
• Drupal-specific: drupal.org/documentation/
git

Includes GUI recommendations.
• gitready.com – great for quick answers
• gitimmersion.com – beautiful
• openhatch.org/missions/git – practice!
• try.github.com
Resources
• nyccamp.org/sprint-mentor-sign-up
Thanks!
Now come help at Sunday’s sprint!
Fureigh
fureigh.com
info@fureigh.com
@fureigh
Thanks!

Contenu connexe

Tendances

Git in the Enterprise: How to succeed at DevOps using Git and a monorepo
Git in the Enterprise: How to succeed at DevOps using Git and a monorepoGit in the Enterprise: How to succeed at DevOps using Git and a monorepo
Git in the Enterprise: How to succeed at DevOps using Git and a monorepoGina Bustos
 
Git and GitGHub Basics
Git and GitGHub BasicsGit and GitGHub Basics
Git and GitGHub BasicsAswin Barath
 
Writing Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future SelfWriting Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future SelfAll Things Open
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?Weaveworks
 
Version Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part IVersion Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part ISergey Aganezov
 
You can git
You can gitYou can git
You can gitYu GUAN
 
Version control system and Git
Version control system and GitVersion control system and Git
Version control system and Gitramubonkuri
 
Git: A Getting Started Presentation
Git: A Getting Started PresentationGit: A Getting Started Presentation
Git: A Getting Started PresentationNap Ramirez
 
Github 101 An Adventurer's Guide To Open Source
Github 101   An Adventurer's Guide To Open SourceGithub 101   An Adventurer's Guide To Open Source
Github 101 An Adventurer's Guide To Open SourcePrachitibhukan
 
Web Programming - Git basics
Web Programming - Git basicsWeb Programming - Git basics
Web Programming - Git basicsÖmer Taşkın
 
Git the fast version control system
Git the fast version control systemGit the fast version control system
Git the fast version control systemJeroen Rosenberg
 

Tendances (20)

Git in the Enterprise: How to succeed at DevOps using Git and a monorepo
Git in the Enterprise: How to succeed at DevOps using Git and a monorepoGit in the Enterprise: How to succeed at DevOps using Git and a monorepo
Git in the Enterprise: How to succeed at DevOps using Git and a monorepo
 
Git slides
Git slidesGit slides
Git slides
 
Git and GitGHub Basics
Git and GitGHub BasicsGit and GitGHub Basics
Git and GitGHub Basics
 
Intro to Git & GitHub
Intro to Git & GitHubIntro to Git & GitHub
Intro to Git & GitHub
 
Git General
Git GeneralGit General
Git General
 
Writing Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future SelfWriting Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future Self
 
Git Tutorial
Git Tutorial Git Tutorial
Git Tutorial
 
WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?WTF is GitOps and Why You Should Care?
WTF is GitOps and Why You Should Care?
 
Version Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part IVersion Control Systems -- Git -- Part I
Version Control Systems -- Git -- Part I
 
You can git
You can gitYou can git
You can git
 
SCM Boot Camp
SCM Boot CampSCM Boot Camp
SCM Boot Camp
 
Version control system and Git
Version control system and GitVersion control system and Git
Version control system and Git
 
Git hub
Git hubGit hub
Git hub
 
Git: A Getting Started Presentation
Git: A Getting Started PresentationGit: A Getting Started Presentation
Git: A Getting Started Presentation
 
Github 101 An Adventurer's Guide To Open Source
Github 101   An Adventurer's Guide To Open SourceGithub 101   An Adventurer's Guide To Open Source
Github 101 An Adventurer's Guide To Open Source
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Git 01
Git 01Git 01
Git 01
 
Web Programming - Git basics
Web Programming - Git basicsWeb Programming - Git basics
Web Programming - Git basics
 
Git the fast version control system
Git the fast version control systemGit the fast version control system
Git the fast version control system
 
Webinar : SVN to GIT Migration
Webinar : SVN to GIT Migration Webinar : SVN to GIT Migration
Webinar : SVN to GIT Migration
 

En vedette

Intermediate Git: Workflows for Teams at DrupalCamp LA, 2015
Intermediate Git: Workflows for Teams at DrupalCamp LA, 2015Intermediate Git: Workflows for Teams at DrupalCamp LA, 2015
Intermediate Git: Workflows for Teams at DrupalCamp LA, 2015mwrather
 
Views Style Plugins
Views Style PluginsViews Style Plugins
Views Style Pluginsmwrather
 
A painless git workflow
A painless git workflowA painless git workflow
A painless git workflowrogthefrog
 
How to store large binary files in git repositories
How to store large binary files in git repositoriesHow to store large binary files in git repositories
How to store large binary files in git repositoriesMatt Aunger
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & GitCraig Smith
 
What is version control software and why do you need it?
What is version control software and why do you need it?What is version control software and why do you need it?
What is version control software and why do you need it?Leonid Mamchenkov
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version ControlJeremy Coates
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesUX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesNed Potter
 

En vedette (12)

Intermediate Git: Workflows for Teams at DrupalCamp LA, 2015
Intermediate Git: Workflows for Teams at DrupalCamp LA, 2015Intermediate Git: Workflows for Teams at DrupalCamp LA, 2015
Intermediate Git: Workflows for Teams at DrupalCamp LA, 2015
 
Views Style Plugins
Views Style PluginsViews Style Plugins
Views Style Plugins
 
Git
GitGit
Git
 
Git advanced
Git advancedGit advanced
Git advanced
 
GIT Fundamentals
GIT FundamentalsGIT Fundamentals
GIT Fundamentals
 
Git Hogent
Git HogentGit Hogent
Git Hogent
 
A painless git workflow
A painless git workflowA painless git workflow
A painless git workflow
 
How to store large binary files in git repositories
How to store large binary files in git repositoriesHow to store large binary files in git repositories
How to store large binary files in git repositories
 
Version Control & Git
Version Control & GitVersion Control & Git
Version Control & Git
 
What is version control software and why do you need it?
What is version control software and why do you need it?What is version control software and why do you need it?
What is version control software and why do you need it?
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesUX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and Archives
 

Similaire à Git in gear: How to track changes, travel back in time, and code nicely with others.

Let's Git this Party Started: An Introduction to Git and GitHub
Let's Git this Party Started: An Introduction to Git and GitHubLet's Git this Party Started: An Introduction to Git and GitHub
Let's Git this Party Started: An Introduction to Git and GitHubKim Moir
 
git and github-1.pptx
git and github-1.pptxgit and github-1.pptx
git and github-1.pptxtnscharishma
 
Git installation and configuration
Git installation and configurationGit installation and configuration
Git installation and configurationKishor Kumar
 
Hello git - a soft introduction to git (Talk Slides)
Hello git - a soft introduction to git (Talk Slides) Hello git - a soft introduction to git (Talk Slides)
Hello git - a soft introduction to git (Talk Slides) Amity University Noida
 
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
 
Learning git
Learning gitLearning git
Learning gitSid Anand
 
Manage Org Changes Using the Force.com Migration Tool and Git
Manage Org Changes Using the Force.com Migration Tool and GitManage Org Changes Using the Force.com Migration Tool and Git
Manage Org Changes Using the Force.com Migration Tool and GitSalesforce Developers
 
11 git version control
11 git version control11 git version control
11 git version controlWasim Alatrash
 
Source Code Management with Git
Source Code Management with GitSource Code Management with Git
Source Code Management with GitThings Lab
 
Beginner's guide to git and github
Beginner's guide to git and github Beginner's guide to git and github
Beginner's guide to git and github SahilSonar4
 
Introduction To Git Workshop
Introduction To Git WorkshopIntroduction To Git Workshop
Introduction To Git Workshopthemystic_ca
 
Introduction to git and githhub with practicals.pptx
Introduction to git and githhub with practicals.pptxIntroduction to git and githhub with practicals.pptx
Introduction to git and githhub with practicals.pptxAbdul Salam
 

Similaire à Git in gear: How to track changes, travel back in time, and code nicely with others. (20)

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
 
Let's Git this Party Started: An Introduction to Git and GitHub
Let's Git this Party Started: An Introduction to Git and GitHubLet's Git this Party Started: An Introduction to Git and GitHub
Let's Git this Party Started: An Introduction to Git and GitHub
 
git and github-1.pptx
git and github-1.pptxgit and github-1.pptx
git and github-1.pptx
 
Git installation and configuration
Git installation and configurationGit installation and configuration
Git installation and configuration
 
Hello git - a soft introduction to git (Talk Slides)
Hello git - a soft introduction to git (Talk Slides) Hello git - a soft introduction to git (Talk Slides)
Hello git - a soft introduction to git (Talk Slides)
 
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
 
Demo
DemoDemo
Demo
 
Learning git
Learning gitLearning git
Learning git
 
Git presentation
Git presentationGit presentation
Git presentation
 
Manage Org Changes Using the Force.com Migration Tool and Git
Manage Org Changes Using the Force.com Migration Tool and GitManage Org Changes Using the Force.com Migration Tool and Git
Manage Org Changes Using the Force.com Migration Tool and Git
 
git and github
git and githubgit and github
git and github
 
11 git version control
11 git version control11 git version control
11 git version control
 
Source Code Management with Git
Source Code Management with GitSource Code Management with Git
Source Code Management with Git
 
Beginner's guide to git and github
Beginner's guide to git and github Beginner's guide to git and github
Beginner's guide to git and github
 
Git
GitGit
Git
 
Introduction To Git Workshop
Introduction To Git WorkshopIntroduction To Git Workshop
Introduction To Git Workshop
 
Introduction to git and githhub with practicals.pptx
Introduction to git and githhub with practicals.pptxIntroduction to git and githhub with practicals.pptx
Introduction to git and githhub with practicals.pptx
 

Dernier

In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsExpeed Software
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoTAnalytics
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsStefano
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
 
Intelligent Gimbal FINAL PAPER Engineering.pdf
Intelligent Gimbal FINAL PAPER Engineering.pdfIntelligent Gimbal FINAL PAPER Engineering.pdf
Intelligent Gimbal FINAL PAPER Engineering.pdfAnthony Lucente
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationZilliz
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...CzechDreamin
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераMark Opanasiuk
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀DianaGray10
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeCzechDreamin
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupCatarinaPereira64715
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
The architecture of Generative AI for enterprises.pdf
The architecture of Generative AI for enterprises.pdfThe architecture of Generative AI for enterprises.pdf
The architecture of Generative AI for enterprises.pdfalexjohnson7307
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsUXDXConf
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...CzechDreamin
 

Dernier (20)

In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Intelligent Gimbal FINAL PAPER Engineering.pdf
Intelligent Gimbal FINAL PAPER Engineering.pdfIntelligent Gimbal FINAL PAPER Engineering.pdf
Intelligent Gimbal FINAL PAPER Engineering.pdf
 
Introduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG EvaluationIntroduction to Open Source RAG and RAG Evaluation
Introduction to Open Source RAG and RAG Evaluation
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
The architecture of Generative AI for enterprises.pdf
The architecture of Generative AI for enterprises.pdfThe architecture of Generative AI for enterprises.pdf
The architecture of Generative AI for enterprises.pdf
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 

Git in gear: How to track changes, travel back in time, and code nicely with others.

  • 1. Git in gear:
 How to track changes, travel back in time, and code nicely with others. Fureigh @fureigh — info@fureigh.com NYC Camp April 10, 2014
  • 2. Who am I? Fureigh Drupal and CiviCRM developer 2014 Code for America Fellow info@fureigh.com — fureigh on drupal.org, IRC, Twitter, etc. Who am I?
  • 3. What are we going to discuss? • What version control is and why we care • Setting up and getting started with Git • Fundamental commands • How to use Git to experiment safely • How to see who did what when • Simple daily workflow (public repos) What are we going to discuss?
  • 4. • GitHub (github.com) – http://try.github.io • This is by no means an exhaustive guide to Git. See “Resources.” • This will be less fun without a computer, but you can still learn! What we’re not doing
  • 5. What is version control? (save points for your work.) ! (not only for code.)
  • 6. Why use version control? (tl;dr: to reduce suffering.)
  • 7. Why Git in particular? • Cheap local branching • Multiple workflows • Fast
  • 9. • Linux: Search for ‘git’ or ‘git-core’
 sudo yum install git / sudo apt-get install git-core
 • Mac:
 Download from git-scm.com
 Applications -> Utilities -> Terminal
 • Windows:
 Download from git-scm.com
 Start -> Programs -> Git -> Git Bash Installing Git
  • 10. 10
  • 11. Introduce yourself to Git • Tell it your name:
 git config --global user.name “Your Name”
 • And your email address:
 git config --global user.email “your@email.com”
 • And avoid unnecessary hassle:
 git config --global core.safecrlf true
  • 12. • Make a new project directory:
 ! mkdir myproject
 cd myproject • Tell Git to start paying attention to your project:
 ! git init! • Check what you’ve done.
 git status Starting a new project
  • 13. • Make a new file:
 touch newfile.txt • Add it:
 git add newfile.txt • And make an initial commit:
 ! git commit -m “Initial 
 commit.” • See what you’ve done:
 git log Adding and committing
  • 14. • The smaller your commits, the easier it’ll be for you to go back and see what you’ve done.
 • …or undo changes that caused damage. Commit early and often!
  • 15. • To edit your last commit message (for the perfectionists among us):
 
 git commit --amend -m “You see, 
 what I really meant to say was 
 this.” Fear of (mis)commitment
  • 16. • Make a change to newfile.txt.
 vi newfile.txt • See which files have been changed:
 git status • See more precisely what’s changed:
 git diff
 
 (specific file, patch creation) Checking what’s different
  • 17. • It’s also what we use to make patches! • Make another change:
 vi newfile.txt • See what’s changed:
 git diff • Make it into a patch:
 git diff newfile.txt > made-
 everything-more-awesome.patch Hey, speaking of diff…
  • 18. • Your .gitignore file keeps Git from getting cluttered.
 • Create it in the root directory of your Git repository. Keep the crud out
  • 19. • Let’s make a .gitignore file.
 touch secret_passwords.txt
 vi .gitignore
 .secret_passwords.txt
 
 (Note: case-sensitive!) • What else might we .gitignore?
 sites/default/settings.php
 *.DS_Store • git add .gitignore moar .gitignore
  • 20. • Make a new branch and switch to it:
 git checkout -b 41014-snazzytheme
 • View current branches:
 git branch
 (Asterisk tells you where you are.)
 • (If you wanted to switch back to master:)
 git checkout master Using Git to experiment safely
  • 21. • Make edits. • Check status. • Diff to check what’s changed. • Add files if necessary. • Commit changes. They’ll go to the 41014-snazzytheme branch, NOT to master. Wash, rinse, repeat.
  • 22. • First, switch back to master:
 git checkout master • You can verify that:
 git branch • Merge the other branch:
 git merge snazzytheme
 (No squashing!) • You can see the commit in the log:
 git log -1
 (git log -s) Putting it back on master
  • 23. • Delete the ‘snazzytheme’ branch:
 git branch -d snazzytheme
 • You can verify that:
 git branch Deleting branches
  • 24. • If you want to mark a commit as special:
 
 git tag -a v1.0 -m “Initial launch!”
 • Tell me all about that, Git.
 
 git show v1.0 Tagging
  • 25. 25 But wait! Something’s gone wrong! ! (let’s say)
  • 26. 26 photo by Amy Strycula (http://www.amystrycula.com) (Amy Strycula's personal archive) [CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons
  • 27. • Say you delete a file:
 git rm newfile.txt • J/k! Forget everything since my last commit!
 git reset --hard • Check that all’s well:
 git status • For individual files:
 git checkout yesterday.txt Turning back (recent) time
  • 28. • What happened? When do you hypothesize was last-known-good?
 git log
 git blame – who did this? • First 5 characters of each long string are a commit ID. • To view changes between second and third commits:
 git diff 22222:33333 • To revert:
 git revert HEAD <- reverts most recent
 or: git checkout 22222 filename.txt Disaster recovery
  • 29. • (git clone) • git checkout master • git pull • git checkout -b issue-branch
 Creates and switches you into a branch. • git status (as you’re going along) • git add [filename] • git diff • git commit -m “Detailed commit message.” • git checkout master • git merge issue-branch • git push; git branch -d issue-branch Simple daily workflow
  • 31. • Each project (module, theme, etc.) gets its own repository. • Who gets commit access? Project administrator and people to whom they grant permission. • If you’re a project creator, follow the steps on the Version Control tab of your project’s page. • That page also lets anyone clone the git repo. Perfect for making patches. • drupal.org/documentation/git Git on drupal.org
  • 32. • git log —name-only
 • git add -p ! • git merge --squash
 • (fun with git config: color diffing and more) Gittin’ fancy
  • 33. • git-scm.com • Drupal-specific: drupal.org/documentation/ git
 Includes GUI recommendations. • gitready.com – great for quick answers • gitimmersion.com – beautiful • openhatch.org/missions/git – practice! • try.github.com Resources