Download - Git
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