Top Banner
Git The fast version control system
20

Git

Jan 15, 2015

Download

Technology

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.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Git

GitThe fast version control system

Page 2: Git

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)

Page 3: 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

Page 4: Git

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

Page 5: 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]

Page 6: Git

Getting started with Git

• Creating new git repo:• git init

• git add

• git commit

• Cloning from existing repo:• man git-clone

Page 7: Git

Git config

• Types• $(prefix)/etc/gitconfig --> system• ~/.gitconfig --> global• .git/config --> local

• Aliases

Page 8: Git

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

Page 9: Git

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.

Page 10: Git

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

Page 11: Git

Git object model

• Git show <sha>

Page 12: Git

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

Page 13: Git

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

Page 14: Git

Git merge/rebase

1. git checkout -b mywork origin

3a. git pull

3b. git pull --rebase

Page 15: Git

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>

Page 16: Git

Stashes

• git stash save “WIP for foo feature”

• git stash apply

• git stash list

Page 17: Git

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.

Page 18: Git

Git vs svn

• Cheap local branching

• Everything is Local

• Fast

• Git is small

• Provides staging area

• Distributed

• Any workflow

• Github

Page 19: Git

References

• http://book.git-scm.com/

• http://whygitisbetterthanx.com

Page 20: Git

Thank you