$30 off During Our Annual Pro Sale. View Details »

你知道 Git 是怎麼一回事嗎

高見龍
August 10, 2017

你知道 Git 是怎麼一回事嗎

這是在今年 ModernWeb 研討會上分享的講題。這個主題基本上算是一個科普等級的分享,主要是介紹關於 Git 一些你可能知道,也可能還不知道,或是以為已經知道但其實是不知道的東西。

高見龍

August 10, 2017
Tweet

More Decks by 高見龍

Other Decks in Technology

Transcript

  1. ≁䫆聼)KV㤐㋯熝⃡⦿Ⅼ⢯!
    涹屬牮 "GFFKGMCQ

    View Slide

  2. CMC'FFKG
    砵䛟⡽禎⒘桡䥥䚊⑘
    4WD[4CKNUK15CRR桬䥝勦珮巼ㄌ
    4WD[㕡绮㚉苕珮磐綔珮巏嵃
    ⛑䍄珮㣆㨍4WD[㕡绮䫵峯㧤巼勦
    䧏┮㢝ⅵ⋮俦⻗䫔㞵⇜俦⻗䫔脾⹻⠧綇甒
    揉圞㬝獌http://kaochenlong.com
    涹屬牮
    photo by Eddie
    "GFFKGMCQ

    View Slide

  3. 傓⨡獌http://railsbook.tw

    View Slide

  4. 傓⨡獌http://railsbook.tw
    ✓聅㤐⃡㨍4WD[QP4CKNU
    䥥⑆桡㧙珯

    View Slide

  5. 傓⨡獌http://railsbook.tw
    ✓聅㤐⃡㨍4WD[QP4CKNU
    䥥⑆桡㧙珯
    ✓㽳㏰⯷䥥嵒苌Ⰸ㱣ℾ㧩
    㧤⃫ャ
    㒪嵓✈珯

    View Slide

  6. 傓⨡獌http://railsbook.tw
    ✓聅㤐⃡㨍4WD[QP4CKNU
    䥥⑆桡㧙珯
    ✓㽳㏰⯷䥥嵒苌Ⰸ㱣ℾ㧩
    㧤⃫ャ
    㒪嵓✈珯
    ✓⻢橃䡗竅⃮㤐桘聅㴄

    View Slide

  7. 傓⨡獌http://railsbook.tw
    ✓聅㤐⃡㨍4WD[QP4CKNU
    䥥⑆桡㧙珯
    ✓㽳㏰⯷䥥嵒苌Ⰸ㱣ℾ㧩
    㧤⃫ャ
    㒪嵓✈珯
    ✓⻢橃䡗竅⃮㤐桘聅㴄
    ✓傓櫢䔩⛐㢝傻⃫␮徜梒
    幡珯

    View Slide

  8. ⅵ⋮俦⻗䫔 https://5xruby.tw/

    View Slide

  9. ⅵ⋮俦⻗䫔 https://5xruby.tw/

    View Slide

  10. ⅵ⋮俦⻗䫔 https://5xruby.tw/

    View Slide

  11. ⅵ⋮俦⻗䫔 https://5xruby.tw/

    View Slide

  12. ⹙瘍
    ⅵ⋮俦⻗䫔 https://5xruby.tw/

    View Slide

  13. ⹙瘍
    ⹙㈀
    ⅵ⋮俦⻗䫔 https://5xruby.tw/

    View Slide

  14. ⹙瘍
    ⹙㈀
    椠历
    ⅵ⋮俦⻗䫔 https://5xruby.tw/

    View Slide

  15. 憌䎛⃡∮⻩礱䥥䮝抓
    憌⃫腠磢ㄗ圸俦夠埵⅀㤐㉩⛩䛧䥥

    View Slide

  16. 㧪䘯㊖丵磢桴

    View Slide

  17. 肏⛩⻮羖

    View Slide

  18. ㅔㄙテ∽㧪⨉䠉)KV
    㓷㧟側䠉職)KV

    View Slide

  19. )KV㉩伂⢏苌㓲㧤

    View Slide

  20. View Slide

  21. $ git add .

    View Slide

  22. $ git add .
    $ git commit -m "done!"

    View Slide

  23. 㔴⹭㠗テ

    View Slide

  24. )KV伂⢏⢯!⧑槄⢯!

    View Slide

  25. )KV⃮乸槄苌∧䨀䥥⃮痙⹙

    View Slide

  26. 㣴⹙槄侟

    View Slide

  27. ㅶ⽅❞⇅
    2NWODKPI
    XU
    涹楯㗨⇅
    2QTEGNCKP

    View Slide

  28. 㾶┨

    View Slide

  29. )KV580 /CIKE

    View Slide

  30. git add .惀git add --all
    聅⑊⋬㗨⇅㧪↡熝⃮⃡㴄!
    㧪䘯㊖丵

    View Slide

  31. git add .惀git add --all
    聅⑊⋬㗨⇅㧪↡熝⃮⃡㴄!
    㧪䘯㊖丵

    View Slide

  32. 㧪䘯㊖丵
    使⽤用參參數 新增檔案 修改檔案 刪除檔案
    --all O O O
    . O O X
    ⨉)KVZ䔩䥥磢⋺

    View Slide

  33. 㧪䘯㊖丵
    使⽤用參參數 新增檔案 修改檔案 刪除檔案
    --all O O O
    . O O O
    ⨉)KVZ䔩䥥磢⋺

    View Slide

  34. 㧪䘯㊖丵
    git add --all㗨⇅
    ⃮亂⨉⻩礌䥥⟋⃡⽅䧏日⫘嬭揞㧪㠩㩽

    View Slide

  35. View Slide

  36. " 掄⋬≁㧪綌職 )KV ⢯! 掄㤐↡熝!

    View Slide

  37. " 掄⋬≁㧪綌職 )KV ⢯! 掄㤐↡熝!
    #
    ⠫⼒⃡䴏ⓧ㡄ㇰ䥥䔩㨍㚈┗俜糺⠫

    View Slide

  38. " 掄⋬≁㧪綌職 )KV ⢯! 掄㤐↡熝!
    #
    ⠫⼒⃡䴏ⓧ㡄ㇰ䥥䔩㨍㚈┗俜糺⠫
    $ ⓧ㡄!䔩㨍!

    View Slide

  39. " 掄⋬≁㧪綌職 )KV ⢯! 掄㤐↡熝!
    #
    ⠫⼒⃡䴏ⓧ㡄ㇰ䥥䔩㨍㚈┗俜糺⠫
    $ ⓧ㡄!䔩㨍!
    !
    !
    ! !

    View Slide

  40. ׅⓧ㡄ㇰ׆!

    View Slide

  41. ⓧ㡄ㇰ㠟⨉)KV*WD⃫

    View Slide

  42. %

    Sherly
    #

    Eddie
    &

    Emily
    '

    Picasso
    Octocat

    View Slide

  43. %

    Sherly
    #

    Eddie
    &

    Emily
    '

    Picasso
    Octocat
    㓲⌻痙⃪缩
    ⩬⦪

    View Slide

  44. %

    Sherly
    #

    Eddie
    &

    Emily
    '

    Picasso
    Octocat

    View Slide

  45. %

    Sherly
    #

    Eddie
    &

    Emily
    '

    Picasso
    Octocat 㠗┑

    View Slide

  46. %

    Sherly
    #

    Eddie
    &

    Emily
    '

    Picasso
    Octocat 㠗┑
    㠗┑

    View Slide

  47. %

    Sherly
    #

    Eddie
    &

    Emily
    '

    Picasso
    Octocat
    㓲㠚Ⅷ⑊⋬
    ⧩⧩

    View Slide

  48. %

    Sherly
    #

    Eddie
    &

    Emily
    '

    Picasso
    Octocat
    㓲㠚Ⅷ⑊⋬
    ⧩⧩
    㠗┑

    View Slide

  49. %

    Sherly
    #

    Eddie
    &

    Emily
    '

    Picasso
    Octocat
    㓲┋Ⅷ⃡⋬
    㢚疥

    View Slide

  50. %

    Sherly
    #

    Eddie
    &

    Emily
    '

    Picasso
    Octocat
    1-痙

    View Slide

  51. %

    Sherly
    #

    Eddie
    &

    Emily
    '

    Picasso
    Octocat
    1-痙 1-痙

    View Slide

  52. Ⰸ⺗⛐⇆

    ⃬篌Ⅷ

    View Slide

  53. ➇!
    ⃮䠉RWUJ⼒⛐⇆ↅ碍㵵礌!

    View Slide

  54. View Slide

  55. View Slide

  56. ׅ䔩㨍׆!

    View Slide

  57. View Slide

  58. 2016/2/8 2016/2/10 2016/5/8 2016/8/22 2016/11/28

    View Slide

  59. 䔩㨍 䔩㨍 䔩㨍 䔩㨍
    䔩㨍
    2016/2/8 2016/2/10 2016/5/8 2016/8/22 2016/11/28

    View Slide

  60. )KV
    惀⑗⹤䥥䔩㚈俜糺㧪↡熝⃮⛭!

    View Slide

  61. )KV⛋⨉ℯ㵵礌䥥⑈⺚
    ⃮⨉ℯ䧏日㓷㵵礌⛮䴒

    View Slide

  62. )KV⑗⻇⛋㤐⋬⑈⺚耬慅懀臶

    UVWRKFEQPVGPVVTCEMGT

    View Slide

  63. )KV⛋⨉ℯ㵵礌䥥⑈⺚
    ⃮⨉ℯ䧏日㓷㵵礌⛮䴒

    View Slide

  64. )KV㬚㨍⃮⨉ℯ≁

    View Slide

  65. 㣃竅)KV⛋⨉ℯ㵵礌⑈⺚苌⃮⨉
    ℯ㵵礌⛮䴒掄苌㵵礌⛮䴒⸹⨉
    ⟋寂!
    㧪䘯㊖丵

    View Slide

  66. 㣃竅)KV⛋⨉ℯ㵵礌⑈⺚苌⃮⨉
    ℯ㵵礌⛮䴒掄苌㵵礌⛮䴒⸹⨉
    ⟋寂!
    㧪䘯㊖丵

    View Slide

  67. ┆⺗䥥䔩㚈懀臶
    峹日㺰禈䥥矦䡑

    View Slide

  68. 䔩㨍
    2016/2/8
    A B C
    䔩㨍
    2016/2/10
    D
    E
    A B C
    䔩㨍
    2016/8/22
    A B C D
    E F G
    䔩㨍
    2016/5/8
    A B C D
    E

    View Slide

  69. 䔩㨍
    2016/2/8
    A B C
    䔩㨍
    2016/2/10
    D
    E
    A B C
    䔩㨍
    2016/8/22
    A B C D
    E F G
    䔩㨍
    2016/5/8
    A B C D
    E
    E
    D

    View Slide

  70. 䔩㨍
    2016/2/8
    A B C
    䔩㨍
    2016/2/10
    D
    E
    A B C
    䔩㨍
    2016/8/22
    A B C D
    E F G
    䔩㨍
    2016/5/8
    A B C D
    E
    E
    D B C

    View Slide

  71. 䔩㨍
    2016/2/8
    A B C
    䔩㨍
    2016/2/10
    D
    E
    A B C
    䔩㨍
    2016/8/22
    A B C D
    E F G
    䔩㨍
    2016/5/8
    A B C D
    E
    E
    D B C F G

    View Slide

  72. ∧)KV㤐㖮㋌䑈
    5PCRUJQV

    View Slide

  73. 䔩㨍
    2016/2/8
    A B C
    䔩㨍
    2016/2/10
    D
    E
    A B C
    䔩㨍
    2016/8/22
    A B C D
    E F G
    䔩㨍
    2016/5/8
    A B C D
    E

    View Slide

  74. 䔩㨍
    2016/2/8
    A B C
    䔩㨍
    2016/2/10
    D
    E
    A B C
    䔩㨍
    2016/8/22
    A B C D
    E F G
    䔩㨍
    2016/5/8
    A B C D
    E
    E
    D

    View Slide

  75. 䔩㨍
    2016/2/8
    A B C
    䔩㨍
    2016/2/10
    D
    E
    A B C
    䔩㨍
    2016/8/22
    A B C D
    E F G
    䔩㨍
    2016/5/8
    A B C D
    E
    E
    D B C

    View Slide

  76. 䔩㨍
    2016/2/8
    A B C
    䔩㨍
    2016/2/10
    D
    E
    A B C
    䔩㨍
    2016/8/22
    A B C D
    E F G
    䔩㨍
    2016/5/8
    A B C D
    E
    E
    D B C F G

    View Slide

  77. ␩┆嶋聅⋬Ⅷ
    ≁綌職5*#⢯!

    View Slide

  78. $ git log
    commit 657fce783a23e26721ec4f778b9e0e108253e92d (HEAD -> master)
    Author: Eddie Kao
    Date: Wed Aug 2 16:53:43 2017 +0800
    add container
    commit abb4f43814af7bcf47afa9b779aaba63599e562b
    Author: Eddie Kao
    Date: Wed Aug 2 16:49:49 2017 +0800
    update index page
    commit cef6e4017eb1a16a7bb3434f12d9008ff83a821a
    Author: Eddie Kao
    Date: Wed Aug 2 03:02:37 2017 +0800
    create index page
    ⼒㤐聅ⅼ䧬群≧
    瓞Ⅳ䮝䥥⎃⇺⡇

    View Slide

  79. ↡熝㤐5*#䇵乸㾶!
    䲲㥏磢桴

    View Slide

  80. 䠒⋬聜∮⸸␤倥㓱
    䲲㥏磢桴

    View Slide

  81. H
    ZZ
    䲲㥏磢桴

    View Slide

  82. 戙⑆⃡㴄䥥⑈⺚苌⼒㧪⃡㴄䥥戙ⓛ⌝
    戙⑆⃮⃡㴄䥥⑈⺚苌⼒㧪⃮⃡㴄䥥戙ⓛ⌝
    䲲㥏磢桴

    View Slide

  83. 戙⑆⃡㴄䥥⑈⺚苌⼒㧪⃡㴄䥥戙ⓛ⌝
    戙⑆⃮⃡㴄䥥⑈⺚苌⼒㧪⃮⃡㴄䥥戙ⓛ⌝
    䲲㥏磢桴
    ㇃嵒

    View Slide

  84. photo by Jca Servo

    View Slide

  85. 5*#⌝㧤㧪撮综䥥䖡㾢䥝䠀⢯!
    䲲㥏磢桴

    View Slide

  86. 䮑㝿
    䲲㥏磢桴

    View Slide

  87. 撮综䮑㝿
    䲲㥏磢桴

    View Slide

  88. 䮑㝿

    戙⑆⑊⋬⃮⛭䥥⌝苌♜㉸┑䧙⛭䥥倱㩽
    䲲㥏磢桴

    View Slide

  89. ⅀⼒㤐嶋苌⑊⋬⑈⺚⃮⛭䥥㵵礌苌
    ♜㉸┑⃡㴄䥥5*#⌝
    䲲㥏磢桴

    View Slide

  90. 聅⋬祚㧤㧪⯻∯!
    䲲㥏磢桴

    View Slide

  91. ⼒乸≁㺰䲳EQOOKV禈苌⨉
    㧪椱䥥↛䠀⅀㒪嵓㽳祚㧤聰┑䮑㝿
    䲲㥏磢桴

    View Slide

  92. ⼒乸≁㺰䲳EQOOKV禈苌⨉
    㧪椱䥥↛䠀⅀㒪嵓㽳祚㧤聰┑䮑㝿
    䲲㥏磢桴
    㺰䲳石☢縬
    ⃫⃬

    View Slide

  93. 粹粹綌嶋↫ㅕㅕ⓾苌)QQING⃮㤐
    䬕缷5*#↡熝䥥⢯!
    䲲㥏磢桴

    View Slide

  94. View Slide

  95. 綌嶋㠜㞫Ⅷ␧禈

    䲲㥏磢桴

    View Slide

  96. )KV峩乸5*#㢚ㇰ肪㧪欮⯷▁㡺
    䲲㥏磢桴

    View Slide

  97. 䲲㥏磢桴

    View Slide

  98. 㔡⇆㓲嶋苌
    掄⋬)KV䥥5*#㤐㋯熝乸ⓛ≧䥥!

    View Slide

  99. $NQD䕊⇗䥥5*#峩乸⑍ㇰ獌
    ׅDNQD⸸㴄׆
    ׅ⋬䵛䥞⸸␤׆
    ׅ戙⑆⑈⺚䥥桘ㆇ׆
    ׅ0WNN倱㩀万纝׆
    ׅ戙⑆⑈⺚׆

    View Slide

  100. View Slide

  101. $ irb

    View Slide

  102. $ irb
    >> require "digest/sha1"
    => true

    View Slide

  103. $ irb
    >> require "digest/sha1"
    => true
    >> content = "Hello, 5xRuby"
    => "Hello, 5xRuby"
    戙⑆䥥⑈⺚

    View Slide

  104. $ irb
    >> require "digest/sha1"
    => true
    >> content = "Hello, 5xRuby"
    => "Hello, 5xRuby"
    >> input = "blob #{content.length}\0#{content}"
    => "blob 13\u0000Hello, 5xRuby"
    ⨉聅寂▁㡺

    View Slide

  105. $ irb
    >> require "digest/sha1"
    => true
    >> content = "Hello, 5xRuby"
    => "Hello, 5xRuby"
    >> input = "blob #{content.length}\0#{content}"
    => "blob 13\u0000Hello, 5xRuby"
    >> Digest::SHA1.hexdigest(input)
    => "4135fc4add3332e25ab3cd5acabe1bd9ea0450fb"
    乸ⓛ丵礌

    View Slide

  106. View Slide

  107. $ printf "Hello, 5xRuby" | git hash-object --stdin
    ≠䠉

    IKVJCUJQDLGEV

    㗨⇅

    View Slide

  108. $ printf "Hello, 5xRuby" | git hash-object --stdin
    4135fc4add3332e25ab3cd5acabe1bd9ea0450fb
    乸ⓛ≧䥥倱㩽
    ≠䠉

    IKVJCUJQDLGEV

    㗨⇅

    View Slide

  109. ⨉)KV䥥⃷䠭寂
    㺰⋬䕊⇗揞㧪⹤哋ヒ䥥5*#

    View Slide

  110. 嶬䗽䗽䧬
    e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
    聅⋬5*#⌝苌⨉)KV寂㤐↡熝⑈⺚䥥戙ⓛ⌝
    㧪䘯㊖丵

    View Slide

  111. 嶬䗽䗽䧬
    e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
    聅⋬5*#⌝苌⨉)KV寂㤐↡熝⑈⺚䥥戙ⓛ⌝
    㧪䘯㊖丵

    View Slide

  112. 嶬䗽䗽䧬
    e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
    聅⋬5*#⌝苌⨉)KV寂㤐↡熝⑈⺚䥥戙ⓛ⌝
    㧪䘯㊖丵


    View Slide

  113. $ printf "" | git hash-object --stdin
    e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
    丵礌㤐ׅ䵛⸸ℓ׆
    㧪䘯㊖丵

    View Slide

  114. View Slide

  115. View Slide

  116. )KV䕊⇗䥥㵵⛮獌5*#

    )KV䕊⇗䥥⑈⺚獌㵵礌⑈⺚ 疹儏

    View Slide

  117. IKVEQOOKV䥥職粕䥝䠀Ⅷ↡熝Ⅼ!

    View Slide

  118. )KV寂䥥䴏䕊⇗

    View Slide

  119. EQOOKV
    VTGG VCI
    DNQD

    View Slide

  120. EQOOKV
    VTGG VCI
    DNQD
    DNQD
    㵵礌

    View Slide

  121. EQOOKV
    VTGG VCI
    DNQD
    VTGG
    䧏日

    View Slide

  122. EQOOKV
    VTGG VCI
    DNQD EQOOKV

    View Slide

  123. EQOOKV
    VTGG VCI
    DNQD
    VCI

    View Slide

  124. View Slide

  125. DNQD DNQD DNQD

    View Slide

  126. VTGG
    DNQD DNQD DNQD

    View Slide

  127. VTGG
    DNQD DNQD DNQD

    View Slide

  128. VTGG
    DNQD DNQD DNQD

    View Slide

  129. EQOOKV
    VTGG
    DNQD DNQD DNQD

    View Slide

  130. EQOOKV
    VTGG
    DNQD DNQD DNQD

    View Slide

  131. EQOOKV
    VTGG
    VCI
    DNQD DNQD DNQD

    View Slide

  132. ⻇楼聴∽禵粕苌)1

    View Slide

  133. View Slide

  134. $ echo "hello, 5xruby" > index.html

    View Slide

  135. $ echo "hello, 5xruby" > index.html
    WPVTCEMGF
    䖡㐬

    View Slide

  136. View Slide

  137. $ git add index.html

    View Slide

  138. $ git add index.html
    fa6556
    㓲㤐⃡⋬DNQD
    䕊⇗⡵

    View Slide

  139. fa6556

    View Slide

  140. fa6556
    $ mkdir config

    View Slide

  141. fa6556
    $ mkdir config
    ≁聜≧Ⅷ!

    View Slide

  142. fa6556

    View Slide

  143. fa6556
    $ echo "super-secret-password" > config/
    database.yml

    View Slide

  144. fa6556
    $ echo "super-secret-password" > config/
    database.yml
    WPVTCEMGF
    䖡㐬

    View Slide

  145. fa6556

    View Slide

  146. $ git add config/database.yml
    fa6556

    View Slide

  147. $ git add config/database.yml
    fa6556 1e06da

    View Slide

  148. fa6556 1e06da

    View Slide

  149. $ git commit -m "init commit"
    fa6556 1e06da

    View Slide

  150. $ git commit -m "init commit"
    fa6556 1e06da
    8cfc26
    㓲㤐⃡⋬
    VTGG䕊⇗

    View Slide

  151. $ git commit -m "init commit"
    fa6556 1e06da
    635706
    8cfc26
    㓲㤐⃡⋬
    VTGG䕊⇗
    㓲⅀㤐
    VTGG䕊⇗

    View Slide

  152. $ git commit -m "init commit"
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    㓲㤐⃡⋬
    VTGG䕊⇗
    㓲⅀㤐
    VTGG䕊⇗
    㓲㤐
    EQOOKV䕊⇗

    View Slide

  153. $ git commit -m "init commit"
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    㓲㤐⃡⋬
    VTGG䕊⇗
    㓲⅀㤐
    VTGG䕊⇗
    㓲㤐
    EQOOKV䕊⇗
     master
    HEAD

    View Slide

  154. fa6556 1e06da
    635706
    8cfc26
    e076c8
     master
    HEAD

    View Slide

  155. $ echo "this is a book" >> index.html
    fa6556 1e06da
    635706
    8cfc26
    e076c8
     master
    HEAD

    View Slide

  156. $ echo "this is a book" >> index.html
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    OQFKHKGF
    䖡㐬
     master
    HEAD

    View Slide

  157. fa6556 1e06da
    635706
    8cfc26
    e076c8
     master
    HEAD

    View Slide

  158. $ git add index.html
    fa6556 1e06da
    635706
    8cfc26
    e076c8
     master
    HEAD

    View Slide

  159. $ git add index.html
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    㢑䥥

    DNQD䕊⇗
     master
    HEAD

    View Slide

  160. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
     master
    HEAD

    View Slide

  161. $ git commit -m "update index.html"
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
     master
    HEAD

    View Slide

  162. $ git commit -m "update index.html"
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    afa760
     master
    HEAD

    View Slide

  163. $ git commit -m "update index.html"
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    afa760
    EQPHKI㽳㧪
    䡑▶
     master
    HEAD

    View Slide

  164. $ git commit -m "update index.html"
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
     master
    HEAD

    View Slide

  165. $ git commit -m "update index.html"
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
     master
    HEAD

    View Slide

  166. $ git commit -m "update index.html"
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
     master
    HEAD

    View Slide

  167. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
     master
    HEAD

    View Slide

  168. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
    $ echo "super-secret-password" > key.txt
    WPVTCEMGF
    䖡㐬
     master
    HEAD

    View Slide

  169. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
     master
    HEAD

    View Slide

  170. $ git add key.txt
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760 ⃮㧤䠃䠀㢑䥥
    $NQD䕊⇗
     master
    HEAD

    View Slide

  171. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
     master
    HEAD

    View Slide

  172. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
    $ git commit -m "add secret key"
     master
    HEAD

    View Slide

  173. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760 9e6fd0
    $ git commit -m "add secret key"
     master
    HEAD

    View Slide

  174. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760 9e6fd0
    $ git commit -m "add secret key"
    FCVCDCUG[ON
    㽳㧪䡑▶
     master
    HEAD

    View Slide

  175. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760 9e6fd0
    $ git commit -m "add secret key"
    EQPHKI㽳㧪
    䡑▶
     master
    HEAD

    View Slide

  176. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
    b43d89
    9e6fd0
    $ git commit -m "add secret key"
     master
    HEAD

    View Slide

  177. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
    b43d89
    9e6fd0
    $ git commit -m "add secret key"
     master
    HEAD

    View Slide

  178. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
    b43d89
    9e6fd0
    $ git commit -m "add secret key"
     master
    HEAD

    View Slide

  179. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
    b43d89
    9e6fd0

    View Slide

  180. $ git count-objects
    10
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
    b43d89
    9e6fd0

    View Slide

  181. 梽㢝TGUGV

    View Slide

  182. TGUGV䥥䴏⚤磕OKZGFUQHV
    ⇆⚫JCTF聅⃪⋬㧪↡熝矦┆!
    㧪䘯㊖丵

    View Slide

  183. TGUGV䥥䴏⚤磕OKZGFUQHV
    ⇆⚫JCTF聅⃪⋬㧪↡熝矦┆!
    㧪䘯㊖丵

    View Slide

  184. 梽㢝ⓧ㠐
    DTCPEJ

    View Slide

  185. ⻮ⓧ㠐䥥罠缷

    View Slide

  186. 㧪䠉職ⓧ㠐䥥
    嶬哪⋬㔬

    View Slide

  187. ≁㏔瓞ℎ䥥ⓧ㠐㤐↡熝㴄⸱!

    View Slide

  188. photo by Mark Fischer

    View Slide

  189. photo by Caroline

    View Slide

  190. 䎛↡熝Ⰸ⺗揞嶋
    ׅ⨉)KV桬ⓧ㠐㉩⊠⹽׆!

    View Slide

  191. ⑗⻇ⓧ㠐⛋㤐⃡⋬
    㗨⛲㪱⋬%QOOKV䥥㗨㳺

    View Slide

  192. 㔡巣䥥ⓧ㠐苌⑗⻇⼒⛋㤐⃡⋬
    㧪⋬⸸␤䥥㵵礌勭ビ

    View Slide

  193. View Slide

  194. View Slide

  195. 梽㢝*'#&

    View Slide

  196. *'#&⛋㤐㗨⛲㪱⋬ⓧ㠐䥥㗨㳺

    View Slide

  197. EQOOKV
    VTGG
    VCI
    DNQD DNQD DNQD

    View Slide

  198. EQOOKV
    VTGG
    VCI
    DNQD DNQD DNQD
    DTCPEJ

    View Slide

  199. EQOOKV
    VTGG
    VCI
    DNQD DNQD DNQD
    DTCPEJ
    *'#&

    View Slide

  200. )KV㋯熝䫆聼䛟⨉㤐⟋⋬ⓧ㠐!

    View Slide

  201. View Slide

  202. View Slide

  203. 掄㔬▶㠚IKV*'#&䥥⑈⺚
    㧤䥝䠀↡熝Ⅼ!

    View Slide

  204. 䡗⫘嬭IKVEJGEMQWV㪱⋬ⓧ㠐㗨
    ⇅䥥磢⋺苌䥝䠀Ⅷ↡熝Ⅼ!

    View Slide

  205. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
    b43d89
    9e6fd0

    View Slide

  206. $ git checkout e076c8
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
    b43d89
    9e6fd0
    fa6556 1e06da
    635706
    8cfc26
    e076c8
     master
    HEAD

    View Slide

  207. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
    b43d89
    9e6fd0

    View Slide

  208. $ git checkout 35c42e
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
    b43d89
    9e6fd0
    1e06da
    8cfc26
    7ffd42
    35c42e
    afa760
     master
    HEAD

    View Slide

  209. fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
    b43d89
    9e6fd0

    View Slide

  210. $ git checkout b43d89
    fa6556 1e06da
    635706
    8cfc26
    e076c8
    7ffd42
    35c42e
    afa760
    b43d89
    9e6fd0
    1e06da
    8cfc26
    7ffd42
    b43d89
    9e6fd0
     master
    HEAD

    View Slide

  211. 㕫4GRQ寂䥥㩒屠碞⃡⇞ⓛ≧┑
    テ∽䧏日
    幫㧕IKV*'#&⑈⺚

    View Slide

  212. #OGTIG$

    $OGTIG#
    㧪↡熝⃮⃡㴄!
    㧪䘯㊖丵

    View Slide

  213. #OGTIG$

    $OGTIG#
    㧪↡熝⃮⃡㴄!
    㧪䘯㊖丵

    View Slide

  214. e076c8
    $
    master HEAD

    View Slide

  215. e076c8 master HEAD

    View Slide

  216. $ git commit -m "..."
    e076c8 master HEAD

    View Slide

  217. $ git commit -m "..."
    e076c8
    35c42e
    master HEAD

    View Slide

  218. $ git commit -m "..."
    e076c8
    35c42e master HEAD

    View Slide

  219. e076c8
    35c42e master HEAD

    View Slide

  220. $ git checkout -b cat
    e076c8
    35c42e master HEAD

    View Slide

  221. cat
    $ git checkout -b cat
    e076c8
    35c42e master HEAD

    View Slide

  222. cat
    $ git checkout -b cat
    e076c8
    35c42e master
    HEAD

    View Slide

  223. e076c8
    35c42e master
    cat
    HEAD

    View Slide

  224. $ git commit -m "..."
    e076c8
    35c42e master
    cat
    HEAD

    View Slide

  225. $ git commit -m "..."
    e076c8
    35c42e
    b43d89
    master
    cat
    HEAD

    View Slide

  226. $ git commit -m "..."
    e076c8
    35c42e
    b43d89
    master
    cat
    HEAD

    View Slide

  227. master
    cat
    HEAD
    e076c8
    35c42e
    b43d89

    View Slide

  228. master
    $ git commit -m "..."
    cat
    HEAD
    e076c8
    35c42e
    b43d89

    View Slide

  229. master
    $ git commit -m "..."
    cat
    HEAD
    e076c8
    35c42e
    b43d89
    f17acb

    View Slide

  230. master
    $ git commit -m "..."
    cat
    HEAD
    e076c8
    35c42e
    b43d89
    f17acb

    View Slide

  231. cat
    master
    e076c8
    35c42e
    b43d89
    f17acb
    HEAD

    View Slide

  232. cat
    master
    $ git checkout master
    e076c8
    35c42e
    b43d89
    f17acb
    HEAD

    View Slide

  233. cat
    master
    $ git checkout master
    e076c8
    35c42e
    b43d89
    f17acb
    HEAD

    View Slide

  234. cat
    e076c8
    35c42e
    b43d89
    f17acb
    master HEAD

    View Slide

  235. cat
    $ git checkout -b dog
    e076c8
    35c42e
    b43d89
    f17acb
    master HEAD

    View Slide

  236. dog
    cat
    $ git checkout -b dog
    e076c8
    35c42e
    b43d89
    f17acb
    master HEAD

    View Slide

  237. dog
    cat
    $ git checkout -b dog
    e076c8
    35c42e
    b43d89
    f17acb
    master
    HEAD

    View Slide

  238. cat
    master
    dog HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce

    View Slide

  239. cat
    master
    $ git commit -m "..."
    dog HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce

    View Slide

  240. cat
    master
    $ git commit -m "..."
    dog HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce

    View Slide

  241. cat
    master
    dog HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3

    View Slide

  242. cat
    master
    $ git commit -m "..."
    dog HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3

    View Slide

  243. cat
    master
    $ git commit -m "..."
    dog HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3

    View Slide

  244. cat
    master
    dog HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3

    View Slide

  245. cat
    master
    $ git merge cat
    dog HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3

    View Slide

  246. cat
    master
    $ git merge cat
    dog HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8

    View Slide

  247. cat
    master
    $ git merge cat
    dog HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8

    View Slide

  248. cat
    master
    dog HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8

    View Slide

  249. $ git reset HEAD^ --hard
    cat
    master
    dog HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8

    View Slide

  250. $ git reset HEAD^ --hard
    cat
    master
    dog HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3

    View Slide

  251. dog
    cat
    master
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3 HEAD

    View Slide

  252. dog
    cat
    master
    $ git checkout cat
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3 HEAD

    View Slide

  253. dog
    cat
    master
    $ git checkout cat
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    HEAD

    View Slide

  254. dog
    master
    cat
    HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3

    View Slide

  255. dog
    master
    $ git merge dog
    cat
    HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3

    View Slide

  256. dog
    master
    $ git merge dog
    cat
    HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8

    View Slide

  257. dog
    master
    $ git merge dog
    cat
    HEAD
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8

    View Slide

  258. dog
    cat
    master
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8
    HEAD

    View Slide

  259. dog
    cat
    master
    $ git checkout dog
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8
    HEAD

    View Slide

  260. dog
    cat
    master
    $ git checkout dog
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8
    HEAD

    View Slide

  261. cat
    master
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8
    dog HEAD

    View Slide

  262. cat
    master
    $ git merge cat
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8
    dog HEAD

    View Slide

  263. cat
    master
    $ git merge cat
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8 dog HEAD

    View Slide

  264. cat
    master
    $ git merge cat
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8 dog HEAD
    ㋌截㴂ㇰ

    HCUJHQTYCTF

    View Slide

  265. dog
    cat
    master
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8 HEAD

    View Slide

  266. dog
    cat
    master
    $ git checkout master
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8 HEAD

    View Slide

  267. dog
    cat
    master
    $ git checkout master
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8
    HEAD

    View Slide

  268. dog
    cat
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8
    master HEAD

    View Slide

  269. dog
    cat
    $ git merge dog
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8
    master HEAD

    View Slide

  270. dog
    cat
    $ git merge dog
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8
    master HEAD

    View Slide

  271. dog
    cat
    $ git merge dog
    e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3
    e076c8
    master HEAD
    ㋌截㴂ㇰ

    HCUJHQTYCTF

    View Slide

  272. 㧪㐀⚸┑%JGEMQWV惀OGTIG䥥磢⋺
    㧪↡熝幫甙⢯!

    View Slide

  273. ⼒㤐ⓧ㠐惀*'#&⨉䳜≧䳜⚜勭ビ

    View Slide

  274. TGDCUGXUOGTIG

    View Slide

  275. e076c8
    35c42e
    b43d89
    f17acb
    76ccce
    981ad3 dog
    cat
    master
    HEAD
    $

    View Slide

  276. 35c42e
    b43d89
    f17acb
    76ccce
    981ad3 dog
    cat
    master
    HEAD
    $

    View Slide

  277. 35c42e
    76ccce
    981ad3 dog
    master
    b43d89
    f17acb
    cat
    HEAD

    View Slide

  278. 35c42e
    76ccce
    981ad3 dog
    master
    b43d89
    f17acb
    cat
    HEAD
    $ git rebase dog

    View Slide

  279. 35c42e
    76ccce
    981ad3 dog
    master
    b43d89
    f17acb
    cat
    HEAD
    $ git rebase dog

    View Slide

  280. 35c42e
    76ccce
    981ad3 dog
    master
    b43d89
    f17acb
    cat
    HEAD
    $ git rebase dog

    View Slide

  281. f17acb
    b43d89
    35c42e
    76ccce
    981ad3 dog
    master
    b43d89
    f17acb
    cat
    HEAD
    $ git rebase dog

    View Slide

  282. f17acb
    b43d89
    35c42e
    76ccce
    981ad3 dog
    master
    b43d89
    f17acb
    cat
    HEAD
    $ git rebase dog
    c871e3

    View Slide

  283. f17acb
    b43d89
    35c42e
    76ccce
    981ad3 dog
    master
    b43d89
    f17acb
    cat
    HEAD
    $ git rebase dog
    c871e3
    ab12cd

    View Slide

  284. f17acb
    b43d89
    35c42e
    76ccce
    981ad3 dog
    master
    b43d89
    f17acb
    $ git rebase dog
    c871e3
    ab12cd cat HEAD

    View Slide

  285. f17acb
    b43d89
    35c42e
    76ccce
    981ad3 dog
    master
    b43d89
    f17acb
    $ git rebase dog
    c871e3
    ab12cd cat HEAD
    䠺⨉聅肰
    粹圸完⦿㠗

    View Slide

  286. ≠䠉磢祚

    View Slide

  287. ⓧ㠐⃡⹻缙⛌/CUVGT⢯!

    View Slide

  288. ⛩≖職䥥ⓧ㠐⛐⇆䫮㙪⢯!
    䎛↡熝!
    㧪䘯㊖丵

    View Slide

  289. ⛩≖職䥥ⓧ㠐⛐⇆䫮㙪⢯!
    䎛↡熝!
    㧪䘯㊖丵

    View Slide

  290. /CUVGTⓧ㠐⛐⇆䫮㙪⢯!

    View Slide

  291. ⑗⹤聅ⅼⓧ㠐
    ⼒瓞⃡㈖徝俺⃡㴄勭ビ

    View Slide

  292. ⑗⻇㩒屠聜Ⅷ)KV苌
    ㏔缙┋肪⃮Ⰻ⺚㣴

    View Slide

  293. 㕫肪㽳⛩≖䥥ⓧ㠐┋㙪
    㠲㉸⦿≧⢯!

    View Slide

  294. View Slide

  295. View Slide

  296. 完*CTF4GUGV䥥嵒
    㠲㉸⦿≧⢯!

    View Slide

  297. View Slide

  298. View Slide

  299. 梽㢝㳺佅
    VCI

    View Slide

  300. 㳺佅
    VCI惀ⓧ㠐㤐㉩瓞䥥㩒屠

    View Slide

  301. 楅Ⅷ㳺佅⃮㧤腠圸%QOOKV勭┮聜

    View Slide

  302. 䠺⃬≧㓷勦㓲惀≁恑!

    View Slide

  303. ׉⒘䫆帹׊
    ≁䫆聼)KV㧤⌻羝䅱⦿㠗⢯!

    View Slide

  304. )CTDCIG%QNNGEVKQP

    View Slide

  305. 羝䅱⦿㠗䥥䥝▶磢祚!

    View Slide

  306. View Slide

  307. View Slide

  308. ׉⒘䫆帹׊
    㢑⭿⺃┗甙䥥)KV㗨⇅!

    View Slide

  309. $ git whatever
    git-whatever

    View Slide

  310. View Slide

  311. View Slide

  312. ⻰倱

    View Slide

  313. ⨉⛥∮腩桬聅桴㧤幑砃ℬ┮

    View Slide

  314. View Slide

  315. 䫆聼 )KV 寂䥥 䴏䕊⇗

    View Slide

  316. 䫆聼 )KV 寂䥥 䴏䕊⇗
    䫆聼↡熝㤐 5*#

    View Slide

  317. 䫆聼 )KV 寂䥥 䴏䕊⇗
    䫆聼↡熝㤐 5*#
    䫆聼↡熝㤐 %QOOKV

    View Slide

  318. 䫆聼 )KV 寂䥥 䴏䕊⇗
    䫆聼↡熝㤐 5*#
    䫆聼↡熝㤐 %QOOKV
    䫆聼 %QOOKV 䥥磢⋺䥝䠀↡熝Ⅼ

    View Slide

  319. 䫆聼 )KV 寂䥥 䴏䕊⇗
    䫆聼↡熝㤐 5*#
    䫆聼↡熝㤐 %QOOKV
    䫆聼 %QOOKV 䥥磢⋺䥝䠀↡熝Ⅼ
    䫆聼↡熝㤐ⓧ㠐

    View Slide

  320. 䫆聼 )KV 寂䥥 䴏䕊⇗
    䫆聼↡熝㤐 5*#
    䫆聼↡熝㤐 %QOOKV
    䫆聼 %QOOKV 䥥磢⋺䥝䠀↡熝Ⅼ
    䫆聼↡熝㤐ⓧ㠐
    䫆聼⛩≖ⓧ㠐䥥磢⋺䥝䠀↡熝Ⅼ

    View Slide

  321. 䫆聼 )KV 寂䥥 䴏䕊⇗
    䫆聼↡熝㤐 5*#
    䫆聼↡熝㤐 %QOOKV
    䫆聼 %QOOKV 䥥磢⋺䥝䠀↡熝Ⅼ
    䫆聼↡熝㤐ⓧ㠐
    䫆聼⛩≖ⓧ㠐䥥磢⋺䥝䠀↡熝Ⅼ
    䫆聼㩒屠聜 )KV苌缙䫮肪⃮Ⰻ⺚㣴

    View Slide

  322. 䪎缷聴∽䥥⚀䛧
    聰┑⠰欭㔮叞者瓿勭缷

    View Slide

  323. ⑒▪ℬ

    View Slide

  324. 涹屬牮 Blog
    Facebook
    Twitter
    Email
    Mobile
    http://kaochenlong.com
    http://www.facebook.com/eddiekao
    https://twitter.com/eddiekao
    [email protected]
    +886-928-617-687

    View Slide

  325. 署署㠗䧬

    View Slide