git.from thorns to the stars
TRANSCRIPT
![Page 1: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/1.jpg)
Git.From the thorns to the stars.
Сергей Моренец25 апреля 2013 г.
![Page 2: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/2.jpg)
Agenda
• Versioning and revision systems overview• Git under the microscope• Examples• Q & A
![Page 3: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/3.jpg)
Glossary• VCS• SCM• RCS
![Page 4: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/4.jpg)
Requirements• Storing content• Tracking changes to the content• Distributing the content and history with
collaborators
![Page 5: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/5.jpg)
Lost in selection
![Page 6: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/6.jpg)
Magic pill
![Page 7: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/7.jpg)
SCCS• First VCS available on any Unix system• Developed in SNOBOL at Bell Labs in 1972• Prepared for IBM Systems/370 computers running
OS/360• Its file format is used in BitKeeper and other VCS• Introduced repositories and locking mechanism
![Page 8: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/8.jpg)
CVS• Ancestor of the revision control systems• First released in 1986 by Dick Grune• Simple technology with small learning curve• Useful for sharing and backing up the files• Tortoise CVS is a de facto client for CVS on
Windows• Introduces merging• Lifecycle ended in 2008
![Page 9: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/9.jpg)
Apache Subversion• Created in 2000• Used to host Apache software products, also
Mono, SourceForge, Google Code• Most adopted SCM• Atomic commits• Maintains versioning for directories, renames, and
file metadata• Better support for branches and tagging
![Page 10: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/10.jpg)
Centralized VCS
![Page 11: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/11.jpg)
Distributed VCS
![Page 12: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/12.jpg)
Distributed workflow
![Page 13: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/13.jpg)
![Page 14: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/14.jpg)
Git• Distributed revision control and source code
management system• Designed and developed by Linus Torvalds for Linux kernel development• Based on BitKeeper system• The development began on April 2005• Current version 1.8.2
![Page 15: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/15.jpg)
Linus Torvalds• Swedish-speaking Finnish American• Chief architect and the project's coordinator of
the Linux kernel• Names after Linus Pauling and Linus Van Pelt • Second lieutenant of the Finnish Army• Winner of Millennium Technology Prize in 2012• Calls himself egotistical bastard
![Page 16: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/16.jpg)
GitThe information manager from
hell
![Page 17: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/17.jpg)
GitGlobal information
TRACKER
![Page 18: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/18.jpg)
Junio Hamano• Graduated from Tokyo university• Git coordinator since 2005• Participated in the Linux development• Currently Google developer
![Page 19: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/19.jpg)
Design Principles• Take CVS as an example of what not to do• Support distributed workflow• Scaling to thousand developers• Strong consistency and integrity support• Free
![Page 20: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/20.jpg)
Features• Rapid branches and merging• Distributed development• Compatibility and emulation• Performance breakthrough• Revisions hashing• Garbage collector• Packed data storage
![Page 21: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/21.jpg)
Git Repository• Database containing revisions and history of the
project• Retains complete copy of entire project• Maintains object store and index• Object store contains data files, log files and audit
information
![Page 22: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/22.jpg)
Git Repository
![Page 23: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/23.jpg)
Git Object Types• Blobs• Trees• Commits• Tags
![Page 24: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/24.jpg)
Blobs• Each version of a file is represented as a blob. • Blob internal structure is ignored by Git.• A blob holds a file’s data but does not contain any
metadata about the file or even its name.• git show command examines contents of the blob
![Page 25: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/25.jpg)
Trees• A tree object represents one level of directory
information. • It records blob identifiers and path names for all
the files in one directory. • It can also recursively reference other sub-trees
objects• Can be examined by git show or git ls-tree
commands
![Page 26: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/26.jpg)
Commits• A commit object holds metadata for each change
including the author, commit date, and log message.
• Each commit points to a tree object that captures, the state of the repository at the time the commit was performed.
• git tag stable-1 1b2e1d63ff
![Page 27: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/27.jpg)
Tags• A tag object assigns an arbitrary yet presumably
human readable name to a specific object, usually a commit.
• Contains tag type, tag message, author and object name.
• Can be examined by git cat-file command.
![Page 28: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/28.jpg)
Git Repository
![Page 29: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/29.jpg)
Git Object Model• Object store is organized and implemented as a
content-addressable storage system.• Each object has a unique name produced by
applying SHA1 to the contents of the object.• SHA1 hash is a sufficient index or name for that
object in the object database.• SHA1 values are 160-bit values that are
represented as a 40-digit hexadecimal number
• 9da581d910c9c4ac93557ca4859e767f5caf5169
![Page 30: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/30.jpg)
Advantages• Git can determine equality of the objects by
comparing names.• The same content stored in two repositories will
always be stored under the same name.• Corruptions errors can be detected by checking
that the object's name is still the SHA1 hash of its contents.
![Page 31: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/31.jpg)
Name Vs Content• Git stores each version of file not differences• Path name is separated from file contents• Object store is based on hashed computation on
file contents, not name
System Index mechanism Data store
Database Indexed Sequential Access Method
Data records
Unix FS Directories(/path) Blocks of data
Git .git/objects/hash Blob/tree objects
![Page 32: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/32.jpg)
Git Directory• Stores all Git's history, configuration and meta
information for your project • There is only one git directory per project• By default it’s '.git' in the root of your project
![Page 33: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/33.jpg)
Git Directory• Configuration:- config- description- info/exclude
• Helps configuring local repository
![Page 34: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/34.jpg)
Git Directory• Hooks:-hooks
• Scripts that are run on certain lifecycle events of the repository
![Page 35: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/35.jpg)
Git Directory• Object Database:-objects
• Default Git object database• Contains all content or pointers to local content. • All objects are immutable
![Page 36: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/36.jpg)
Git Directory• References:-refs
• Stores reference pointers for branches, tags and heads. • A reference is a pointer toan object, usually of type tag or commit. • References changes as the repository evolves
![Page 37: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/37.jpg)
Working Directory• Holds the current checkout of the files• Files can be removed or replaced by Git as
branches are switching• Working directory is temporary checkout place
![Page 38: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/38.jpg)
Index• The index is a temporary and dynamic binary file
that captures a version of the project’s overall structure
• The project’s state could be represented by a commit and a tree from any point in the project’s history
• The index allows a separation between incremental development steps and the committal of those changes.
![Page 39: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/39.jpg)
Index• Staging area between your working directory and
your repository• With commit data files from index are committed,
not from working directory• Can be viewed by git status command.
![Page 40: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/40.jpg)
Data flow
![Page 41: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/41.jpg)
Git Usage• Command-line tool(Git Bash)• Git GUI• IDE Plugin(JGit-based)
![Page 42: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/42.jpg)
Git Bash• Command-line tool• UNIX-style utility• Last straw
![Page 43: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/43.jpg)
Git GUI• MinGW – based• Former WinGit• No support
![Page 44: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/44.jpg)
JGit• Lightweight, pure Java library implementing the
Git• EGit - Eclipse team provider for Git• NBGit - Git Support for NetBeans
![Page 45: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/45.jpg)
Git Commands• init• checkout• fetch• pull• reset• merge• log
![Page 46: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/46.jpg)
Git Commands• add• commit• push• branch• tag
![Page 47: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/47.jpg)
First steps• Clone repository• Initialize repository
![Page 48: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/48.jpg)
Clone Repository• git clone git://git.kernel.org/pub/scm/git/git.git• git clone http://www.kernel.org/pub/scm/git/git.git
![Page 49: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/49.jpg)
Branching• Branch is graph of commits• Master branch is created by default• HEAD is pointer to the current branch• “git branch test” creates branch test.• “git checkout master” switches to branch master.• “git merge test” merges changes from test to
master.• Merges are done automatically.
![Page 50: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/50.jpg)
Conflicts• If conflict cannot be resolved index and working
tree are left in the special state• “git status” shows unmerged files with conflict
markers
• git add file.txt • git commit
![Page 51: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/51.jpg)
Roll Back• Reset• Checkout• Revert
![Page 52: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/52.jpg)
Reset• git reset --hard HEAD• git reset --hard ORIG_HEAD
![Page 53: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/53.jpg)
Checkout• git checkout HEAD MyClass.java
![Page 54: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/54.jpg)
Revert• Rollbacks the last commit(s) in the repository• git revert HEAD• git revert HEAD~1 –m 2
![Page 55: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/55.jpg)
Git References• All references are named with a slash-separated
path name starting with "refs“.
• -The branch "test" is short for "refs/heads/test". • The tag "v1.0" is short for "refs/tags/v1.0".• "origin/master" is short for
“refs/remotes/origin/master"
![Page 56: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/56.jpg)
Git References• The HEAD file is a symbolic reference to the
branch we are currently using• git symbolic-ref HEAD
• ref: refs/heads/master
![Page 57: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/57.jpg)
Advanced Git
![Page 58: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/58.jpg)
Branching strategy• master• develop
![Page 59: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/59.jpg)
Branching strategy• origin/master contains production-ready code• origin/develop containsdevelopment changes
![Page 60: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/60.jpg)
Branching strategy• Feature branches• Release branches• Hotfix branches
![Page 61: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/61.jpg)
Feature Branches• Feature branches (or topic branches) are used to
store new features• Can be added to develop or disregarded• git checkout –b newfeature develop
![Page 62: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/62.jpg)
Release Branches• Release branches support preparation of a new
production release
![Page 63: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/63.jpg)
Hotfix branches• Hotfix branches are related to new production
release.• Created in response to critical bugs in a
production environment.• Separates developing of thecurrent version and hotfix.
![Page 64: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/64.jpg)
Branching strategy
![Page 65: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/65.jpg)
Rebasing• git checkout -b mywork origin• git commit• git commit
![Page 66: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/66.jpg)
Rebasing
![Page 67: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/67.jpg)
Rebasing• git merge origin
![Page 68: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/68.jpg)
Rebasing• git checkout mywork • git rebase origin
![Page 69: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/69.jpg)
Rebasing
![Page 70: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/70.jpg)
Stashing• git stash save “Stashing reason“• …• git stash apply
![Page 71: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/71.jpg)
Treeishes• 980e3ccdaac54a0d4de358f3fe5d718027d96aae • 980e3ccdaac54a0d4• 980e3cc
![Page 72: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/72.jpg)
Treeishes• 980e3ccdaac54a0d4de358f3fe5d718027d96aae • origin/master• refs/remotes/origin/master • master• refs/heads/master• v1.0 • refs/tags/v1.0
![Page 73: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/73.jpg)
Issues search• git bisect start • git bisect good v1.0• git bisect bad master
• git bisect bad
• git show
• git bisect reset
![Page 74: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/74.jpg)
Blamestorming• git blame sha1_file.c
• 0fcfd160 (Linus Torvalds 2005-04-18 8) */• 0fcfd160 (Linus Torvalds 2005-04-18 9) #include
"cache.h"• 1f688557 (Junio C Hamano 2005-06-27 10)
#include "delta.h"• a733cb60 (Linus Torvalds 2005-06-28 11)
#include "pack.h"
![Page 75: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/75.jpg)
Git Hooks• Scripts placed in $GIT_DIR/hooks directory to
trigger action at certain points
• pre-commit• commit-msg• post-commit• post-checkout• post-merge
![Page 76: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/76.jpg)
Object Store• All objects are stored as compressed contents by
their SHA-1 values.• They contain the object type, size and contents in
a gzipped format.• Loose objects and packed objects.
![Page 77: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/77.jpg)
Loose Objects• Compressed data stored in a single file on disk• Every object written to a separate file
• SHA1 ab04d884140f7b0cf8bbf86d6883869f16a46f65
• GIT_DIR/objects/ab/04d884140f7b0cf8bbf86d6883869f16a46f65
![Page 78: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/78.jpg)
Packed Objects• Packfile is a format which stores the part that has
changed in the second file• Uses heuristic algorithm to define files to pack• git gc packs the data• git unpack-objects converts data into loose
format
![Page 79: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/79.jpg)
Ignoring files• # Ignore any file named sample.txt.• sample.txt• # Ignore Eclipse files• *.project• # except my.project with manual setting.• !my.project• # Ignore objects and archives.• *.[oa]
![Page 80: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/80.jpg)
Scripting• Ruby• PHP• Python• Perl
![Page 81: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/81.jpg)
Migration• Script support• CVS• SVN• Perforce• Mercurial
• fast-support tool
![Page 82: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/82.jpg)
Migration• git-svn clone
http://my-project.googlecode.com/svn/trunk new-project
• ~/git.git/contrib/fast-import/git-p4 clone //depot/project/main@all myproject
![Page 83: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/83.jpg)
GitHub
![Page 84: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/84.jpg)
GitHub• Web-based hosting service• Was launched in April 2008• Git repository, paid for private projects and free
for open-source projects• Run by Ruby on Rails & Erlang• Provides feeds and followers
![Page 85: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/85.jpg)
GrowthPeriod State2009 100000 users and 50000
repositories
2011 1 million users
2012 2 million users and 4 million repositories
2013 3 million users and 5 million repositories
![Page 86: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/86.jpg)
Octocat• Introduced by Tom Preston-Werner, cofounder of
GitHub• Composed of octopus and cat words
![Page 87: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/87.jpg)
Octocat
![Page 88: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/88.jpg)
Resources• Version Control with Git, 2nd Edition, 2012• Pro Git, 2009
![Page 89: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/89.jpg)
Pros• Painless branching• Separation between local repository and
upstream• Simplifies work in the distributed teams• Dramatic increase in performance• Integration with major VCS
![Page 90: Git.From thorns to the stars](https://reader038.vdocuments.mx/reader038/viewer/2022103016/554f592eb4c905b9508b5298/html5/thumbnails/90.jpg)
Cons• Repository security risks• Latest revision question• Pessimistic locks• Big learning curve• Commit identifiers• Not optimal for single developers