Upload
nguyen-minh-tuan
View
106
Download
1
Tags:
Embed Size (px)
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
Citation preview
Nguyen'Minh'Tuan'@FSS�
Decentralized'version'control'system�
subversion�
ONE'workflow' ANY'workflow'
Subversion�Git�
h@p://gitDscm.com/about/smallDandDfast�
Commit'&'Branch�
Merge�
Commands�
Workflow�
Commit'&'Branch�
Merge�
Commands�
Workflow�
Commit'&'Branch�Commit'#4'(newest)�
Commit'#1'(oldest)�
Commit'#2�
Commit'#3�Contents'• Revision'• Author'• Commi@er'• File’s'snapshot'• Parent’s'revision�
4�
3�
2�
1�
Have�
Get�
Get�
Get�
Commit'&'Branch�
Can'Revert'to'any'revision'if'we'have'revision'informaXon''�
Commit'graph�
Commit'&'Branch�
3�
2�
1�Old�
New�
Master� Branch�
3'commits'in�
Commit'&'Branch�
3�
2�
1�Old�
New� Master�=�
Commit'&'Branch�4�
3�
2�
1�Old�
New� Master�=�
Add'1'new'commit'to'�
Master�
Commit'&'Branch�
=�Newest'commit� Branch�
Commit'&'Branch�
3�
2�
1�Old�
Master�=�
$git'branch'�
Dev�=�
Dev� Master�
(create'new'branch)�
New�(New'name)�
Commit'&'Branch�4�
3�
2�
1�Old�
New� Master�=�
Add'1'new'commit'to'�
Master�
=� Dev�
Commit'&'Branch�4�
3�
2�
1�Old�
New� Master�=�
Add'1'new'commit'to'�
=� Dev�
Dev�
4�
Commit'&'Branch�
Merge�
Commands�
Workflow�
Merge�
FastDForward'�
Non'FastDForward'�and�
Merge�
3�
2�
1�
Master�=�
FastDForward�=� Dev�
NO'branch'info'remained'�
Master� Dev�=�
Merge�
3�
2�
1�
Master�=�
Non'FastDForward�=� Dev�
NO'branch'info'remained'�
Master� Dev�8!=�
Merge�
Master�=�
=� Dev�
Master�=�
FastDForward'�
Non'FastDForward'�
Merge�
$git'merge'Dev�Using'FastDForward.'If'impossible,'use'Non'FastDForward�
$git'merge'DDnoDff'Dev�Using'Non'FastDForward�
$git'merge'–ffDonly'Dev�Using'FastDForward�
Commit'&'Branch�
Merge�
Commands�
Workflow�
Commands�Remote'repository�
'''''''''''
Local'environment�
Local'repository�
Local'directory�
Commit�
Modify�
push�
'''''''''''
Local'environment�
Local'directory�
Merge�
Fetch/pull�
Local'repository�
push�
Fetch/pull�
Commands�Project'root�
file1�
file2�
dir�
file3�
.git�
index�
config�
objects�
Work'tree�
Stage'area�
Git'repos�
Physical'structure'� Logical'structure'�
Commands�
Work'tree''''''''''''''
Stage'area'''''''''''''�
Git'repos'''''''''''''�
$git'init�
file1�
file2�
dir�
(created)� (created)�
file3�
Commands�
Work'tree''''''''''''''
Stage'area'''''''''''''�
Git'repos'''''''''''''�
$git'add'file1'dir/file3�
file1�
file2�
dir�
file3�
file1�
dir�
file3�
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�
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�
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�
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�
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�
Commands�
Git'repos'''''''''''''�
$git'add'file2’�
file1�
dir�
file3�
file2�
file1’�
7f8b3�
5e4f2�
Work'tree''''''''''''''
Stage'area'''''''''''''�
file1’�
file2’�
dir�
file1’�
dir�
file2’�
Commands�
Git'repos'''''''''''''�
$git'reset'HEAD'file2�
file1�
dir�
file3�
file2�
file1’�
7f8b3�
5e4f2�
Work'tree''''''''''''''
Stage'area'''''''''''''�
file1’�
file2’�
dir�
file1’�
dir�
file2�
Commands�
Git'repos'''''''''''''�
$git'checkout'–'file2�
file1�
dir�
file3�
file2�
file1’�
7f8b3�
5e4f2�
Work'tree''''''''''''''
Stage'area'''''''''''''�
file1’�
file2�
dir�
file1’�
dir�
file2�
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�
Commands�File’s'life'circle�
Untracked� Unmodified� Modified� Staged�
$git'add�
$git'rm�
Modify�
$git'add�
$git'rm�
$git'commit�
Commit'&'Branch�
Merge�
Commands�
Workflow�
Workflow�$git'init�
Remote'repository''''''
'''''Local'repository�
2�1�
Master�
Workflow�$git'clone'linkDtoDrepos�
Remote'repository''''''
'''''Local'repository�
2�1�
master�
2�1�
master�
origin/master�
Workflow�New$commit$on$remote$repos�
Remote'repository''''''
'''''Local'repository�
2�1�
master�
2�1�
master�
origin/master�
3�
Workflow�$git'fetch�
Remote'repository''''''
'''''Local'repository�
2�1�
master�
2�1�
master�
origin/master�
3�
3�
Workflow�$git'merge/rebase�
Remote'repository''''''
'''''Local'repository�
2�1�
master�
2�1�
master�
origin/master�
3�
3�
Workflow�New$commit$on$remote$repos�
Remote'repository''''''
'''''Local'repository�
2�1�
master�
2�1�
master�
origin/master�
3�
Workflow�$git'pull''(=$fetch$+$merge)�
Remote'repository''''''
'''''Local'repository�
2�1�
master�
2�1�
master�
origin/master�
3�
3�
Workflow�(modified$on$local$>$commit)�
Remote'repository''''''
'''''Local'repository�
2�1�
master�
2�1�
master�
origin/master�
3�
3� 4�
Workflow�$git'push�
Remote'repository''''''
'''''Local'repository�
2�1�
master�
2�1�
master�
origin/master�
3�
3� 4�
4�
Workflow�(modified$on$both$repos)�
Remote'repository''''''
'''''Local'repository�
2�1�
master�
2�1�
master�
origin/master�
3�
3� 4�
4� 5�
5�
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�
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�
Workflow�A'successful'branching'model�
master�
develop�
hojixes�
feature1�
feature2�
release�
v'1.0� v'1.1� V'2.0�
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.�
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'
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)'�
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'�
Workflow�A'successful'branching'model�
master�
develop�
hojixes�
feature1�
feature2�
release�
v'1.0� v'1.1� V'2.0�
Main'development