Top Banner
52

Git - a powerful version control tool

Apr 15, 2017

Download

Kuo-Le Mei
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Git - a powerful version control tool
Page 2: Git - a powerful version control tool

Outline● What is “git” ?● Glossary● Git Clients● Basic Setup● Working Model● Life Cycle● Basic Operations● Better Practices●● Q&A

Page 3: Git - a powerful version control tool

What is ‘git’ ?● a distributed version control system● a powerful version control tool● and more...

Page 4: Git - a powerful version control tool

Glossary●●●●●●

●●●●

●●●●●

https://git-scm.com/docs/gitglossary

Page 5: Git - a powerful version control tool

Git Clients

https://www.iconfinder.com/iconsets/flat-round-systemhttps://git-scm.com/downloads/guis

Page 6: Git - a powerful version control tool

Basic Setup●

●○

* optional flag

Page 7: Git - a powerful version control tool

Working Model

Local Centralized(most case)

Distributed(github, bitbucket, etc.)

https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control

Page 8: Git - a powerful version control tool

Life Cycle

Page 9: Git - a powerful version control tool

Life CycleUntracked Staged UnstagedCommitted

object state action

Page 10: Git - a powerful version control tool

Life CycleUntracked Staged UnstagedCommitted

object state action

Page 11: Git - a powerful version control tool

Life CycleUntracked Staged UnstagedCommitted

object state action

Page 12: Git - a powerful version control tool

Life CycleUntracked Staged UnstagedCommitted

object state action

Page 13: Git - a powerful version control tool

Basic Operations

Page 14: Git - a powerful version control tool

Basic OperationsUntracked Staged UnstagedCommitted

object state action

new objects

Page 15: Git - a powerful version control tool

Basic OperationsUntracked Staged UnstagedCommitted

object state action

new objects

$ git init

Page 16: Git - a powerful version control tool

Basic OperationsUntracked Staged UnstagedCommitted

object state action

new objects

$ git init

Page 17: Git - a powerful version control tool

Basic OperationsUntracked Staged UnstagedCommitted

object state action

new objects

$ git init $ git add stages objects

Page 18: Git - a powerful version control tool

Basic OperationsUntracked Staged UnstagedCommitted

object state action

new objects

$ git init $ git add stages objects

$ git commitcommited objects

now, objects in version control

Page 19: Git - a powerful version control tool

What’s a commit?

change summaries

change descriptions

author infomation

unique id

git “commit”

Page 20: Git - a powerful version control tool

Basic OperationsUntracked Staged UnstagedCommitted

object state action

new objects

$ git init $ git add stages objects

$ git commitcommited objects

something changed !!!

commited objects### objects changes ###

Page 21: Git - a powerful version control tool

Basic OperationsUntracked Staged UnstagedCommitted

object state action

New objects

$ git init $ git add Stages objects

$ git commitCommited objects

changes is now in version controlbut having no change descriptions

Unstaged objects### objects changes ###

$ git addStages objects

Page 22: Git - a powerful version control tool

Basic OperationsUntracked Staged UnstagedCommitted

object state action

New objects

$ git init $ git add Stages objects

$ git commitCommited objects

Unstaged objects### objects changes ###

$ git addStages objects

changes is now in version controlwith commit descriptions

$ git commitCommited objects

Page 23: Git - a powerful version control tool

Basic OperationsUntracked Staged UnstagedCommitted

object state action

New objects

$ git init $ git add Stages objects

$ git commitCommited objects

Unstaged objects### objects changes ###

$ git addStages objects

$ git commitCommited objects

Staged objects$ git rm

Page 24: Git - a powerful version control tool

Basic OperationsUntracked Staged UnstagedCommitted

object state action

New objects

$ git init $ git add Stages objects

$ git commitCommited objects

Unstaged objects### objects changes ###

$ git addStages objects

$ git commitCommited objects

Staged objects$ git rm

$ git commitCommited objects

Page 25: Git - a powerful version control tool

Object State & ChangeUntracked Staged UnstagedCommitted

action

$ git diff

Page 26: Git - a powerful version control tool

Untracked Staged UnstagedCommitted

action

$ git diff

$ git diff --cached

