git basic

54
Nguyen Minh Tuan @FSS

Upload: nguyen-minh-tuan

Post on 17-Nov-2014

104 views

Category:

Technology


1 download

DESCRIPTION

Some very basic knowledge about Git. a good way to getting start. Content of this slide is based on many sources in slideshare and websites. I modified the expression. your feedback is more than welcome

TRANSCRIPT

Page 1: Git basic

Nguyen'Minh'Tuan'@FSS�

Page 2: Git basic

Decentralized'version'control'system�

subversion�

ONE'workflow' ANY'workflow'

Page 3: Git basic

Subversion�Git�

h@p://gitDscm.com/about/smallDandDfast�

Page 4: Git basic

Commit'&'Branch�

Merge�

Commands�

Workflow�

Page 5: Git basic

Commit'&'Branch�

Merge�

Commands�

Workflow�

Page 6: Git basic

Commit'&'Branch�Commit'#4'(newest)�

Commit'#1'(oldest)�

Commit'#2�

Commit'#3�Contents'•  Revision'•  Author'•  Commi@er'•  File’s'snapshot'•  Parent’s'revision�

Page 7: Git basic

4�

3�

2�

1�

Have�

Get�

Get�

Get�

Commit'&'Branch�

Can'Revert'to'any'revision'if'we'have'revision'informaXon''�

Commit'graph�

Page 8: Git basic

Commit'&'Branch�

3�

2�

1�Old�

New�

Master� Branch�

3'commits'in�

Page 9: Git basic

Commit'&'Branch�

3�

2�

1�Old�

New� Master�=�

Page 10: Git basic

Commit'&'Branch�4�

3�

2�

1�Old�

New� Master�=�

Add'1'new'commit'to'�

Master�

Page 11: Git basic

Commit'&'Branch�

=�Newest'commit� Branch�

Page 12: Git basic

Commit'&'Branch�

3�

2�

1�Old�

Master�=�

$git'branch'�

Dev�=�

Dev� Master�

(create'new'branch)�

New�(New'name)�

Page 13: Git basic

Commit'&'Branch�4�

3�

2�

1�Old�

New� Master�=�

Add'1'new'commit'to'�

Master�

=� Dev�

Page 14: Git basic

Commit'&'Branch�4�

3�

2�

1�Old�

New� Master�=�

Add'1'new'commit'to'�

=� Dev�

Dev�

4�

Page 15: Git basic

Commit'&'Branch�

Merge�

Commands�

Workflow�

Page 16: Git basic

Merge�

FastDForward'�

Non'FastDForward'�and�

Page 17: Git basic

Merge�

3�

2�

1�

Master�=�

FastDForward�=� Dev�

NO'branch'info'remained'�

Master� Dev�=�

Page 18: Git basic

Merge�

3�

2�

1�

Master�=�

Non'FastDForward�=� Dev�

NO'branch'info'remained'�

Master� Dev�8!=�

Page 19: Git basic

Merge�

Master�=�

=� Dev�

Master�=�

FastDForward'�

Non'FastDForward'�

Page 20: Git basic

Merge�

$git'merge'Dev�Using'FastDForward.'If'impossible,'use'Non'FastDForward�

$git'merge'DDnoDff'Dev�Using'Non'FastDForward�

$git'merge'–ffDonly'Dev�Using'FastDForward�

Page 21: Git basic

Commit'&'Branch�

Merge�

Commands�

Workflow�

Page 22: Git basic

Commands�Remote'repository�

'''''''''''

Local'environment�

Local'repository�

Local'directory�

Commit�

Modify�

push�

'''''''''''

Local'environment�

Local'directory�

Merge�

Fetch/pull�

Local'repository�

push�

Fetch/pull�

Page 23: Git basic

Commands�Project'root�

file1�

file2�

dir�

file3�

.git�

index�

config�

objects�

Work'tree�

Stage'area�

Git'repos�

Physical'structure'� Logical'structure'�

Page 24: Git basic

Commands�

Work'tree''''''''''''''

Stage'area'''''''''''''�

Git'repos'''''''''''''�

$git'init�

file1�

file2�

dir�

(created)� (created)�

file3�

Page 25: Git basic

Commands�

Work'tree''''''''''''''

Stage'area'''''''''''''�

Git'repos'''''''''''''�

$git'add'file1'dir/file3�

file1�

file2�

dir�

file3�

file1�

dir�

file3�

Page 26: Git basic

Commands�

Work'tree''''''''''''''

Stage'area'''''''''''''�

Git'repos'''''''''''''�

$git'commit'–m'‘some'msg’�

file1�

file2�

dir�

file3�

file1�

dir�

file3�

file1�

A'commit'ID'generated�

dir�

file3�

2f4c3�

Page 27: Git basic

Commands�

Work'tree''''''''''''''

Stage'area'''''''''''''�

Git'repos'''''''''''''�

Modify':'file1'=>'file1’�

file1’�

file2�

dir�

file3�

file1�

dir�

file3�

file1�

A'commit'ID'generated�

dir�

file3�

2f4c3�

Page 28: Git basic

Commands�

Work'tree''''''''''''''

Stage'area'''''''''''''�

Git'repos'''''''''''''�

$git'add'.�

file1’�

file2�

dir�

file3�

file1’�

dir�

file3�

file1�

A'commit'ID'generated�

dir�

file3�

2f4c3�

file2�

Page 29: Git basic

Commands�

Work'tree''''''''''''''

Stage'area'''''''''''''�

Git'repos'''''''''''''�

$git'commit'–m'‘new'commit’�

file1’�

file2�

dir�

file3�

file1’�

dir�

file3�

file1�

dir�

file3�

2f4c3�

file2� file2�

file1’�

7f8b3�

Page 30: Git basic

Commands�

Git'repos'''''''''''''�

$git'rm'dir/file3�

file1�

dir�

file3�

2f4c3�

file2�

file1’�

7f8b3�

5e4f2�

Work'tree''''''''''''''

Stage'area'''''''''''''�

file1’�

file2�

dir�

file1’�

dir�

file2�

Page 31: Git basic

Commands�

Git'repos'''''''''''''�

$git'add'file2’�

file1�

dir�

file3�

file2�

file1’�

7f8b3�

5e4f2�

Work'tree''''''''''''''

Stage'area'''''''''''''�

file1’�

file2’�

dir�

file1’�

dir�

file2’�

Page 32: Git basic

Commands�

Git'repos'''''''''''''�

$git'reset'HEAD'file2�

file1�

dir�

file3�

file2�

file1’�

7f8b3�

5e4f2�

Work'tree''''''''''''''

Stage'area'''''''''''''�

file1’�

file2’�

dir�

file1’�

dir�

file2�

Page 33: Git basic

Commands�

Git'repos'''''''''''''�

$git'checkout'–'file2�

file1�

dir�

file3�

file2�

file1’�

7f8b3�

5e4f2�

Work'tree''''''''''''''

Stage'area'''''''''''''�

file1’�

file2�

dir�

file1’�

dir�

file2�

Page 34: Git basic

Commands�

Git'repos'''''''''''''�

Files'movement�

Work'tree''''''''''''''

Stage'area'''''''''''''�

$git'init�

Files'modificaXon�

$git'add/rm/mv�

$git'commit�

$git'checkout'DD'file�

$git'reset'HEAD'file�

Page 35: Git basic

Commands�File’s'life'circle�

Untracked� Unmodified� Modified� Staged�

$git'add�

$git'rm�

Modify�

$git'add�

$git'rm�

$git'commit�

Page 36: Git basic

Commit'&'Branch�

Merge�

Commands�

Workflow�

Page 37: Git basic

Workflow�$git'init�

Remote'repository''''''

'''''Local'repository�

2�1�

Master�

Page 38: Git basic

Workflow�$git'clone'linkDtoDrepos�

Remote'repository''''''

'''''Local'repository�

2�1�

master�

2�1�

master�

origin/master�

Page 39: Git basic

Workflow�New$commit$on$remote$repos�

Remote'repository''''''

'''''Local'repository�

2�1�

master�

2�1�

master�

origin/master�

3�

Page 40: Git basic

Workflow�$git'fetch�

Remote'repository''''''

'''''Local'repository�

2�1�

master�

2�1�

master�

origin/master�

3�

3�

Page 41: Git basic

Workflow�$git'merge/rebase�

Remote'repository''''''

'''''Local'repository�

2�1�

master�

2�1�

master�

origin/master�

3�

3�

Page 42: Git basic

Workflow�New$commit$on$remote$repos�

Remote'repository''''''

'''''Local'repository�

2�1�

master�

2�1�

master�

origin/master�

3�

Page 43: Git basic

Workflow�$git'pull''(=$fetch$+$merge)�

Remote'repository''''''

'''''Local'repository�

2�1�

master�

2�1�

master�

origin/master�

3�

3�

Page 44: Git basic

Workflow�(modified$on$local$>$commit)�

Remote'repository''''''

'''''Local'repository�

2�1�

master�

2�1�

master�

origin/master�

3�

3� 4�

Page 45: Git basic

Workflow�$git'push�

Remote'repository''''''

'''''Local'repository�

2�1�

master�

2�1�

master�

origin/master�

3�

3� 4�

4�

Page 46: Git basic

Workflow�(modified$on$both$repos)�

Remote'repository''''''

'''''Local'repository�

2�1�

master�

2�1�

master�

origin/master�

3�

3� 4�

4� 5�

5�

Page 47: Git basic

Workflow�(firstly$merge$on$local$repos)�

Remote'repository''''''

'''''Local'repository�

2�1�

master�

2�1�

master�

origin/master�

3�

3� 4�

4� 5�

5�5�

6�

Page 48: Git basic

Workflow�$git'push�

Remote'repository''''''

'''''Local'repository�

2�1�

master�

2�1�

master�

origin/master�

3�

3� 4�

4� 5�

5�5�

6�

5�

6�

Page 49: Git basic

Workflow�A'successful'branching'model�

master�

develop�

hojixes�

feature1�

feature2�

release�

v'1.0� v'1.1� V'2.0�

Page 50: Git basic

Workflow�Main'branches:'master'&'develop'

master�

develop�

IniXal'pro'version�

next'pro'version�

next'pro'version�

develop�Work'for'next'release�

Origin/master''':'producXon'ready'state�

Origin/develop':'integraXon'branch,'stable'points,'ready'to'be'released.�

Page 51: Git basic

Workflow�SupporXng'branches�

develop�

feature1�

feature2�

Feature'branches'•  Branched'off'from'develop'•  Merge'back'into'develop'•  Any'name'•  For'developing'new'features'•  Exist'in'developer'repos'only'

Page 52: Git basic

Workflow�SupporXng'branches�

master�

develop�

release�

v'1.0� v'1.1� V'2.0�

Release'branches'•  Branched'off'from'develop'•  Merge'back'into'develop'and'master''•  Name:'releaseD***'•  For'new'producXon'release'(desired'state)'�

Page 53: Git basic

Workflow�SupporXng'branches�

master�

develop�

hojixes�

v'1.0� v'1.0.1� V'2.0�

Hojixes'branches'•  Branched'off'from'master'•  Merge'back'into'develop'and'master''•  Name:'hojixD***'•  Like'a'small'release,'to'fix'criXcal'bugs'�

Page 54: Git basic

Workflow�A'successful'branching'model�

master�

develop�

hojixes�

feature1�

feature2�

release�

v'1.0� v'1.1� V'2.0�

Main'development