git
DESCRIPTION
This presentation is about how to use Git, the distributed version control system. It helps you to get started with Git and explains the basic concepts.TRANSCRIPT
GitThe fast version control system
Version Control System
• Allows to track changes to files
• Provides repository of changes
• Consists working directory / current state
• VCS can be:• Centralized (Ex: SVN, CVS)
• Server: single database• Clent: working directory and state.
• Decentralized(Ex: BitKeeper, Mercurial, Git)
What is Git?
• free & open source
• distributed version control system • Anyone can be the server• Repository coupled with working directory• Complete history• Disconnected operation• No single point of failure
• Designed to be fast and efficient for small and very large size projects
Git history
• 2002• Linus Torvalds decided to use BitKeeper for
tracking Linux kernel development• Linux development scales better
• 2005• BitMover dropped free license• Linus writes his own VCS, Git
Getting started with Git
• yum install git-core
• git clone --help
• git config --global user.name ‘Keshavaprasad B S’
• git config --global user.email [email protected]
Getting started with Git
• Creating new git repo:• git init
• git add
• git commit
• Cloning from existing repo:• man git-clone
Git config
• Types• $(prefix)/etc/gitconfig --> system• ~/.gitconfig --> global• .git/config --> local
• Aliases
Concept of working directory, index and repository
• git add -> adds stuff to index
• git commit -> commits stuff from index to repository
• git diff -> diff between working tree and index
• git diff --cached -> diff between HEAD and repository
Concept of working directory, index and repository
• git fetch-> fetch the code from remote repo to local
• git pull -> pulls code from remote to local and w.d.
• git checkout -> checkout code from local repo to w.d.
Git object model
• All the information needed to represent the history of a project is stored in files referenced by a 40-digit SHA1 hash.
• Each object consists of type, size and contents.
• 4 types of objects• Blob – stores files data (generally a file)• Tree – consists bunch of other trees or blobs (files
and subdirectories)• Commit – points to a single tree. Contains meta of
author, timestamp, pointer to prev. commit etc.• Tag – Marks a specific commit
Git object model
• Git show <sha>
gitk and git log
• Install gitk
• git log --pretty=oneline
• git log --pretty=format:'%h : %s' --topo-order –graph
• git log --no-merges
• git log --stat
Git branches
• git clone [email protected]:kbsbng/try_git.git
• git branch hack-1
• Make changes and commit to branch and master
• git rebase master hack-1
• git merge hack-1
Git merge/rebase
1. git checkout -b mywork origin
3a. git pull
3b. git pull --rebase
Git tags
• Lighweight tags (branch that never moves)• git tag stable-1 <commit>
• Tag Objects• Can include comments / signature• git tag –a stable-1 <commit>
Stashes
• git stash save “WIP for foo feature”
• git stash apply
• git stash list
Some tips
• Git grep can be used search through previous versions of a project without checking them out.
• master@{yesterday} refers to where the master branch was yesterday.
Git vs svn
• Cheap local branching
• Everything is Local
• Fast
• Git is small
• Provides staging area
• Distributed
• Any workflow
• Github
References
• http://book.git-scm.com/
• http://whygitisbetterthanx.com
Thank you