Outline● What is “git” ?● Glossary● Git Clients● Basic Setup● Working Model● Life Cycle● Basic Operations● Better Practices●● Q&A
Working Model
Local Centralized(most case)
Distributed(github, bitbucket, etc.)
https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control
Basic OperationsUntracked Staged UnstagedCommitted
object state action
new objects
$ git init $ git add stages objects
Basic OperationsUntracked Staged UnstagedCommitted
object state action
new objects
$ git init $ git add stages objects
$ git commitcommited objects
now, objects in version control
Basic OperationsUntracked Staged UnstagedCommitted
object state action
new objects
$ git init $ git add stages objects
$ git commitcommited objects
something changed !!!
commited objects### objects changes ###
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
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
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
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
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 :-)
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/
Advance - git reset (1/3)
A B C D E
HEAD, master
$ git reset C
before change:
A B C D E
HEAD, master
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
Advance - git reset (3/3)
A B C D E
HEAD, master
$ git reset --hard C
before change:
A B C
HEAD, master
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
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
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
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
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
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
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
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
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
Top Related