SlideShare a Scribd company logo
GIT 101
Crash Course in Version Control using Git
Compiled from various internet sources by Geoff Hoffman
Git 101
• What You Will Learn Today
– What a VCS is
– Why using a VCS is a good idea
– Why Git is becoming, if not already, the standard VCS of
choice for developers worldwide
– Why you should care
– Git basics, including:
• How to obtain & install git
• How to use it for basic, common operations
• Where to go for more information
Git 101
• What is a Version Control System (VCS)?
•
•
•
•
•

A way to keep track of changes to files (& folders)
Between multiple authors (developers)
A record of who did what, when
Why is provided by commit messages!
Non-distributed (Subversion, CVS)
– Server has the master repo, all commits go to the server

• Distributed (Git, Mercurial)
– Server has the master repo, but you have a copy (clone) of the repo on your machine
– CVS, Visual Source Safe, Perforce are some others
Git 101
• Git is (a VCS that is)...
–
–
–
–

An open source VCS designed for speed and efficiency
Better than competing tools
Created by Linus Torvalds (for managing Linux kernel)
Your best insurance policy against:
• Accidental mistakes like deleting work
• Remembering what you changed, when, why
• Your hard drive blowing up*

* assuming you follow good workflow habits, and push to a remote repository often
http://www.slideshare.net/chacon/git-101-presentation
http://www.slideshare.net/elboby/introduction-to-git-3406276
Git 101
• Git is (a VCS that is)...
– Your best insurance policy against:
• Accidental mistakes like deleting work
• Remembering what you changed, when, why
• Your hard drive blowing up*

– The version control solution I recommend to manage
code of all types
– Hosted solutions include Github.com (more widespread,
more expensive) or Bitbucket.com (cheaper, integrates
with Jira)
– or running your own Git server

* assuming you follow good workflow habits, and push to a remote repository often
http://www.slideshare.net/chacon/git-101-presentation
http://www.slideshare.net/elboby/introduction-to-git-3406276
Git 101
• Getting Git
– Download the software - it's free
• http://git-scm.com/downloads
• or on Mac (homebrew), $ brew install git

– Download a GUI, optional
• http://git-scm.com/downloads/guis

– Read the manual and/or the book
• http://git-scm.com/docs
• http://git-scm.com/book
Git 101
• How does Git compare?
– An open source, distributed version control software
designed for speed and efficiency
– Unlike Subversion, Git is distributed.
– This means that you can use Git on your local machine
without being connected to the internet.
– Revisions (commits) you make to your local repository
are available to you only
– The next time you connect to the internet, push your
changes to a remote repository to share them & back
them up offsite & off your computer
Git 101
• How does Git compare?
– The distributed nature of Git makes it insanely fast,
because most things you do happen on your local
machine
– The local nature of Git makes it effortless to create
branches to isolate your work
– The local nature of Git makes it possible to coalesce a
series of changes (local commits) into a single commit on
the remote branch
Git 101
• Understanding Git Workflow
– Obtain a repository
• Either via git init, or git clone, or if you already have the repo, pull
changes!

– Make some edits
• Use your favorite text editor or source code IDE
– Most IDEs have Git integration, including NetBeans

• git tracks changes to binary files too: images, pdf, etc.
– Less useful though, than text-based files

– Stage your changes
• using git add

– Commit your work
• git commit -m "Always write clear commit messages!"

– Push to remote
• git push remotename localbranch:remotebranch
Git 101

Understanding Git
Remote Repo

git clone
/ git pull

internet
your pc

git push

"a copy of your project"

Working Directory
your

git add
"Staging"

Index

git commit
"your clone of the remote repo"

http://www.slideshare.net/jasonjnoble/git101 slide 3

Repository

edits
Git 101
• First Steps: Check installation
– Check if Git is installed:
• $ git --version
• git version 1.7.10.2 (Apple Git-33)

– If not, brew install git or download the installer
– Set your Git username and email to your global config:
• $ git config --global user.name "Geoff Hoffman"
• $ git config --global user.email "phpguru@salientdigital.com"*

– How to enter your username and password only once:
• https://help.github.com/articles/generating-ssh-keys

http://git-scm.com/docs/git-config

* Use your github/bitbucket username & email
Git 101
• First Steps: Obtaining a repository
– Creating a repository (if one does not exist remotely):
• $ git init
• @see http://git-scm.com/docs/git-init

– Or, cloning a remote repository:
• $ git clone https://reposite.tld/account/repo.git localdir
• $ git clone https://github.com/phpguru/phpredis.git
– localdir is optional. The repo name is used in this case.
– @see http://git-scm.com/docs/git-clone

• $ cd phpredis
• $ ls –la

– Inspect the repo configuration:
• $ vim .git/config
Git 101
• First Steps: Inspecting your repo
– Change Directory into the repository & issue a git status
• $ cd path/to/repo
• $ git status
– @see http://git-scm.com/docs/git-status