Object State & Change

Page 27: Git - a powerful version control tool

Basic Operations (local)●●●●●●●

Page 28: Git - a powerful version control tool

Basic Operations (remote)●●●●●●

Page 29: Git - a powerful version control tool

Better Practices●

Page 30: Git - a powerful version control tool

Better Practices●●

Subject, length <= 50 charsBut… information not enough

Page 31: Git - a powerful version control tool

Better Practices●●

Better~!!!Subject, length <= 50 chars

Page 32: Git - a powerful version control tool

Subject, length <= 50 chars

Blank line between long descriptions and subject

long descriptions, length <= 72 chars

exception: long link, email, etc.

Even Better~!Take responsibility for your commits :-)

Page 33: Git - a powerful version control tool

Better Practices●●●●

http://lmgtfy.com/?q=git+lesson+onehttp://lmgtfy.com/?q=git+branch+modelhttp://lmgtfy.com/?q=git+flowhttp://nvie.com/posts/a-successful-git-branching-model/

Page 34: Git - a powerful version control tool

Advanced Lesson

Page 35: Git - a powerful version control tool

Advance Operations●●●●

* commit histroy will be changed, danger!!!

Page 36: Git - a powerful version control tool

Advance - git revert

A B C D E

HEAD, master

$ git revert D

before change:

A B C D E

HEAD, master

D’

Page 37: Git - a powerful version control tool

Advance - git reset (1/3)

A B C D E

HEAD, master

$ git reset C

before change:

A B C D E

HEAD, master

Page 38: Git - a powerful version control tool

Advance - git reset (2/3)

A B C D E

HEAD, master

$ git reset --soft C

before change:

A B C D E

HEAD, master

Page 39: Git - a powerful version control tool

Advance - git reset (3/3)

A B C D E

HEAD, master

$ git reset --hard C

before change:

A B C

HEAD, master

Page 40: Git - a powerful version control tool

Advance - git cherry-pick

$ git cherry-pick Y

before change:

A B C D E

HEAD, masterX Y Z

A B C D E

HEAD, masterX Y Z

Y’

feature-A

feature-A

Page 41: Git - a powerful version control tool

Advance - git rebase

$ git rebase C

before change:

A B C

HEAD, feature -A

X’ Y’ Z’

A B C

HEAD, feature-A

X Y Z

master

master

Page 42: Git - a powerful version control tool

Advance - git merge (1/4)

$ git merge <branch>

before change:

A B

HEAD, master

X Y Z

HEAD, master, feature-A

A B X Y Z

feature-A

Page 43: Git - a powerful version control tool

Advance - git merge (2/4)

$ git merge --ff <branch>

before change:

A B

X Y Z

HEAD, master, feature-A

A B X Y Z

HEAD, master

feature-A

Page 44: Git - a powerful version control tool

Advance - git merge (3/4)

$ git merge --no-ff <branch>

before change:

A B

X Y Z

M

HEAD, master

A B

X Y Z

HEAD, master

feature-A

feature-A

Page 45: Git - a powerful version control tool

Advance - git merge (4/4)

$ git merge <branch>$ git merge --ff <branch>$ git merge --no-ff <branch>

before change:

A B C D E

HEAD, masterX Y Z

A B C D E

X Y Z

M

HEAD, master

feature-A

feature-A

Page 46: Git - a powerful version control tool

Advance - git pull (1/3)

$ git pull

before change:

A B C D E

HEAD, master origin/master

A B C D E

HEAD, master, origin/master

Page 47: Git - a powerful version control tool

Advance - git pull (2/3)

$ git pull

before change:

A B C

D E

HEAD, master

origin/master

A B C

D E

HEAD, master

origin/master

M

Page 48: Git - a powerful version control tool

Advance - git pull (3/3)

$ git pull --rebase

before change:

A B C

D E

origin/master

A B D E C’

HEAD, masterorigin/master

HEAD, master

Page 49: Git - a powerful version control tool

Useful Links●

○○○○○

●○○○○

Page 50: Git - a powerful version control tool

Best Tutorials●

●○

●○

Page 51: Git - a powerful version control tool

Question Time

Page 52: Git - a powerful version control tool

The End~