Target audience: intermediate, beginner
a quick slide for users who work with "git", but not familiar with it.
Outline
- What is "git" ?
- Life Cycle
- How does git work?
- Better practice?
- Working with other?
- Pull, Push, Merge, behind the scene
7. Working Model
Local Centralized
(most case)
Distributed
(github, bitbucket, etc.)
https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control
21. Basic Operations
Untracked Staged UnstagedCommitted
object state action
New objects
$ git init $ git add Stages objects
$ git
commit
Commited objects
changes is now in version control
but having no change descriptions
Unstaged objects### objects changes ###
$ git addStages objects
22. Basic Operations
Untracked Staged UnstagedCommitted
object state action
New objects
$ git init $ git add Stages objects
$ git
commit
Commited objects
Unstaged objects### objects changes ###
$ git addStages objects
changes is now in version control
with commit descriptions
$ git
commit
Commited objects
32. 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 :-)
36. Advance - git revert
A B C D E
HEAD, master
$ git revert D
before change:
A B C D E
HEAD, master
D’
37. Advance - git reset (1/3)
A B C D E
HEAD, master
$ git reset C
before change:
A B C D E
HEAD, master
38. 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
39. Advance - git reset (3/3)
A B C D E
HEAD, master
$ git reset --hard C
before change:
A B C
HEAD, master
40. 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
41. 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
42. 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
43. 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
44. 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
45. 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
46. 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
47. 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
48. 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