• "Displays paths that have differences between the index file and the
current HEAD commit, paths that have differences between the
working tree and the index file, and paths in the working tree that are
not tracked by Git (and are not ignored by gitignore(5))"
– @see http://git-scm.com/docs/gitignore

– In other words, shows what you added, modified or
deleted since your
last commit.
Git 101
• First Steps: Inspecting your repo
– Change Directory into the repository & issue a git log
•
•
•
•

$
$
$
$

cd path/to/repo
git log
git log --pretty=oneline
git log -1
– @see http://git-scm.com/docs/git-log

– "Shows the commit logs."
– In other words, why you committed something
• Hopefully you wrote descriptive commit messages in the past!
Git 101
• First Steps: Making Edits & Committing
•
•
•
•
•

You can use whatever program you normally use to edit files.
Make a new file - newfile.txt
Edit the file as desired
Save it in your working directory
$ git status
– will show the file as "Changes not staged for commit"

• $ git add newfile.txt
• $ git status
– will show newfile.txt as "Changes to be committed"
– git commit -m "Added newfile.txt as an example"
»

•

[Master 1e77a20] Added newfile.txt as an example

1 file changed, 0 insertions(+), 0 deletions(-)
Git 101
• First Steps: Adding (staging) changes
– Change Directory into the repository & issue a git status,
then add new/modified files
• $ cd path/to/repo
• $ git add (file)
• $ git add –A
– @see http://git-scm.com/docs/git-add

• "This command updates the index using the current content found in
the working tree, to prepare the content staged for the next commit."
• In other words, stage your added, modified or deleted files for
committing.
Git 101
• First Steps: Committing (staged) changes
– Change Directory into the repository & issue a git status,
then add new/modified files, then commit them to your
local repository
• $ cd path/to/repo
• $ git add (file)
• $ git commit -m "What did you change? Log messages matter."
– @see http://git-scm.com/docs/git-commit

• "Stores the current contents of the index in a new commit along with a
log message from the user describing the changes."
• In other words, store the added, modified or deleted files you staged
in your repository.
Git 101

Git workflow visualization
Standard Workflow
Origin

Origin

internet
your pc
--> time -->

git clone
git pull
(git init)

Repo
edits

Work

Repo
git
commit

git add

Repo
edits

Work

git
commit

git add

Stage

git push

Repo
edits

Work

git
commit

git add

Stage

Stage
Git 101
• First Steps: Pushing
–

At this point, none of those changes you've made have left your computer.
(You still have local "infinite undo".) Let's push those changes to the
remote repo.

• git push <repository> <refspec>
• git push origin master
• git push origin master:master

– You now have an annotated, offsite backup of the work
you performed!
• REMEMBER:
– If you never commit, you have no history.
– If you never push, you have no offsite backup.

• As a rule of thumb, commit every hour, push every day.
– There is no reason not to commit after every "logical stopping-point" and push when a
good section of work is complete, unit tests pass, etc.

• After you commit, your colleagues can pull changes down from the
origin repository to their local working repository.
Git 101
• First Steps: Pushing your changes offsite
(local -> remote)
– Change Directory into the repository & issue a git push
• $ cd path/to/repo
• $ git push origin master
– @see http://git-scm.com/docs/git-push

• "Updates remote refs using local refs, while sending objects necessary
to complete the given refs."
• In other words, send your local changes back to the remote repo you
cloned from.
Git 101
• First Steps: Pulling someone else's changes
(remote -> local)
– Change Directory into the repository & issue a git pull
• $ cd path/to/repo
• $ git pull origin master
– @see http://git-scm.com/docs/git-pull

• "Incorporates changes from a remote repository into the current
branch. In its default mode, git pull is shorthand for git fetch followed
by git merge FETCH_HEAD."
• In other words, retrieve changes made to the remote repo and merge
them into your local repo, updating your working copy to match.
Git 101
• Next Steps: Working smart(er)

Branches
Git 101
• Next Steps: Working smart(er)
– Branches in Git can be created very quickly (because they
happen locally). Creating a branch, and doing work in a
branch, is smart because branches allow you to:
•
•
•
•

Try out an idea - experiment
Isolate work units - keep unfinished work separate
Work on long-running topics - come back to things later
Share your work in progress with others without altering the code in
production or in development (remote feature branches)
Git 101
• Next Steps: Working smart(er)
– Why do branches matter? An example to illustrate...
• Monday: You put all the client's code into a repo, clone it locally
• Tuesday: You create a branch to implement a new feature, making
several commits
• Wednesday: You realize that it would be better to split out the feature
into a couple different include files, so you create 2 new files and
delete the old one. You commit your work.
• Thursday: The client contacts you frantically wanting a hot fix for an
issue discovered on the version of the code on the live site.
• What do you do now?
–
–
–
–

You deleted their version of the file on Wednesday, right?
No! You made a branch.
Their original file is in the master branch still!
If you hadn't branched, you would be either downloading their original file again, or
reverting your changes back to the version you had on Monday.
Git 101

