DO YOU WANT TO USE A VCS

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

description

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

Transcript of DO YOU WANT TO USE A VCS

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