SlideShare a Scribd company logo
GIT: Inter-Snapshot 
SeongJae Park <sj38.park@gmail.com>
This Speak Aims To... 
Understanding conceptual inside of git 
Grow up a little once again together
Software Is Alive: Keeps Changing
Life Of Files 
FileA ver 0 FileB ver 0
Life Of Files 
FileB Changed 
FileA ver 0 FileB ver 1
Life Of Files 
FileA Changed 
FileB ver 1 FileA ver 1
Life Of Files 
FileB Changed Again 
FileA ver 1 FileB ver 2
Life Of Files 
“I miss FileA ver 0!” 
“Build fail, why? from when?” 
FileA ver 1 FileB ver 2
Software Is Alive: Keeps Changing 
“How To Keep Software’s Moment?”
Software Is Alive: Keeps Changing 
“How To Keep Software’s Moment?” 
$ ls 
0213_1st.tar 
0239_2nd.tar.gzip 
0305_final.zip 
0307_final2.alz
Software Is Alive: Keeps Changing 
“How To Keep Software’s Moment?” 
$ ls 
0213_1st.tar 
0239_2nd.tar.gzip 
0305_final.zip 
0307_final2.alz We will find a version. We always have. 
http://nofilmschool.com/sites/default/files/styles/article_wide/public/interstellar.jpg?itok=PDUgBX9v
VCS: Version Control System 
Help software history managing 
Just remember, You SHOULD use it
CVCS vs DVCS 
Centralized vs Distributed 
Not detail for this time(not main focus)… 
Just remember, CVCS is EVIL
git 
Distributed Version Control System 
Developed For Kernel SCM By Linus Torvalds 
“Only wimps use tape backup: real men just upload their important stuff on ftp, 
and let the rest of the world mirror it ;)” - Linus Torvalds 
Just remember, cool programmer uses GIT
TL; DR 
Snapshot is a moment of the universe 
History is a sequence of snapshots 
Parallel universes exist 
http://i0.kym-cdn.com/photos/images/newsfeed/000/021/503/tldr_trollcat.jpg?1318992465
GIT: BASIC CONCEPT 
History is a Sequence of Snapshots
Snapshot 
A moment of the universe 
$ tar cf snapshot.tar ShinyProject/* 
http://imageserver.moviepilot.com/simpsons-couch-the-simpsons-futurama-crossover-s-couch-gag-gets-weird.png?width=2213&height=1660
History: a Sequence Of Snapshots 
$ ls snapshots/ 
ss.1.tar 
ss.2.tar 
ss.3.tar 
ss.4.tar 
ss.5.tar 
http://vintageprintable.swivelchairmedia.com/wp-content/uploads/2011/05/Animal-Stop-motion-Cat-Running-Stop-motion-780x395.jpg 
a history
Parallel Universes 
Well known theory ;) 
For detail, http://www.youtube.com/watch?v=Ywn2Lz5zmYg
Parallel Universes 
In short, a snapshot could have multiple 
parents/children 
Parallel histories
GIT: CONCEPT, IN 
DETAIL 
Conceptual Implementation
Working, Staging, Snapshot Dirs 
● Based on the snapshot concept, 
○ VCS could be implemented using 3 types of 
directories 
■ Working, Staging, Snapshot 
http://www.make-upstudio.com/files/images/trainingcenter/Large/LIndia-1-6.jpg 
http://studio.maginei.com/studioimages/studio.jpg 
http://venturebeat.com/wp-content/uploads/2012/05/snapshots.jpg
Working Directory 
Sandbox for your funny work, hack, anything 
Source code usually reside here 
http://www.make-upstudio.com/files/images/trainingcenter/Large/LIndia-1-6.jpg
Staging Directory 
Files to be captured in next snapshot 
http://studio.maginei.com/studioimages/studio.jpg
Snapshot Directory 
Whole snapshots reside here 
Every snapshot could be identified uniquely 
http://venturebeat.com/wp-content/uploads/2012/05/snapshots.jpg
Simple Example 
$ mkdir tars; cd tars 
$ echo 80 > sense_of_humor 
$ cp sense_of_humor ../staging/ 
$ tar cf ../snapshots/1st ../staging/* 
$ echo 65 > sense_of_humor 
$ tar cf ../snapshots/2nd ../staging/* 
$ tar xf ../snapshots/1st ./ 
https://pbs.twimg.com/media/B2W_L20CcAAtfGW.jpg:large
GIT: COMMANDS 
Conceptual Implementation of Commands
git init 
Create internal directories 
$ mkdir ./.git 
$ mkdir ./.git/snapshots 
$ mkdir ./.git/staging
git add <file path> 
Add files to staging directory 
$ cp <file path> ./.git/staging/
git commit 
Create a snapshot from staging dir 
$ tar cf ./git/snapshots/<unique id>  
./git/staging/*
Branch 
Pointer to latest snapshot of a history 
branch 
‘master’
Branch 
Pointer to latest snapshot of a history 
Follows subsequent snapshots automatically 
branch 
‘master’ 
branch 
‘master’
git branch <name> 
Create a branch with <name> 
Created branch follows current history 
(Below code does not implement history following feature, though) 
$ ln -S ./git/snapshots/<name>  
./git/snapshots/<id>
git checkout <id or branch> 
● Restore a snapshot <id> or <branch> is 
pointing on working directory 
● If <branch>, transit to the branch’s history 
○ <branch> will follows subsequent snapshots 
$ tar xf ./git/snapshots/<id> ./
GIT: PARALLEL HISTORIES 
There are parallel universes
Parallel Universes 
Well known theory ;) 
For detail, http://www.youtube.com/watch?v=Ywn2Lz5zmYg
Parallel Universes 
In short, a snapshot could have multiple 
parents/children 
Parallel histories
Parallel Universes 
In short, a snapshot could have multiple 
parents/children 
Parallel histories 
Parallel history 1
Parallel Universes 
In short, a snapshot could have multiple 
parents/children 
Parallel histories 
Parallel history 1 
Parallel history 2
Parallel Universes 
In short, a snapshot could have multiple 
parents/children 
Parallel histories 
Parallel history 1 
Parallel history 2 
Parallel history 3
Parallel Universes 
Branch is useful to manage parallel histories 
branch 
‘foo’ 
branch 
‘master’
GIT: SCENARIOS 
It’s easy if you know parallel universes
“Wait, I did something wrong!” 
Past can’t be fixed(Available, actually… though not recommended) 
http://therecordingrevolution.com/wordpress/wp-content/uploads/2011/08/mistakes.gif
“Wait, I did something wrong!” 
Past can’t be fixed(Available, actually… though not recommended) 
Go back and start again from new parallel 
universe(no time-machine paradox!) 
http://d36xcvrkegf0f1.cloudfront.net/images/worlds/2755/HomerTimeTravels.jpg
Scenario: Horrible Thing Committed 
branch A
Scenario: Horrible Thing Committed 
Make new branch from last sane snapshot 
branch A 
branch B
Scenario: Horrible Thing Committed 
Do things right in this time 
branch B 
branch A
Scenario: Horrible Thing Committed 
Life goes on... 
branch B 
branch A
git merge <other branch> 
Create new child snapshot of 
Currently checked out(HEAD) snapshot and 
<other branch> 
branch B 
branch A 
(HEAD) 
$ git merge branch_Br
git merge <other branch> 
Create new child snapshot of 
Currently checked out(HEAD) snapshot and 
<other branch> 
branch A 
(HEAD) 
branch B 
$ git merge branch_Br 
$
Topic Branch 
New branch for every new topic coding 
branch 
topic1 
branch 
topic2 
branch 
master
Topic Branch 
New branch for every new topic coding 
New topic could be progressed parallel easily 
branch 
topic1 
branch 
topic2 
branch 
master
Topic Branch 
New branch for every new topic coding 
New topic could be progressed parallel easily 
It could be discarded or merged easily 
branch 
topic1 
branch 
topic2 
branch 
master
Topic Branch: Scenario 
1. New feature required 
branch 
master
Topic Branch: Scenario 
1. New feature required 
a. Create a topic branch 
branch 
topic1 
branch 
master
Topic Branch: Scenario 
a. Create a topic branch and work on it 
branch 
topic1 
1. New feature required 
branch 
master
Topic Branch: Scenario 
1. New feature required 
a. Create a topic branch and work on it 
2. Critical bug found 
a. Create a topic branch 
branch 
topic2 
branch 
topic1 
branch 
master
Topic Branch: Scenario 
1. New feature required 
a. Create a topic branch and work on it 
2. Critical bug found 
a. Create a topic branch and work on it 
branch 
topic1 
branch 
topic2 
branch 
master
Topic Branch: Scenario 
1. New feature required 
a. Create a topic branch and work on it 
2. Critical bug found 
a. Create a topic branch and work on it 
3. Merge finished branch 
branch 
topic1 
branch 
topic2 
branch 
master
git rebase --onto <new base> <from> <to> 
Apply changes from <from> to <to> on <new 
base> and checkout applied snapshot 
a b c d e f 
branch “from” 
g h branch “to” 
branch 
“new_base”
git rebase --onto <new base> <from> <to> 
Apply changes from <from> to <to> on <new 
base> and checkout applied snapshot 
a b c d e f 
g h branch “to” 
branch 
“new_base” 
branch “from” 
h’
GIT: REMOTE 
Inter-stellar git repositories
Remote Repository 
● Just Other’s snapshots directory 
● It could be connected via 
○ file system 
○ http protocol 
○ https protocol 
○ ssh protocol 
○ git protocol
git clone <remote repo path> 
Just fetch <remote repo> and checkout master 
branch of it 
The <remote repo> be named as ‘origin’ by 
default
git fetch <remote> 
Fetch <remote>’s snapshots to local repo 
<remote> is ‘origin’ by default 
cp <remote>/.git/snapshots/* ./git/snapshots/
git pull 
Just git fetch && git merge
git push <remote> <branch> 
Push <branch>’s snapshots to <remote>
Free GIT Repo Hosting Service 
● GitHub 
○ Popular service 
○ Money for private repository 
● Bitbucket 
○ Popular, though less than GitHub 
○ Free for restricted private repositories 
● GitLab 
○ GitHub like rich-features 
○ Installable on your private machine 
○ No limitation at all
Thank you :) 
http://jeancharpentier.files.wordpress.com/2012/02/capture-plein-c3a9cran-01022012-230955.jpg
This work by SeongJae Park is licensed under the 
Creative Commons Attribution-ShareAlike 3.0 Unported 
License. To view a copy of this license, visit http: 
//creativecommons.org/licenses/by-sa/3.0/.

More Related Content

What's hot

いつやるの?Git入門
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門
Masakazu Matsushita
 
JPA 스터디 Week1 - 하이버네이트, 캐시
JPA 스터디 Week1 - 하이버네이트, 캐시JPA 스터디 Week1 - 하이버네이트, 캐시
JPA 스터디 Week1 - 하이버네이트, 캐시
Covenant Ko
 
Git - a powerful version control tool
Git - a powerful version control toolGit - a powerful version control tool
Git - a powerful version control tool
Kuo-Le Mei
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
Sage Sharp
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Inside GitHub with Chris Wanstrath
Inside GitHub with Chris WanstrathInside GitHub with Chris Wanstrath
Inside GitHub with Chris Wanstrath
SV Ruby on Rails Meetup
 
Git 101 tutorial presentation
Git 101 tutorial presentationGit 101 tutorial presentation
Git 101 tutorial presentationTerry Wang
 
The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with Git
E Carter
 
Tracking large game assets with Git LFS
Tracking large game assets with Git LFSTracking large game assets with Git LFS
Tracking large game assets with Git LFS
Tim Pettersen
 
Version Control and Git - GitHub Workshop
Version Control and Git - GitHub WorkshopVersion Control and Git - GitHub Workshop
Version Control and Git - GitHub Workshop
All Things Open
 
Tracking huge files with Git LFS (GlueCon 2016)
Tracking huge files with Git LFS (GlueCon 2016)Tracking huge files with Git LFS (GlueCon 2016)
Tracking huge files with Git LFS (GlueCon 2016)
Tim Pettersen
 
GREAT STEP 1. 테스트 코드를 향한 위대한 발걸음
GREAT STEP 1. 테스트 코드를 향한 위대한 발걸음GREAT STEP 1. 테스트 코드를 향한 위대한 발걸음
GREAT STEP 1. 테스트 코드를 향한 위대한 발걸음
Covenant Ko
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
James Gray
 
[로켓 자바] Part 1 성능 튜닝 마인드 확립
[로켓 자바] Part 1 성능 튜닝 마인드 확립[로켓 자바] Part 1 성능 튜닝 마인드 확립
[로켓 자바] Part 1 성능 튜닝 마인드 확립
Covenant Ko
 
Git & GitHub for Beginners
Git & GitHub for BeginnersGit & GitHub for Beginners
Git & GitHub for Beginners
Sébastien Saunier
 
Git Real
Git RealGit Real
Git Real
Gong Haibing
 
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
Lemi Orhan Ergin
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
Nicolás Tourné
 
Git training
Git trainingGit training
Git training
Jérémy Gobet
 
GitGot: The Swiss Army Chainsaw of Git Repo Management
GitGot: The Swiss Army Chainsaw of Git Repo ManagementGitGot: The Swiss Army Chainsaw of Git Repo Management
GitGot: The Swiss Army Chainsaw of Git Repo Management
John Anderson
 

What's hot (20)

いつやるの?Git入門
いつやるの?Git入門いつやるの?Git入門
いつやるの?Git入門
 
JPA 스터디 Week1 - 하이버네이트, 캐시
JPA 스터디 Week1 - 하이버네이트, 캐시JPA 스터디 Week1 - 하이버네이트, 캐시
JPA 스터디 Week1 - 하이버네이트, 캐시
 
Git - a powerful version control tool
Git - a powerful version control toolGit - a powerful version control tool
Git - a powerful version control tool
 
Advanced Git Tutorial
Advanced Git TutorialAdvanced Git Tutorial
Advanced Git Tutorial
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Inside GitHub with Chris Wanstrath
Inside GitHub with Chris WanstrathInside GitHub with Chris Wanstrath
Inside GitHub with Chris Wanstrath
 
Git 101 tutorial presentation
Git 101 tutorial presentationGit 101 tutorial presentation
Git 101 tutorial presentation
 
The everyday developer's guide to version control with Git
The everyday developer's guide to version control with GitThe everyday developer's guide to version control with Git
The everyday developer's guide to version control with Git
 
Tracking large game assets with Git LFS
Tracking large game assets with Git LFSTracking large game assets with Git LFS
Tracking large game assets with Git LFS
 
Version Control and Git - GitHub Workshop
Version Control and Git - GitHub WorkshopVersion Control and Git - GitHub Workshop
Version Control and Git - GitHub Workshop
 
Tracking huge files with Git LFS (GlueCon 2016)
Tracking huge files with Git LFS (GlueCon 2016)Tracking huge files with Git LFS (GlueCon 2016)
Tracking huge files with Git LFS (GlueCon 2016)
 
GREAT STEP 1. 테스트 코드를 향한 위대한 발걸음
GREAT STEP 1. 테스트 코드를 향한 위대한 발걸음GREAT STEP 1. 테스트 코드를 향한 위대한 발걸음
GREAT STEP 1. 테스트 코드를 향한 위대한 발걸음
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
[로켓 자바] Part 1 성능 튜닝 마인드 확립
[로켓 자바] Part 1 성능 튜닝 마인드 확립[로켓 자바] Part 1 성능 튜닝 마인드 확립
[로켓 자바] Part 1 성능 튜닝 마인드 확립
 
Git & GitHub for Beginners
Git & GitHub for BeginnersGit & GitHub for Beginners
Git & GitHub for Beginners
 
Git Real
Git RealGit Real
Git Real
 
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
Git Anti-Patterns: How To Mess Up With Git and Love it Again - DevoxxPL 2017
 
Starting with Git & GitHub
Starting with Git & GitHubStarting with Git & GitHub
Starting with Git & GitHub
 
Git training
Git trainingGit training
Git training
 
GitGot: The Swiss Army Chainsaw of Git Repo Management
GitGot: The Swiss Army Chainsaw of Git Repo ManagementGitGot: The Swiss Army Chainsaw of Git Repo Management
GitGot: The Swiss Army Chainsaw of Git Repo Management
 

Viewers also liked

Porting golang development environment developed with golang
Porting golang development environment developed with golangPorting golang development environment developed with golang
Porting golang development environment developed with golang
SeongJae Park
 
An introduction to_golang.avi
An introduction to_golang.aviAn introduction to_golang.avi
An introduction to_golang.avi
SeongJae Park
 
gcma: guaranteed contiguous memory allocator
gcma:  guaranteed contiguous memory allocatorgcma:  guaranteed contiguous memory allocator
gcma: guaranteed contiguous memory allocator
SeongJae Park
 
Deep dark side of git - prologue
Deep dark side of git - prologueDeep dark side of git - prologue
Deep dark side of git - prologueSeongJae Park
 
(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi
SeongJae Park
 
Develop Android/iOS app using golang
Develop Android/iOS app using golangDevelop Android/iOS app using golang
Develop Android/iOS app using golang
SeongJae Park
 
Sw install with_without_docker
Sw install with_without_dockerSw install with_without_docker
Sw install with_without_docker
SeongJae Park
 
Understanding of linux kernel memory model
Understanding of linux kernel memory modelUnderstanding of linux kernel memory model
Understanding of linux kernel memory model
SeongJae Park
 
Deep dark-side of git: How git works internally
Deep dark-side of git: How git works internallyDeep dark-side of git: How git works internally
Deep dark-side of git: How git works internally
SeongJae Park
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using Golang
SeongJae Park
 

Viewers also liked (10)

Porting golang development environment developed with golang
Porting golang development environment developed with golangPorting golang development environment developed with golang
Porting golang development environment developed with golang
 
An introduction to_golang.avi
An introduction to_golang.aviAn introduction to_golang.avi
An introduction to_golang.avi
 
gcma: guaranteed contiguous memory allocator
gcma:  guaranteed contiguous memory allocatorgcma:  guaranteed contiguous memory allocator
gcma: guaranteed contiguous memory allocator
 
Deep dark side of git - prologue
Deep dark side of git - prologueDeep dark side of git - prologue
Deep dark side of git - prologue
 
(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi(Live) build and run golang web server on android.avi
(Live) build and run golang web server on android.avi
 
Develop Android/iOS app using golang
Develop Android/iOS app using golangDevelop Android/iOS app using golang
Develop Android/iOS app using golang
 
Sw install with_without_docker
Sw install with_without_dockerSw install with_without_docker
Sw install with_without_docker
 
Understanding of linux kernel memory model
Understanding of linux kernel memory modelUnderstanding of linux kernel memory model
Understanding of linux kernel memory model
 
Deep dark-side of git: How git works internally
Deep dark-side of git: How git works internallyDeep dark-side of git: How git works internally
Deep dark-side of git: How git works internally
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using Golang
 

Similar to Git inter-snapshot public

Using Git as your VCS with Bioconductor
Using Git as your VCS with BioconductorUsing Git as your VCS with Bioconductor
Using Git as your VCS with Bioconductortimyates
 
Introduction to Git (Greg Lonnon)
Introduction to Git (Greg Lonnon)Introduction to Git (Greg Lonnon)
Introduction to Git (Greg Lonnon)
Boise Web Technologies Group
 
Git Anti-Patterns: How To Mess Up With Git and Love it Again
Git Anti-Patterns: How To Mess Up With Git and Love it AgainGit Anti-Patterns: How To Mess Up With Git and Love it Again
Git Anti-Patterns: How To Mess Up With Git and Love it Again
Lemi Orhan Ergin
 
Git-ing out of your git messes
Git-ing out of  your git messesGit-ing out of  your git messes
Git-ing out of your git messes
Katie Sylor-Miller
 
That's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICThat's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETIC
La FeWeb
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
Rick Umali
 
Git
GitGit
Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017
Lemi Orhan Ergin
 
390a gitintro 12au
390a gitintro 12au390a gitintro 12au
390a gitintro 12au
Nguyen Van Hung
 
Git Tech Talk
Git  Tech TalkGit  Tech Talk
Git Tech Talk
Chris Johnson
 
Honestly Git Playground 20190221
Honestly Git Playground 20190221Honestly Git Playground 20190221
Honestly Git Playground 20190221
Shinho Kang
 
Git Distributed Version Control System
Git   Distributed Version Control SystemGit   Distributed Version Control System
Git Distributed Version Control SystemVictor Wong
 
Introduction of Git
Introduction of GitIntroduction of Git
Introduction of GitWayne Chen
 
Intro to Git DevOps Tally Presentation 101615
Intro to Git DevOps Tally Presentation 101615Intro to Git DevOps Tally Presentation 101615
Intro to Git DevOps Tally Presentation 101615Brian K. Vagnini
 
Introduction to git, an efficient distributed version control system
Introduction to git, an efficient distributed version control systemIntroduction to git, an efficient distributed version control system
Introduction to git, an efficient distributed version control system
AlbanLevy
 
How to Really Get Git
How to Really Get GitHow to Really Get Git
How to Really Get Git
Susan Tan
 
Introduction to Git for Artists
Introduction to Git for ArtistsIntroduction to Git for Artists
Introduction to Git for Artists
David Newbury
 

Similar to Git inter-snapshot public (20)

How to use git without rage
How to use git without rageHow to use git without rage
How to use git without rage
 
Using Git as your VCS with Bioconductor
Using Git as your VCS with BioconductorUsing Git as your VCS with Bioconductor
Using Git as your VCS with Bioconductor
 
Introduction to Git (Greg Lonnon)
Introduction to Git (Greg Lonnon)Introduction to Git (Greg Lonnon)
Introduction to Git (Greg Lonnon)
 
Git Anti-Patterns: How To Mess Up With Git and Love it Again
Git Anti-Patterns: How To Mess Up With Git and Love it AgainGit Anti-Patterns: How To Mess Up With Git and Love it Again
Git Anti-Patterns: How To Mess Up With Git and Love it Again
 
Git-ing out of your git messes
Git-ing out of  your git messesGit-ing out of  your git messes
Git-ing out of your git messes
 
That's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETICThat's (g)it! par Sébastien Dawans CETIC
That's (g)it! par Sébastien Dawans CETIC
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Loading...git
Loading...gitLoading...git
Loading...git
 
Git
GitGit
Git
 
Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017Git Anti Patterns - XP Days Ukraine 2017
Git Anti Patterns - XP Days Ukraine 2017
 
390a gitintro 12au
390a gitintro 12au390a gitintro 12au
390a gitintro 12au
 
Git Tech Talk
Git  Tech TalkGit  Tech Talk
Git Tech Talk
 
Honestly Git Playground 20190221
Honestly Git Playground 20190221Honestly Git Playground 20190221
Honestly Git Playground 20190221
 
Git
GitGit
Git
 
Git Distributed Version Control System
Git   Distributed Version Control SystemGit   Distributed Version Control System
Git Distributed Version Control System
 
Introduction of Git
Introduction of GitIntroduction of Git
Introduction of Git
 
Intro to Git DevOps Tally Presentation 101615
Intro to Git DevOps Tally Presentation 101615Intro to Git DevOps Tally Presentation 101615
Intro to Git DevOps Tally Presentation 101615
 
Introduction to git, an efficient distributed version control system
Introduction to git, an efficient distributed version control systemIntroduction to git, an efficient distributed version control system
Introduction to git, an efficient distributed version control system
 
How to Really Get Git
How to Really Get GitHow to Really Get Git
How to Really Get Git
 
Introduction to Git for Artists
Introduction to Git for ArtistsIntroduction to Git for Artists
Introduction to Git for Artists
 

More from SeongJae Park

Biscuit: an operating system written in go
Biscuit:  an operating system written in goBiscuit:  an operating system written in go
Biscuit: an operating system written in go
SeongJae Park
 
GCMA: Guaranteed Contiguous Memory Allocator
GCMA: Guaranteed Contiguous Memory AllocatorGCMA: Guaranteed Contiguous Memory Allocator
GCMA: Guaranteed Contiguous Memory Allocator
SeongJae Park
 
Linux Kernel Memory Model
Linux Kernel Memory ModelLinux Kernel Memory Model
Linux Kernel Memory Model
SeongJae Park
 
An Introduction to the Formalised Memory Model for Linux Kernel
An Introduction to the Formalised Memory Model for Linux KernelAn Introduction to the Formalised Memory Model for Linux Kernel
An Introduction to the Formalised Memory Model for Linux Kernel
SeongJae Park
 
Design choices of golang for high scalability
Design choices of golang for high scalabilityDesign choices of golang for high scalability
Design choices of golang for high scalability
SeongJae Park
 
Brief introduction to kselftest
Brief introduction to kselftestBrief introduction to kselftest
Brief introduction to kselftest
SeongJae Park
 
Experimental android hacking using reflection
Experimental android hacking using reflectionExperimental android hacking using reflection
Experimental android hacking using reflection
SeongJae Park
 
ash
ashash
Hacktime for adk
Hacktime for adkHacktime for adk
Hacktime for adk
SeongJae Park
 
Touch Android Without Touching
Touch Android Without TouchingTouch Android Without Touching
Touch Android Without Touching
SeongJae Park
 
AOSP에 컨트리뷰션 하기 dev festx korea 2012 presentation
AOSP에 컨트리뷰션 하기   dev festx korea 2012 presentationAOSP에 컨트리뷰션 하기   dev festx korea 2012 presentation
AOSP에 컨트리뷰션 하기 dev festx korea 2012 presentation
SeongJae Park
 

More from SeongJae Park (11)

Biscuit: an operating system written in go
Biscuit:  an operating system written in goBiscuit:  an operating system written in go
Biscuit: an operating system written in go
 
GCMA: Guaranteed Contiguous Memory Allocator
GCMA: Guaranteed Contiguous Memory AllocatorGCMA: Guaranteed Contiguous Memory Allocator
GCMA: Guaranteed Contiguous Memory Allocator
 
Linux Kernel Memory Model
Linux Kernel Memory ModelLinux Kernel Memory Model
Linux Kernel Memory Model
 
An Introduction to the Formalised Memory Model for Linux Kernel
An Introduction to the Formalised Memory Model for Linux KernelAn Introduction to the Formalised Memory Model for Linux Kernel
An Introduction to the Formalised Memory Model for Linux Kernel
 
Design choices of golang for high scalability
Design choices of golang for high scalabilityDesign choices of golang for high scalability
Design choices of golang for high scalability
 
Brief introduction to kselftest
Brief introduction to kselftestBrief introduction to kselftest
Brief introduction to kselftest
 
Experimental android hacking using reflection
Experimental android hacking using reflectionExperimental android hacking using reflection
Experimental android hacking using reflection
 
ash
ashash
ash
 
Hacktime for adk
Hacktime for adkHacktime for adk
Hacktime for adk
 
Touch Android Without Touching
Touch Android Without TouchingTouch Android Without Touching
Touch Android Without Touching
 
AOSP에 컨트리뷰션 하기 dev festx korea 2012 presentation
AOSP에 컨트리뷰션 하기   dev festx korea 2012 presentationAOSP에 컨트리뷰션 하기   dev festx korea 2012 presentation
AOSP에 컨트리뷰션 하기 dev festx korea 2012 presentation
 

Recently uploaded

Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 

Recently uploaded (20)

Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 

Git inter-snapshot public

  • 1. GIT: Inter-Snapshot SeongJae Park <sj38.park@gmail.com>
  • 2. This Speak Aims To... Understanding conceptual inside of git Grow up a little once again together
  • 3. Software Is Alive: Keeps Changing
  • 4. Life Of Files FileA ver 0 FileB ver 0
  • 5. Life Of Files FileB Changed FileA ver 0 FileB ver 1
  • 6. Life Of Files FileA Changed FileB ver 1 FileA ver 1
  • 7. Life Of Files FileB Changed Again FileA ver 1 FileB ver 2
  • 8. Life Of Files “I miss FileA ver 0!” “Build fail, why? from when?” FileA ver 1 FileB ver 2
  • 9. Software Is Alive: Keeps Changing “How To Keep Software’s Moment?”
  • 10. Software Is Alive: Keeps Changing “How To Keep Software’s Moment?” $ ls 0213_1st.tar 0239_2nd.tar.gzip 0305_final.zip 0307_final2.alz
  • 11. Software Is Alive: Keeps Changing “How To Keep Software’s Moment?” $ ls 0213_1st.tar 0239_2nd.tar.gzip 0305_final.zip 0307_final2.alz We will find a version. We always have. http://nofilmschool.com/sites/default/files/styles/article_wide/public/interstellar.jpg?itok=PDUgBX9v
  • 12. VCS: Version Control System Help software history managing Just remember, You SHOULD use it
  • 13. CVCS vs DVCS Centralized vs Distributed Not detail for this time(not main focus)… Just remember, CVCS is EVIL
  • 14. git Distributed Version Control System Developed For Kernel SCM By Linus Torvalds “Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it ;)” - Linus Torvalds Just remember, cool programmer uses GIT
  • 15. TL; DR Snapshot is a moment of the universe History is a sequence of snapshots Parallel universes exist http://i0.kym-cdn.com/photos/images/newsfeed/000/021/503/tldr_trollcat.jpg?1318992465
  • 16. GIT: BASIC CONCEPT History is a Sequence of Snapshots
  • 17. Snapshot A moment of the universe $ tar cf snapshot.tar ShinyProject/* http://imageserver.moviepilot.com/simpsons-couch-the-simpsons-futurama-crossover-s-couch-gag-gets-weird.png?width=2213&height=1660
  • 18. History: a Sequence Of Snapshots $ ls snapshots/ ss.1.tar ss.2.tar ss.3.tar ss.4.tar ss.5.tar http://vintageprintable.swivelchairmedia.com/wp-content/uploads/2011/05/Animal-Stop-motion-Cat-Running-Stop-motion-780x395.jpg a history
  • 19. Parallel Universes Well known theory ;) For detail, http://www.youtube.com/watch?v=Ywn2Lz5zmYg
  • 20. Parallel Universes In short, a snapshot could have multiple parents/children Parallel histories
  • 21. GIT: CONCEPT, IN DETAIL Conceptual Implementation
  • 22. Working, Staging, Snapshot Dirs ● Based on the snapshot concept, ○ VCS could be implemented using 3 types of directories ■ Working, Staging, Snapshot http://www.make-upstudio.com/files/images/trainingcenter/Large/LIndia-1-6.jpg http://studio.maginei.com/studioimages/studio.jpg http://venturebeat.com/wp-content/uploads/2012/05/snapshots.jpg
  • 23. Working Directory Sandbox for your funny work, hack, anything Source code usually reside here http://www.make-upstudio.com/files/images/trainingcenter/Large/LIndia-1-6.jpg
  • 24. Staging Directory Files to be captured in next snapshot http://studio.maginei.com/studioimages/studio.jpg
  • 25. Snapshot Directory Whole snapshots reside here Every snapshot could be identified uniquely http://venturebeat.com/wp-content/uploads/2012/05/snapshots.jpg
  • 26. Simple Example $ mkdir tars; cd tars $ echo 80 > sense_of_humor $ cp sense_of_humor ../staging/ $ tar cf ../snapshots/1st ../staging/* $ echo 65 > sense_of_humor $ tar cf ../snapshots/2nd ../staging/* $ tar xf ../snapshots/1st ./ https://pbs.twimg.com/media/B2W_L20CcAAtfGW.jpg:large
  • 27. GIT: COMMANDS Conceptual Implementation of Commands
  • 28. git init Create internal directories $ mkdir ./.git $ mkdir ./.git/snapshots $ mkdir ./.git/staging
  • 29. git add <file path> Add files to staging directory $ cp <file path> ./.git/staging/
  • 30. git commit Create a snapshot from staging dir $ tar cf ./git/snapshots/<unique id> ./git/staging/*
  • 31. Branch Pointer to latest snapshot of a history branch ‘master’
  • 32. Branch Pointer to latest snapshot of a history Follows subsequent snapshots automatically branch ‘master’ branch ‘master’
  • 33. git branch <name> Create a branch with <name> Created branch follows current history (Below code does not implement history following feature, though) $ ln -S ./git/snapshots/<name> ./git/snapshots/<id>
  • 34. git checkout <id or branch> ● Restore a snapshot <id> or <branch> is pointing on working directory ● If <branch>, transit to the branch’s history ○ <branch> will follows subsequent snapshots $ tar xf ./git/snapshots/<id> ./
  • 35. GIT: PARALLEL HISTORIES There are parallel universes
  • 36. Parallel Universes Well known theory ;) For detail, http://www.youtube.com/watch?v=Ywn2Lz5zmYg
  • 37. Parallel Universes In short, a snapshot could have multiple parents/children Parallel histories
  • 38. Parallel Universes In short, a snapshot could have multiple parents/children Parallel histories Parallel history 1
  • 39. Parallel Universes In short, a snapshot could have multiple parents/children Parallel histories Parallel history 1 Parallel history 2
  • 40. Parallel Universes In short, a snapshot could have multiple parents/children Parallel histories Parallel history 1 Parallel history 2 Parallel history 3
  • 41. Parallel Universes Branch is useful to manage parallel histories branch ‘foo’ branch ‘master’
  • 42. GIT: SCENARIOS It’s easy if you know parallel universes
  • 43. “Wait, I did something wrong!” Past can’t be fixed(Available, actually… though not recommended) http://therecordingrevolution.com/wordpress/wp-content/uploads/2011/08/mistakes.gif
  • 44. “Wait, I did something wrong!” Past can’t be fixed(Available, actually… though not recommended) Go back and start again from new parallel universe(no time-machine paradox!) http://d36xcvrkegf0f1.cloudfront.net/images/worlds/2755/HomerTimeTravels.jpg
  • 45. Scenario: Horrible Thing Committed branch A
  • 46. Scenario: Horrible Thing Committed Make new branch from last sane snapshot branch A branch B
  • 47. Scenario: Horrible Thing Committed Do things right in this time branch B branch A
  • 48. Scenario: Horrible Thing Committed Life goes on... branch B branch A
  • 49. git merge <other branch> Create new child snapshot of Currently checked out(HEAD) snapshot and <other branch> branch B branch A (HEAD) $ git merge branch_Br
  • 50. git merge <other branch> Create new child snapshot of Currently checked out(HEAD) snapshot and <other branch> branch A (HEAD) branch B $ git merge branch_Br $
  • 51. Topic Branch New branch for every new topic coding branch topic1 branch topic2 branch master
  • 52. Topic Branch New branch for every new topic coding New topic could be progressed parallel easily branch topic1 branch topic2 branch master
  • 53. Topic Branch New branch for every new topic coding New topic could be progressed parallel easily It could be discarded or merged easily branch topic1 branch topic2 branch master
  • 54. Topic Branch: Scenario 1. New feature required branch master
  • 55. Topic Branch: Scenario 1. New feature required a. Create a topic branch branch topic1 branch master
  • 56. Topic Branch: Scenario a. Create a topic branch and work on it branch topic1 1. New feature required branch master
  • 57. Topic Branch: Scenario 1. New feature required a. Create a topic branch and work on it 2. Critical bug found a. Create a topic branch branch topic2 branch topic1 branch master
  • 58. Topic Branch: Scenario 1. New feature required a. Create a topic branch and work on it 2. Critical bug found a. Create a topic branch and work on it branch topic1 branch topic2 branch master
  • 59. Topic Branch: Scenario 1. New feature required a. Create a topic branch and work on it 2. Critical bug found a. Create a topic branch and work on it 3. Merge finished branch branch topic1 branch topic2 branch master
  • 60. git rebase --onto <new base> <from> <to> Apply changes from <from> to <to> on <new base> and checkout applied snapshot a b c d e f branch “from” g h branch “to” branch “new_base”
  • 61. git rebase --onto <new base> <from> <to> Apply changes from <from> to <to> on <new base> and checkout applied snapshot a b c d e f g h branch “to” branch “new_base” branch “from” h’
  • 62. GIT: REMOTE Inter-stellar git repositories
  • 63. Remote Repository ● Just Other’s snapshots directory ● It could be connected via ○ file system ○ http protocol ○ https protocol ○ ssh protocol ○ git protocol
  • 64. git clone <remote repo path> Just fetch <remote repo> and checkout master branch of it The <remote repo> be named as ‘origin’ by default
  • 65. git fetch <remote> Fetch <remote>’s snapshots to local repo <remote> is ‘origin’ by default cp <remote>/.git/snapshots/* ./git/snapshots/
  • 66. git pull Just git fetch && git merge
  • 67. git push <remote> <branch> Push <branch>’s snapshots to <remote>
  • 68. Free GIT Repo Hosting Service ● GitHub ○ Popular service ○ Money for private repository ● Bitbucket ○ Popular, though less than GitHub ○ Free for restricted private repositories ● GitLab ○ GitHub like rich-features ○ Installable on your private machine ○ No limitation at all
  • 69. Thank you :) http://jeancharpentier.files.wordpress.com/2012/02/capture-plein-c3a9cran-01022012-230955.jpg
  • 70. This work by SeongJae Park is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http: //creativecommons.org/licenses/by-sa/3.0/.