Next Steps: Working smart(er)
Branch Workflow
Origin

Origin

internet
your pc
git clone
git pull

git push
--> time -->

Master

Master
git branch "Branch"
git checkout Branch

Branch

git checkout Master
git merge Branch

Branch

edits

Branch

edits

Work
git add

edits

Work
git
commit

Stage

git add

Branch

Work
git
commit

Stage

git add

git
commit

Stage
Git 101
• Next Steps: Working smart(er)
– Change Directory into the repository, create a branch and
check it out
• $ cd path/to/repo
• $ git branch featurename
• $ git checkout featurename
– @see http://git-scm.com/docs/git-branch

• "If --list is given, or if there are no non-option arguments, existing
branches are listed; the current branch will be highlighted with an
asterisk. Option -r causes the remote-tracking branches to be listed,
and option -a shows both local and remote branches. "
• In other words, list or create local or remote branches depending on
arguments provided.
Git 101
• Next Steps: Working smart(er)
– Merge changes made in a feature branch into another
branch, typically development, to then be tested, and
ultimately merged to the master branch and tagged.
•
•
•
•

$
$
$
$

cd path/to/repo
git branch
git checkout master
git merge featurename
– @see http://git-scm.com/docs/git-merge

• "Incorporates changes from the named commits (since the time their
histories diverged from the current branch) into the current branch.
This command is used by git pull to incorporate changes from another
repository and can be used by hand to merge changes from one
branch into another."
• In other words, apply changes from another branch to the current one.
Git 101
• Next Steps: Working smart(er)
– Branch Best Practices
• "master" is generally accepted to mean the main branch, that tracks
what is deployed on the client's site. This is the default; when creating
a new repository it will have one branch named master.
• "develop" or "development" is typically the name of a single branch
that has newer code than what is in master. Un-named bug fixes and
improvements.
• "featureXYZ" or "issue123" - Branches named for specific features or
specific issue tickets in a 3rd party bug tracker.
• You can have branches in your local repository that are not tracked,
meaning they do not exist in the remote repository. It's up to you.
• Even if you never make a feature branch, it's recommended to have at
least one "development" branch separate from "master"
Git 101
• Final Steps: Deploying Code
– When we're satisfied with our work, everything is tested
and it's ready to provide to the client, what should we do?
Tag it!
Git has the ability to tag specific points in history as being important
Use this functionality to mark release points (v1.0, and so on).
A Tag should be used anytime you provide code to the client.
It should be annotated both in Git and in code comments somewhere,
what you changed and why, who asked for the change, their email
address and anything else that might be important.
• Remember that the next person who works on the tag code may not
be you! Pay it forward!
• The client should be provided with access to download the Tagged
version of the code
• Github makes this a zip/tgz automatically
•
•
•
•
Git 101
• Final Steps: Deploying Code
– Change Directory into the repository, list the current tags,
check the branch you're on, and tag the current
branch/revision
•
•
•
•

$
$
$
$

cd path/to/repo
git tag –l
git branch
git tag -a v1.1 -m "Tagging version 1.1 with featurename"
– @see http://git-scm.com/docs/git-tag
– @see http://git-scm.com/book/en/Git-Basics-Tagging

• "Add a tag reference in refs/tags/, unless -d/-l/-v is given to delete,
list or verify tags. Unless -f is given, the named tag must not yet exist.
If one of -a, -s, or -u <key-id> is passed, the command creates a tag
object, and requires a tag message."
• In other words, create a named/numbered reference to a specific
revision of the code, or list prior tags created
Git 101
• Final Steps: Deploying Code
– A tag is a special type of commit... as such, just like any
other commit, the tag only exists locally. The final step in
tagging is to push the tag to the remote repository, just
like we do with regular commits.
• $ cd path/to/repo
• $ git push origin v1.1
• $ git push origin --tags
– @see http://git-scm.com/book/en/Git-Basics-Tagging

• "By default, the git push command doesn’t transfer tags to remote
servers. You will have to explicitly push tags to a shared server after
you have created them."
• In other words, don't forget to push after tagging, otherwise the tag
only exists on your local machine.
Git 101
• Wrap Up: Review
• The most common commands you will use during a normal day/week
working with Git to manage versions of code:

Download/Create a local repo

Updating your local repo

$ git clone

$ git pull (git fetch)

$ git init

$ git branch

Checking what's changed

$ git merge

$ git status

Storing changes offsite/offbox

$ git log

$ git commit

Storing edits

$ git push

$ git add

Storing changes offsite/offbox

$ git commit

$ git tag
$ git push
Ad

More Related Content

What's hot (20)

Git and github 101
Git and github 101Git and github 101
Git and github 101
Senthilkumar Gopal
 
git and github
git and githubgit and github
git and github
Darren Oakley
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
glen_a_smith
 
Learning git
Learning gitLearning git
Learning git
Sid Anand
 
