do you want to use a vcs

42
DO YOU WANNA USE A VCS SeongJae Park <[email protected]>

Upload: seongjae-park

Post on 10-May-2015

268 views

Category:

Technology


0 download

DESCRIPTION

Short introduction about vcs & git usage. Aimed to introduce concept of version control system and git to people who didn't used git or vcs yet. Doesn't introduce deep part of git or operating policy for git. Just focus on simple introduction about main functionality and abstracted internal design.

TRANSCRIPT

Page 1: DO YOU WANT TO USE A VCS

DO YOU WANNA USE A VCSSeongJae Park <[email protected]>

Page 2: DO YOU WANT TO USE A VCS

Software Is Alive: Keeps Changing

“How To Keep Software’s Moment?”

Page 3: DO YOU WANT TO USE A VCS

Life Of Files

FileA ver 0 FileB ver 0

Page 4: DO YOU WANT TO USE A VCS

Life Of Files

FileB Changed

FileA ver 0 FileB ver 1

Page 5: DO YOU WANT TO USE A VCS

Life Of Files

FileA Changed

FileB ver 1 FileA ver 1

Page 6: DO YOU WANT TO USE A VCS

Life Of Files

FileB Changed Again

FileB ver 2FileA ver 1

Page 7: DO YOU WANT TO USE A VCS

Software Is Alive: Keeps Changing

“How To Keep Software’s Moment?”

$ ls0213_1st.tar0239_2nd.tar.gzip0305_final.zip0307_final2.alz

Page 8: DO YOU WANT TO USE A VCS

VCS: Version Control System

Help Versioning, History Managing

Page 9: DO YOU WANT TO USE A VCS

VCS: Version Control System

Help Versioning, History Managing

Get Back Specific Version’s Software Anytime

Page 10: DO YOU WANT TO USE A VCS

CVCS vs DVCS

Centralized vs Distributed

Not Detail This Time…

Just Remember, CVCS is EVIL

Page 11: DO YOU WANT TO USE A VCS

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

Page 12: DO YOU WANT TO USE A VCS

GIT, ALONE AND FREE“Yes, I’m Alone, But I’m Alone And Free”

- Frozen -

Page 13: DO YOU WANT TO USE A VCS

git init: Create Repository

$ mkdir olaf && cd olaf && git init

`pwd` Is Now A Git Repository

Can Version Control Files Inside `pwd` Now

Page 14: DO YOU WANT TO USE A VCS

git add: Add Files Under Git’s Admin

$ echo “warmhug” > favor && git add favor

They Will Be One Of Version Later

Page 15: DO YOU WANT TO USE A VCS

git status: Show Git’s Admin Status

$ git status

$ echo “anna” >> favor

$ git status

Changed? Deleted? Be Conflicted?

Page 16: DO YOU WANT TO USE A VCS

git commit: Make Version

$ git commit -m “add warmhug as favor”

Already Added Files Are New Version, Now

Page 17: DO YOU WANT TO USE A VCS

git log: Show History

● Development Cycle○ While(!blamed) {Analysis(); Develop(); Blame();}

Useful For Blaming ;)

Page 18: DO YOU WANT TO USE A VCS

git branch: Manage Branches

git branch;

git branch more_favor;

git branch;

Page 19: DO YOU WANT TO USE A VCS

git checkout: Move To Other Branch

git checkout more_favor

git branch

git commit -am “add anna as favor, too”

git log

git checkout master

git log

Page 20: DO YOU WANT TO USE A VCS

git checkout: Move To Commit

$ git checkout d8ec26

Branch Is Just Name Of Ref To Commit

Page 21: DO YOU WANT TO USE A VCS

Life Of Files Under Git, Internal

FileA ver 0 FileB ver 0

Page 22: DO YOU WANT TO USE A VCS

git commit

FileA ver 0 FileB ver 0

commit 1

Life Of Files Under Git, Internal

Page 23: DO YOU WANT TO USE A VCS

git branch

FileA ver 0 FileB ver 0

commit 1

master branch

Life Of Files Under Git, InternalHEAD

Page 24: DO YOU WANT TO USE A VCS

FileB Changed

FileA ver 0 FileB ver 0 FileB ver 1

commit 1

master branch

Life Of Files Under Git, InternalHEAD

Page 25: DO YOU WANT TO USE A VCS

git commit -a

FileA ver 0 FileB ver 0 FileB ver 1

commit 1 commit 2

master branch

Life Of Files Under Git, InternalHEAD

Page 26: DO YOU WANT TO USE A VCS

git commit -a

FileA ver 0 FileB ver 0 FileB ver 1

commit 1 commit 2

master branch

Life Of Files Under Git, InternalHEAD

Page 27: DO YOU WANT TO USE A VCS

Change FileA, FileBgit commit -a

FileA ver 0 FileA ver 1FileB ver 0 FileB ver 1 FileB ver 2

commit 1 commit 2 commit 3

master branch

Life Of Files Under Git, InternalHEAD

Page 28: DO YOU WANT TO USE A VCS

git checkout -b newbranch

FileA ver 0 FileA ver 1FileB ver 0 FileB ver 1

commit 1 commit 2 commit 3

master branch newbranch

FileB ver 2

Life Of Files Under Git, InternalHEAD

Page 29: DO YOU WANT TO USE A VCS

Change FileAgit commit -a

FileA ver 0 FileA ver 1FileB ver 0 FileB ver 1 FileB ver 2

commit 1 commit 2 commit 3

master branch

FileA ver 2

commit 4

newbranch

Life Of Files Under Git, InternalHEAD

Page 30: DO YOU WANT TO USE A VCS

GIT IS AN OPEN DOOR“We Can Fix This Hand In Hand”

- Frozen -

Page 31: DO YOU WANT TO USE A VCS

Communication Between Repos

Git Repositories Can…ClonePush Commits ToPull Commits FromEach Others

Page 32: DO YOU WANT TO USE A VCS

Protocol Between Repos

HTTP://HTTPS://GIT://SSH://

Even Usual File System

Page 33: DO YOU WANT TO USE A VCS

git clone: Clone Other’s Repo

$ git clone /home/elsa/olaf

Page 34: DO YOU WANT TO USE A VCS

git remote: Manage Remote Repos

$ git remote

$ git remote add origin /home/elsa/olaf

Page 35: DO YOU WANT TO USE A VCS

git push: Push Changes To Remote

$ echo “carrot” > noise && git add noise \

&& git commit -am “add noise”

$ git push

Page 36: DO YOU WANT TO USE A VCS

git pull: Fetch & Merge Changes

May Cause Conflict In Some Scenario

Remember To Make Things Clean Before Push

Page 37: DO YOU WANT TO USE A VCS

Free GIT Repo Hosting Service

● GitHub○ Popular Service○ Money For Private Repository

● Bitbucket○ Less Than GitHub, But Popular○ No Money For Private Repository

Page 38: DO YOU WANT TO USE A VCS

FAQ: When Commit?

One Commit For One Logical Change

Page 39: DO YOU WANT TO USE A VCS

FAQ: How To Revert?

git reset --soft HEAD^

Page 40: DO YOU WANT TO USE A VCS

FAQ: How To Revert Silently?

$ git reset --hard HEAD^

Page 41: DO YOU WANT TO USE A VCS

FAQ: Howto @#$@!%^?

Sorry, Next Time…

Page 42: DO YOU WANT TO USE A VCS

IT’s TIME TO SEEWhat You Can Do

To Test The Limit And Breakthrough