Introduction to git & GitHub
Introduction to git & GitHubIntroduction to git & GitHub
Introduction to git & GitHub
Poornachandrakashi
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
James Gray
 
Basic Git Intro
Basic Git IntroBasic Git Intro
Basic Git Intro
Yoad Snapir
 
Introduction git
Introduction gitIntroduction git
Introduction git
Dian Sigit Prastowo
 
Git basic
Git basicGit basic
Git basic
Emran Ul Hadi
 
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Simplilearn
 
Git Introduction Tutorial
Git Introduction TutorialGit Introduction Tutorial
Git Introduction Tutorial
Thomas Rausch
 
Git pour les (pas si) nuls
Git pour les (pas si) nulsGit pour les (pas si) nuls
Git pour les (pas si) nuls
Malk Zameth
 
Git commands
Git commandsGit commands
Git commands
Viyaan Jhiingade
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
Nilay Binjola
 
Introduction To Git
Introduction To GitIntroduction To Git
Introduction To Git
Arnaud Seilles
 
Advanced Git
Advanced GitAdvanced Git
Advanced Git
Sergiu-Ioan Ungur
 
Grokking opensource with github
Grokking opensource with githubGrokking opensource with github
Grokking opensource with github
GoogleDeveloperStude4
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and Concepts
Carl Brown
 
Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
Jean-Baptiste Vigneron
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
Venkat Malladi
 
Git One Day Training Notes
Git One Day Training NotesGit One Day Training Notes
Git One Day Training Notes
glen_a_smith
 
Learning git
Learning gitLearning git
Learning git
Sid Anand
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
James Gray
 
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Git Tutorial For Beginners | What is Git and GitHub? | DevOps Tools | DevOps ...
Simplilearn
 
Git Introduction Tutorial
Git Introduction TutorialGit Introduction Tutorial
Git Introduction Tutorial
Thomas Rausch
 
Git pour les (pas si) nuls
Git pour les (pas si) nulsGit pour les (pas si) nuls
Git pour les (pas si) nuls
Malk Zameth
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
Nilay Binjola
 
Introduction to Git Commands and Concepts
Introduction to Git Commands and ConceptsIntroduction to Git Commands and Concepts
Introduction to Git Commands and Concepts
Carl Brown
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
Venkat Malladi
 

Viewers also liked (20)

Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
HubSpot
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTree
Teerapat Khunpech
 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for Testing
Carlos Sanchez
 
Git best practices workshop
Git best practices workshopGit best practices workshop
Git best practices workshop
Otto Kekäläinen
 
Bamboo - an introduction
Bamboo - an introductionBamboo - an introduction
Bamboo - an introduction
Sven Peters
 
GitFlow, SourceTree and GitLab
GitFlow, SourceTree and GitLabGitFlow, SourceTree and GitLab
GitFlow, SourceTree and GitLab
Shinu Suresh
 
Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)
Tracy Kennedy
 
Ic maven jenkins_sonar
Ic maven jenkins_sonarIc maven jenkins_sonar
Ic maven jenkins_sonar
Rocío Muñoz
 
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and ComposeDockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
Docker, Inc.
 
Dockercon2015 bamboo
Dockercon2015 bambooDockercon2015 bamboo
Dockercon2015 bamboo
Steve Smith
 
Game of Codes: the Battle for CI
Game of Codes: the Battle for CIGame of Codes: the Battle for CI
Game of Codes: the Battle for CI
Atlassian
 
Master Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins PlatformMaster Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins Platform
dcjuengst
 
Rise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentRise of the Machines - Automate your Development
Rise of the Machines - Automate your Development
Sven Peters
 
Getting started with Jenkins
Getting started with JenkinsGetting started with Jenkins
Getting started with Jenkins
Edureka!
 
Introduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideIntroduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guide
Rohit Arora
 
Jenkins Docker
Jenkins DockerJenkins Docker
Jenkins Docker
Alex Soto
 
DevOps and Continuous Delivery reference architectures for Docker
DevOps and Continuous Delivery reference architectures for DockerDevOps and Continuous Delivery reference architectures for Docker
DevOps and Continuous Delivery reference architectures for Docker
Sonatype
 
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Andrew Bayer
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
Lukas Fittl
 
Speaking part 3
Speaking part 3Speaking part 3
Speaking part 3
Javier Martos
 
Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners Git 101: Git and GitHub for Beginners
Git 101: Git and GitHub for Beginners
HubSpot
 
Gitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTreeGitlab Training with GIT and SourceTree
Gitlab Training with GIT and SourceTree
Teerapat Khunpech
 
Using Docker for Testing
Using Docker for TestingUsing Docker for Testing
Using Docker for Testing
Carlos Sanchez
 
Bamboo - an introduction
Bamboo - an introductionBamboo - an introduction
Bamboo - an introduction
Sven Peters
 
GitFlow, SourceTree and GitLab
GitFlow, SourceTree and GitLabGitFlow, SourceTree and GitLab
GitFlow, SourceTree and GitLab
Shinu Suresh
 
Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)Continuous Delivery with Jenkins and Wildfly (2014)
Continuous Delivery with Jenkins and Wildfly (2014)
Tracy Kennedy
 
Ic maven jenkins_sonar
Ic maven jenkins_sonarIc maven jenkins_sonar
Ic maven jenkins_sonar
Rocío Muñoz
 
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and ComposeDockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
DockerCon EU 2015: Continuous Integration with Jenkins, Docker and Compose
Docker, Inc.
 
Dockercon2015 bamboo
Dockercon2015 bambooDockercon2015 bamboo
Dockercon2015 bamboo
Steve Smith
 
Game of Codes: the Battle for CI
Game of Codes: the Battle for CIGame of Codes: the Battle for CI
Game of Codes: the Battle for CI
Atlassian
 
Master Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins PlatformMaster Continuous Delivery with CloudBees Jenkins Platform
Master Continuous Delivery with CloudBees Jenkins Platform
dcjuengst
 
Rise of the Machines - Automate your Development
Rise of the Machines - Automate your DevelopmentRise of the Machines - Automate your Development
Rise of the Machines - Automate your Development
Sven Peters
 
Getting started with Jenkins
Getting started with JenkinsGetting started with Jenkins
Getting started with Jenkins
Edureka!
 
Introduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guideIntroduction to Git/Github - A beginner's guide
Introduction to Git/Github - A beginner's guide
Rohit Arora
 
Jenkins Docker
Jenkins DockerJenkins Docker
Jenkins Docker
Alex Soto
 
DevOps and Continuous Delivery reference architectures for Docker
DevOps and Continuous Delivery reference architectures for DockerDevOps and Continuous Delivery reference architectures for Docker
DevOps and Continuous Delivery reference architectures for Docker
Sonatype
 
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Andrew Bayer
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
Lukas Fittl
 
Ad

Similar to Git 101 - Crash Course in Version Control using Git (20)

Git installation and configuration
Git installation and configurationGit installation and configuration
Git installation and configuration
Kishor Kumar
 
Mini git tutorial
Mini git tutorialMini git tutorial
Mini git tutorial
Cristian Lucchesi
 
git.ppt.pdf
git.ppt.pdfgit.ppt.pdf
git.ppt.pdf
Roniel Lopez Alvarez
 
github ppt git ppt on git hub to know ab
github ppt git ppt on git hub to know abgithub ppt git ppt on git hub to know ab
github ppt git ppt on git hub to know ab
infoinnext
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github
Max Claus Nunes
 
GIT.pptx
GIT.pptxGIT.pptx
GIT.pptx
Soumen Debgupta
 
Git 101
Git 101Git 101
Git 101
jayrparro
 
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
Kim Moir
 
Git hub
Git hubGit hub
Git hub
Nitin Goel
 
Quick and easy way to get started with Git & GitHub
Quick and easy way to get started with Git & GitHubQuick and easy way to get started with Git & GitHub
Quick and easy way to get started with Git & GitHub
Ashoka R K T
 
Git basics
Git basicsGit basics
Git basics
Malihe Asemani
 
CSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITCSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GIT
PouriaQashqai1
 
Introduction to git and githhub with practicals.pptx
Introduction to git and githhub with practicals.pptxIntroduction to git and githhub with practicals.pptx
Introduction to git and githhub with practicals.pptx
Abdul Salam
 
391Lecture0909 Vision control of git.ppt
391Lecture0909 Vision control of git.ppt391Lecture0909 Vision control of git.ppt
391Lecture0909 Vision control of git.ppt
GevitaChinnaiah
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
Nguyen Van Hung
 
The Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHubThe Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHub
BigBlueHat
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
Vikram SV
 
Git for folk who like GUIs
Git for folk who like GUIsGit for folk who like GUIs
Git for folk who like GUIs
Tim Osborn
 
Git is a distributed version control system .
Git is a distributed version control system .Git is a distributed version control system .
Git is a distributed version control system .
HELLOWorld889594
 
Git training v10
Git training v10Git training v10
Git training v10
Skander Hamza
 
Git installation and configuration
Git installation and configurationGit installation and configuration
Git installation and configuration
Kishor Kumar
 
github ppt git ppt on git hub to know ab
github ppt git ppt on git hub to know abgithub ppt git ppt on git hub to know ab
github ppt git ppt on git hub to know ab
infoinnext
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github
Max Claus Nunes
 
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
Kim Moir
 
Quick and easy way to get started with Git & GitHub
Quick and easy way to get started with Git & GitHubQuick and easy way to get started with Git & GitHub
Quick and easy way to get started with Git & GitHub
Ashoka R K T
 
CSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITCSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GIT
PouriaQashqai1
 
Introduction to git and githhub with practicals.pptx
Introduction to git and githhub with practicals.pptxIntroduction to git and githhub with practicals.pptx
Introduction to git and githhub with practicals.pptx
Abdul Salam
 
391Lecture0909 Vision control of git.ppt
391Lecture0909 Vision control of git.ppt391Lecture0909 Vision control of git.ppt
391Lecture0909 Vision control of git.ppt
GevitaChinnaiah
 
The Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHubThe Basics of Open Source Collaboration With Git and GitHub
The Basics of Open Source Collaboration With Git and GitHub
BigBlueHat
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
Vikram SV
 
Git for folk who like GUIs
Git for folk who like GUIsGit for folk who like GUIs
Git for folk who like GUIs
Tim Osborn
 
Git is a distributed version control system .
Git is a distributed version control system .Git is a distributed version control system .
Git is a distributed version control system .
HELLOWorld889594
 
Ad

Recently uploaded (20)

What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell: Transforming Business Strategy Through Data-Driven Insights
Andrew Marnell
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
IEDM 2024 Tutorial2_Advances in CMOS Technologies and Future Directions for C...
organizerofv
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...
Aqusag Technologies
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 

Git 101 - Crash Course in Version Control using Git

  • 1. GIT 101 Crash Course in Version Control using Git Compiled from various internet sources by Geoff Hoffman
  • 2. Git 101 • What You Will Learn Today – What a VCS is – Why using a VCS is a good idea – Why Git is becoming, if not already, the standard VCS of choice for developers worldwide – Why you should care – Git basics, including: • How to obtain & install git • How to use it for basic, common operations • Where to go for more information
  • 3. Git 101 • What is a Version Control System (VCS)? • • • • • A way to keep track of changes to files (& folders) Between multiple authors (developers) A record of who did what, when Why is provided by commit messages! Non-distributed (Subversion, CVS) – Server has the master repo, all commits go to the server • Distributed (Git, Mercurial) – Server has the master repo, but you have a copy (clone) of the repo on your machine – CVS, Visual Source Safe, Perforce are some others
  • 4. Git 101 • Git is (a VCS that is)... – – – – An open source VCS designed for speed and efficiency Better than competing tools Created by Linus Torvalds (for managing Linux kernel) Your best insurance policy against: • Accidental mistakes like deleting work • Remembering what you changed, when, why • Your hard drive blowing up* * assuming you follow good workflow habits, and push to a remote repository often http://www.slideshare.net/chacon/git-101-presentation http://www.slideshare.net/elboby/introduction-to-git-3406276
  • 5. Git 101 • Git is (a VCS that is)... – Your best insurance policy against: • Accidental mistakes like deleting work • Remembering what you changed, when, why • Your hard drive blowing up* – The version control solution I recommend to manage code of all types – Hosted solutions include Github.com (more widespread, more expensive) or Bitbucket.com (cheaper, integrates with Jira) – or running your own Git server * assuming you follow good workflow habits, and push to a remote repository often http://www.slideshare.net/chacon/git-101-presentation http://www.slideshare.net/elboby/introduction-to-git-3406276
  • 6. Git 101 • Getting Git – Download the software - it's free • http://git-scm.com/downloads • or on Mac (homebrew), $ brew install git – Download a GUI, optional • http://git-scm.com/downloads/guis – Read the manual and/or the book • http://git-scm.com/docs • http://git-scm.com/book
  • 7. Git 101 • How does Git compare? – An open source, distributed version control software designed for speed and efficiency – Unlike Subversion, Git is distributed. – This means that you can use Git on your local machine without being connected to the internet. – Revisions (commits) you make to your local repository are available to you only – The next time you connect to the internet, push your changes to a remote repository to share them & back them up offsite & off your computer
  • 8. Git 101 • How does Git compare? – The distributed nature of Git makes it insanely fast, because most things you do happen on your local machine – The local nature of Git makes it effortless to create branches to isolate your work – The local nature of Git makes it possible to coalesce a series of changes (local commits) into a single commit on the remote branch
  • 9. Git 101 • Understanding Git Workflow – Obtain a repository • Either via git init, or git clone, or if you already have the repo, pull changes! – Make some edits • Use your favorite text editor or source code IDE – Most IDEs have Git integration, including NetBeans • git tracks changes to binary files too: images, pdf, etc. – Less useful though, than text-based files – Stage your changes • using git add – Commit your work • git commit -m "Always write clear commit messages!" – Push to remote • git push remotename localbranch:remotebranch
  • 10. Git 101 Understanding Git Remote Repo git clone / git pull internet your pc git push "a copy of your project" Working Directory your git add "Staging" Index git commit "your clone of the remote repo" http://www.slideshare.net/jasonjnoble/git101 slide 3 Repository edits
  • 11. Git 101 • First Steps: Check installation – Check if Git is installed: • $ git --version • git version 1.7.10.2 (Apple Git-33) – If not, brew install git or download the installer – Set your Git username and email to your global config: • $ git config --global user.name "Geoff Hoffman" • $ git config --global user.email "[email protected]"* – How to enter your username and password only once: • https://help.github.com/articles/generating-ssh-keys http://git-scm.com/docs/git-config * Use your github/bitbucket username & email
  • 12. Git 101 • First Steps: Obtaining a repository – Creating a repository (if one does not exist remotely): • $ git init • @see http://git-scm.com/docs/git-init – Or, cloning a remote repository: • $ git clone https://reposite.tld/account/repo.git localdir • $ git clone https://github.com/phpguru/phpredis.git – localdir is optional. The repo name is used in this case. – @see http://git-scm.com/docs/git-clone • $ cd phpredis • $ ls –la – Inspect the repo configuration: • $ vim .git/config
  • 13. Git 101 • First Steps: Inspecting your repo – Change Directory into the repository & issue a git status • $ cd path/to/repo • $ git status – @see http://git-scm.com/docs/git-status • "Displays paths that have differences between the index file and the current HEAD commit, paths that have differences between the working tree and the index file, and paths in the working tree that are not tracked by Git (and are not ignored by gitignore(5))" – @see http://git-scm.com/docs/gitignore – In other words, shows what you added, modified or deleted since your last commit.
  • 14. Git 101 • First Steps: Inspecting your repo – Change Directory into the repository & issue a git log • • • • $ $ $ $ cd path/to/repo git log git log --pretty=oneline git log -1 – @see http://git-scm.com/docs/git-log – "Shows the commit logs." – In other words, why you committed something • Hopefully you wrote descriptive commit messages in the past!
  • 15. Git 101 • First Steps: Making Edits & Committing • • • • • You can use whatever program you normally use to edit files. Make a new file - newfile.txt Edit the file as desired Save it in your working directory $ git status – will show the file as "Changes not staged for commit" • $ git add newfile.txt • $ git status – will show newfile.txt as "Changes to be committed" – git commit -m "Added newfile.txt as an example" » • [Master 1e77a20] Added newfile.txt as an example 1 file changed, 0 insertions(+), 0 deletions(-)
  • 16. Git 101 • First Steps: Adding (staging) changes – Change Directory into the repository & issue a git status, then add new/modified files • $ cd path/to/repo • $ git add (file) • $ git add –A – @see http://git-scm.com/docs/git-add • "This command updates the index using the current content found in the working tree, to prepare the content staged for the next commit." • In other words, stage your added, modified or deleted files for committing.
  • 17. Git 101 • First Steps: Committing (staged) changes – Change Directory into the repository & issue a git status, then add new/modified files, then commit them to your local repository • $ cd path/to/repo • $ git add (file) • $ git commit -m "What did you change? Log messages matter." – @see http://git-scm.com/docs/git-commit • "Stores the current contents of the index in a new commit along with a log message from the user describing the changes." • In other words, store the added, modified or deleted files you staged in your repository.
  • 18. Git 101 Git workflow visualization Standard Workflow Origin Origin internet your pc --> time --> git clone git pull (git init) Repo edits Work Repo git commit git add Repo edits Work git commit git add Stage git push Repo edits Work git commit git add Stage Stage
  • 19. Git 101 • First Steps: Pushing – At this point, none of those changes you've made have left your computer. (You still have local "infinite undo".) Let's push those changes to the remote repo. • git push <repository> <refspec> • git push origin master • git push origin master:master – You now have an annotated, offsite backup of the work you performed! • REMEMBER: – If you never commit, you have no history. – If you never push, you have no offsite backup. • As a rule of thumb, commit every hour, push every day. – There is no reason not to commit after every "logical stopping-point" and push when a good section of work is complete, unit tests pass, etc. • After you commit, your colleagues can pull changes down from the origin repository to their local working repository.
  • 20. Git 101 • First Steps: Pushing your changes offsite (local -> remote) – Change Directory into the repository & issue a git push • $ cd path/to/repo • $ git push origin master – @see http://git-scm.com/docs/git-push • "Updates remote refs using local refs, while sending objects necessary to complete the given refs." • In other words, send your local changes back to the remote repo you cloned from.
  • 21. Git 101 • First Steps: Pulling someone else's changes (remote -> local) – Change Directory into the repository & issue a git pull • $ cd path/to/repo • $ git pull origin master – @see http://git-scm.com/docs/git-pull • "Incorporates changes from a remote repository into the current branch. In its default mode, git pull is shorthand for git fetch followed by git merge FETCH_HEAD." • In other words, retrieve changes made to the remote repo and merge them into your local repo, updating your working copy to match.
  • 22. Git 101 • Next Steps: Working smart(er) Branches
  • 23. Git 101 • Next Steps: Working smart(er) – Branches in Git can be created very quickly (because they happen locally). Creating a branch, and doing work in a branch, is smart because branches allow you to: • • • • Try out an idea - experiment Isolate work units - keep unfinished work separate Work on long-running topics - come back to things later Share your work in progress with others without altering the code in production or in development (remote feature branches)
  • 24. Git 101 • Next Steps: Working smart(er) – Why do branches matter? An example to illustrate... • Monday: You put all the client's code into a repo, clone it locally • Tuesday: You create a branch to implement a new feature, making several commits • Wednesday: You realize that it would be better to split out the feature into a couple different include files, so you create 2 new files and delete the old one. You commit your work. • Thursday: The client contacts you frantically wanting a hot fix for an issue discovered on the version of the code on the live site. • What do you do now? – – – – You deleted their version of the file on Wednesday, right? No! You made a branch. Their original file is in the master branch still! If you hadn't branched, you would be either downloading their original file again, or reverting your changes back to the version you had on Monday.
  • 25. Git 101 Next Steps: Working smart(er) Branch Workflow Origin Origin internet your pc git clone git pull git push --> time --> Master Master git branch "Branch" git checkout Branch Branch git checkout Master git merge Branch Branch edits Branch edits Work git add edits Work git commit Stage git add Branch Work git commit Stage git add git commit Stage
  • 26. Git 101 • Next Steps: Working smart(er) – Change Directory into the repository, create a branch and check it out • $ cd path/to/repo • $ git branch featurename • $ git checkout featurename – @see http://git-scm.com/docs/git-branch • "If --list is given, or if there are no non-option arguments, existing branches are listed; the current branch will be highlighted with an asterisk. Option -r causes the remote-tracking branches to be listed, and option -a shows both local and remote branches. " • In other words, list or create local or remote branches depending on arguments provided.
  • 27. Git 101 • Next Steps: Working smart(er) – Merge changes made in a feature branch into another branch, typically development, to then be tested, and ultimately merged to the master branch and tagged. • • • • $ $ $ $ cd path/to/repo git branch git checkout master git merge featurename – @see http://git-scm.com/docs/git-merge • "Incorporates changes from the named commits (since the time their histories diverged from the current branch) into the current branch. This command is used by git pull to incorporate changes from another repository and can be used by hand to merge changes from one branch into another." • In other words, apply changes from another branch to the current one.
  • 28. Git 101 • Next Steps: Working smart(er) – Branch Best Practices • "master" is generally accepted to mean the main branch, that tracks what is deployed on the client's site. This is the default; when creating a new repository it will have one branch named master. • "develop" or "development" is typically the name of a single branch that has newer code than what is in master. Un-named bug fixes and improvements. • "featureXYZ" or "issue123" - Branches named for specific features or specific issue tickets in a 3rd party bug tracker. • You can have branches in your local repository that are not tracked, meaning they do not exist in the remote repository. It's up to you. • Even if you never make a feature branch, it's recommended to have at least one "development" branch separate from "master"
  • 29. Git 101 • Final Steps: Deploying Code – When we're satisfied with our work, everything is tested and it's ready to provide to the client, what should we do? Tag it! Git has the ability to tag specific points in history as being important Use this functionality to mark release points (v1.0, and so on). A Tag should be used anytime you provide code to the client. It should be annotated both in Git and in code comments somewhere, what you changed and why, who asked for the change, their email address and anything else that might be important. • Remember that the next person who works on the tag code may not be you! Pay it forward! • The client should be provided with access to download the Tagged version of the code • Github makes this a zip/tgz automatically • • • •
  • 30. Git 101 • Final Steps: Deploying Code – Change Directory into the repository, list the current tags, check the branch you're on, and tag the current branch/revision • • • • $ $ $ $ cd path/to/repo git tag –l git branch git tag -a v1.1 -m "Tagging version 1.1 with featurename" – @see http://git-scm.com/docs/git-tag – @see http://git-scm.com/book/en/Git-Basics-Tagging • "Add a tag reference in refs/tags/, unless -d/-l/-v is given to delete, list or verify tags. Unless -f is given, the named tag must not yet exist. If one of -a, -s, or -u <key-id> is passed, the command creates a tag object, and requires a tag message." • In other words, create a named/numbered reference to a specific revision of the code, or list prior tags created
  • 31. Git 101 • Final Steps: Deploying Code – A tag is a special type of commit... as such, just like any other commit, the tag only exists locally. The final step in tagging is to push the tag to the remote repository, just like we do with regular commits. • $ cd path/to/repo • $ git push origin v1.1 • $ git push origin --tags – @see http://git-scm.com/book/en/Git-Basics-Tagging • "By default, the git push command doesn’t transfer tags to remote servers. You will have to explicitly push tags to a shared server after you have created them." • In other words, don't forget to push after tagging, otherwise the tag only exists on your local machine.
  • 32. Git 101 • Wrap Up: Review • The most common commands you will use during a normal day/week working with Git to manage versions of code: Download/Create a local repo Updating your local repo $ git clone $ git pull (git fetch) $ git init $ git branch Checking what's changed $ git merge $ git status Storing changes offsite/offbox $ git log $ git commit Storing edits $ git push $ git add Storing changes offsite/offbox $ git commit $ git tag $ git push