Slide 1

Slide 1 text

[ chusiang@nsysucm ~ ] $ cat .profile # Author: 㲺Ռᗼ / chusiang.lai (at) gmail.com # Blog: http://note.drx.tw # Modified: 2015-04-29 17:50 GitHub & Bacis with SourceTree 1

Slide 2

Slide 2 text

橕ෝ㲺Ռᗼ • 5 ଙ犥Ӥጱ Git ֵአ妿涢牐 • 獮 Foxconn 敟誢ૡ纷䒍牐 • 匍肬 DrSays IT ૡ纷䒍牐 • ፘ橕֢ߝ޾茐֢物 • LifeZMD • @be_vimmer_tw • ̽ਠ獊አ GNU/Linux ૡ֢̾ • 㲺Ռጱ執懿 2

Slide 3

Slide 3 text

伛猋অӞ矐绗ᒌ㻟牫樄ত㾏牦 3

Slide 4

Slide 4 text

Outline I. Git ฎՋ讕? II. GitHub ݈ฎՋ讕? III. Git & GitHub ݢ犥ெ讕ሻ? IV. 10 ೗౮傶 Git य़䒍牐 V. GitHub 褰璤介涢牐 4

Slide 5

Slide 5 text

Ⅰ. Git ฎՋ讕? 5

Slide 6

Slide 6 text

–Wikipedia Git ฎӞ㮆獤碂ୗ粚๜矒ګ敟誢牧磧ڡኧ຋羳ේ牨 箓絮艌 (Linus Torvalds) 獺֢牧ෝ 2005 ଙ犥 GPL 朰ڊ牐磧ڡฎ傶ԧๅ磪硳ሲጱᓕቘ Linux Kernel 樄 咳ᘒ戔懯ጱ牐 6

Slide 7

Slide 7 text

Git ฎՋ讕? • SCM (Source Code Management, Software Configuration Management) • VCS (Version Control Software) • 獤碂ୗጱ粚๜矒ګ羬翄 • ᛔኧ敟誢 (GPL License) 7 ྭ襑 Server牧ݢ櫝娄ֵአ 犋ொᤩ薛䥁牏犋ொ౮傶敟誢疅㱾

Slide 8

Slide 8 text

䷱磪粚๜矒ᓕጱӮኴ य़疑᮷妿稲螂ጱ̿ಋ䵝̀ଙդ 8

Slide 9

Slide 9 text

9 䲆礯䄸 粚๜矒ګ 翕᪠臻蟠 粚๜矒ګ • FTP 粚๜矒ګ • 瓟婘䲆粚๜矒ګ • Google 襇ᒒᏝ繕粚๜矒ګ • Dropbox 粚๜矒ګ • ...

Slide 10

Slide 10 text

ᮎ֖ሴҨұک皈ฎࣁ䌃Ջ讕ࠡ牦 10

Slide 11

Slide 11 text

磪 SVN ጱӮኴ य़疑᮷妿稲螂ጱ̿ಋ䵝̀ଙդ #2 11

Slide 12

Slide 12 text

䷱磪翕᪠ฎᥝெ讕䌃 code ࠡ牦牦 12

Slide 13

Slide 13 text

磪 Git ጱӮኴ ಋ䵝? 粋 code? 猖猖獤ጱ竃༩ 13

Slide 14

Slide 14 text

抑? ࣁ֜碻? ᛔ౯硼蝄 狶ԧՋ讕? ࣁ Git ጱӮኴ愊眅ݢ犥፡ک … 托 奞 虻 懱 14

Slide 15

Slide 15 text

獡蚎螂஠ኸ綫撪 15

Slide 16

Slide 16 text

–jserv ̿Git ฎӞ㮆ݢ犥虏匍ࣁጱᛔ૩牏螂݄ጱᛔ૩޾๚㬵 ጱᛔ૩وݶ樄咳ጱ粚๜矒ګ羬翄牐̀ 16

Slide 17

Slide 17 text

Git 10 蝰ଙ牧Linux ԏᆿ 藳犢ฎெ讕ࣁ 10 ॠ獉樄咳ਠ౮ ֋禼ࣁ娄 - http://goo.gl/zvavk3 17

Slide 18

Slide 18 text

Ⅱ. GitHub ݈ฎՋ讕? 18

Slide 19

Slide 19 text

–chusiang GitHub ฎӞ㮆൉׀݋珿ጱ Git դᓕ牏 Issue tracking ... 缛ጱ纷ୗ嘨ᐒԻଘݣ牐 19

Slide 20

Slide 20 text

GitHub ਥො翕ᒊ https://github.com/ 20

Slide 21

Slide 21 text

Git Web 21

Slide 22

Slide 22 text

git diff 22

Slide 23

Slide 23 text

Issue Tracking 23

Slide 24

Slide 24 text

Wiki 24

Slide 25

Slide 25 text

Follwers 25

Slide 26

Slide 26 text

Ⅲ. Git ޾ GitHub ݢ犥ெ讕ሻ? 26

Slide 27

Slide 27 text

ग़Ո㶧ݶ樄咳 • LifeZMD 傶 Charlie, Chu, Dick, Olga, Steven, chusiang ෝ iDSBG ᒫӣ䌵 HTML5 Hackathon ಅ蕣֢牐 • 穉搴౮婧物ᒫ 4 ݷ牐 • 穉搴碻樌物2 ॠ 1 ज़牐 • 㿁褧Ո碍物6 Ո牐 LifeZMD - http://goo.gl/OHJK9u 27

Slide 28

Slide 28 text

覌眲翕ᒊ SM ฎ㮆ֵአ GitHub Pages ๐率޾ ጱ HTML, CSS ޾ Javascript ಅ䌃౮ ጱय़ਁ䁭 Web Apps牐 SM - http://sm.drx.tw 28

Slide 29

Slide 29 text

蝑 Patch 憽஑獨Ոጱ䌕礯犋䄪ਠ聅牫 ᮎ疰ض fork 獨Ոጱ䌕礯牧 硬ਠ code ٚ蝑 Pull Requests 㹧牦 @be_vimmer_tw - http://goo.gl/TVYHsL 29

Slide 30

Slide 30 text

䌃䨗 • 萞ኧ GitHub ޾ GitBook ๐率ጱ碉 ݳ牧౯㮉ݢ犥ֵአ Markdown 承ဩ 砰䌃෈ᒍ牧㪔碉ቘ౮㲘牐 • GitBook ݶ碻ඪൔ Web, PDF, ePub ޾ mobi 缛ग़圵໒ୗ牐 ਠ獊አ GNU/Linux ૡ֢ - http://goo.gl/OHJK9u 30

Slide 31

Slide 31 text

瞱媲碉ݳ (CI) 砇蟴䔶य़ጱ Jenkins CI牧ܨݢ蝱ᤈ
 ᛔ㵕玕介手 (Web UI, Unit test)牏
 翥捌 (AOSP)牏蝢Ꭳ懱௳ (Email, HipChat, Slack) ... 缛碉ݳ牐 Jenkins CI - https://ci.jenkins-ci.org/ 31

Slide 32

Slide 32 text

–chusiang ̿磪ԧ Git 疰অ穉䌃纷ୗݢ犥蚤ሻ㻌秚蝿瞁Ӟ䰬牧 ݢ犥褰碻㱪ਂ޾捝玲蝱ଶ牧犋ᓕฎᥝ盠蝧Ꮘ橕螭ฎ ᥝ誢涢ݱ㮆獤ඪ玀眐᮷ݢ犥斕誫ጱ旰ک牐̀ 32

Slide 33

Slide 33 text

Ⅳ. 10 ೗౮傶 Git य़䒍 33

Slide 34

Slide 34 text

ࣁ 樄ত ԏ獮殾伛猋 ۑ毆珿ٌԪ牧஠ضڥٌ瑊 ጱ Tool 34

Slide 35

Slide 35 text

SourceTree Terminal or 35

Slide 36

Slide 36 text

螭磪 ᪒᪡࿯竝 ጱ ID ޾ Email 36

Slide 37

Slide 37 text

# 戔ਧֵአᘏݷ圸 $ git config --global user.name "foo" # 戔ਧ襎ৼמᓟ $ git config --global user.email "[email protected]" 37

Slide 38

Slide 38 text

ᒫ 1 ೗物蕦蕣 (clone) 膏ڡত玕 (init) మ盠蝧Ӥಋ牫ᮎ疰ضℂಧ樄ত㹧牦 38

Slide 39

Slide 39 text

ٚ clone 獮牧 藶ض fork 傶׎ෝݶྍ๜犥ӥ砺֢絑ह牧藶ضᛗ GitHub 蝱ᤈ fork牐 ૢ棎 39

Slide 40

Slide 40 text

蕦蕣 (clone) 舙犋ฎℂᛔ૩ጱ GitHub 蝱ᤈ蕦蕣 (clone)牧毆戔ฎ䷱磪稗褖Ӥ㯽 (push) ጱࡂ牦 40

Slide 41

Slide 41 text

ૢ棎 ૢ棎 41 # 蕦蕣 (clone) $ git clone [email protected]:chusiang/sandbox.git 夺ਁ 蟂犩藶硬౮ᛔ૩ጱ癱蒈 夺ਁ蟂犩藶硬౮ᛔ૩ጱ癱蒈 夺ਁ蟂犩藶硬

Slide 42

Slide 42 text

ڡত玕 (init) ࣁୌ缏Ӟ㮆碝ጱ Git 䌕礯ԏ獮牧౯㮉襑ಋ㵕ୌ缏๜瑿ᒒጱ碍硁䓚 (Local Repository)牧֕舙磪獮 Ո (蝢ଉ䨝ฎ羬翄ᓕቘ㹓) ୌ缏অ牧౲ fork ٌਙ䌕礯牧蝡碻౯㮉疰ݢ犥ኼ螂牐 42

Slide 43

Slide 43 text

ૢ棎 ૢ棎 # ୌ缏䌕礯ፓ袅㪔獥矦ᛗ扗ፓ袅皈ӥ $ mkdir /Users/jonny/vcs/demo; cd $_ # ୌ缏๜瑿碍硁䓚 (local repository) $ git init 43

Slide 44

Slide 44 text

ᒫ 2 ೗物碝ी (add)牏ᑏ㵕 (mv)牏㳫ᴻ (rm) ݢమ౮ฎ CRUD 愊ጱ Create, Upgrade, Delete牐 44

Slide 45

Slide 45 text

ݦ棎 # 碝ी (Add)牏㳫ᴻ (Remove) $ git { add | rm } README.md # ᑏ㵕 (Move) $ git mv README.md foo.md

Slide 46

Slide 46 text

ᒫ 3 ೗物൉Ի (commit) ࣁ Git ጱྯӞ㵕愊牧᮷ฎአ commit 㬵懿袅ጱ牐 46

Slide 47

Slide 47 text

# ൉Ի (Commit) $ git commit README.md git commit ૢ棎 蜍獈෈ਁ 47

Slide 48

Slide 48 text

Upgrade to Lv1 48

Slide 49

Slide 49 text

ᒫ 4 ೗物礚፡制眲 (status) 膏稲ݥ懿袅 (log) ࣁ Git ጱӮኴ蝈᪠碻牧አ status ޾ log 疰䌘ԧ牐 49

Slide 50

Slide 50 text

礚፡制眲 (status) 匍ࣁ狶کߺӞ㵕ԧ? ፡ status 疰Ꭳ螇ԧ牦 50

Slide 51

Slide 51 text

# 粚๜制眲 (Status) $ git status git status 51

Slide 52

Slide 52 text

礚፡稲ݥ懿袅 (log) ࣁ Console 愊㲺Ռ聜䙼አ git lg ጱ獨ݷ (alias) 㬵፡粚๜䰽牐 52

Slide 53

Slide 53 text

# 薪፡粚๜懿袅 $ git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' git log 53

Slide 54

Slide 54 text

ᒫ 5 ೗物礚፡懿袅 (checkout) 拻ਠԧ㱪ਂ蝱ଶ牧矑ӥ㬵疰ฎ捝玲 (Read) 蝱ଶ牐 54

Slide 55

Slide 55 text

# 礚፡礓蝱ଶ碻ጱ懿袅 $ git checkout 09a3d66 ૢ棎 ૢ棎 ૢ棎 55

Slide 56

Slide 56 text

ᒫ 6 ೗物穉䌘粚๜癩吖 (diff) 㴄㴄硬ԧՋ讕 code? 磪 diff ܨݢӞፓ啻簁牐 56

Slide 57

Slide 57 text

# 穉䌘 (Different) 吚獮粚๜癩吖 $ git diff HEAD 57

Slide 58

Slide 58 text

Upgrade to Lv2 58

Slide 59

Slide 59 text

ᒫ 7 ೗物വ蝑 (push) Ӥ㯽ᛗ螐ᒒ (remote) ጱ碍硁䓚 (Repository)牐 59

Slide 60

Slide 60 text

# വ蝑 (Push) $ git push origin master ૢ棎 ૢ棎 60

Slide 61

Slide 61 text

ᒫ 8 ೗物೉玲 (pull) ℂ螐ᒒ (remote) 碍硁䓚 (Repository) ӥ斉牐 61

Slide 62

Slide 62 text

# ೉玲 (Pull) $ git pull origin master ૢ棎 ૢ棎 62

Slide 63

Slide 63 text

ᒫ 9 ೗物䞳祌狕硬 (checkout) 纷ୗ䌃粋ԧ? ᮎ疰᯿毣㬵螂މ牦 63

Slide 64

Slide 64 text

# 萞ኧ checkout 䞳祌狕硬 $ git checkout README.md ૢ棎 ૢ棎 64

Slide 65

Slide 65 text

65 Upgrade to Lv3

Slide 66

Slide 66 text

ᒫ܈೗物獤ඪ (branch) 膏ݳ㬫 (merge) 䋊䨝 branch ޾ merge ܨݢ藯ฎ聜஑य़౮ۑێԧ牦 66

Slide 67

Slide 67 text

粚๜䰽 ࣁ樄ত獮ض፡Ӟӥ奾ຎ牐 master dev 67

Slide 68

Slide 68 text

獤ඪ (branch) ݶӞ稠蝿瞁牧者磪犋ݶጱ獤ඪ玀眐牐 68

Slide 69

Slide 69 text

# ୌ缏獤ඪ $ git branch dev $ git checkout -b dev ૢ棎 master 69 ૢ棎

Slide 70

Slide 70 text

# ڜڊ獤ඪ $ git branch master 70

Slide 71

Slide 71 text

# 萞ኧ checkout 獥矦ᛗ dev 獤ඪ $ git checkout dev ૢ棎 x2 dev master 71

Slide 72

Slide 72 text

# ෝ dev 獤ඪ碝ी䲆礯牧㪔൉Ի $ git add branch_demo.txt $ git commit -m 'Demo for branch' dev 72

Slide 73

Slide 73 text

Branch? 膐ಋݢ஑ 樄ԧ碝ጱ branch 盅螭ᥝࣁ碝ጱ branch 愊 commit 螂಍፡஑ک獤ඪ䰽牐 dev master Uncommitted changes 73

Slide 74

Slide 74 text

ݳ㬫 (merge) 玀眐獤ඪԋԧ牧者磪ࢧکԆ娄ጱӞॠ牐 74

Slide 75

Slide 75 text

ૢ棎 x2 # 萞ኧ checkout 獥矦ᛗ master 獤ඪ $ git checkout master dev master 75

Slide 76

Slide 76 text

# ෝ master ݳ㬫 dev 獤ඪ $ git merge --no-ff dev master 76

Slide 77

Slide 77 text

ݳ㬫ਠ౮牦 master 77

Slide 78

Slide 78 text

眅૪聜஑Ӥ犔ஞဩ Congratulation ! 78

Slide 79

Slide 79 text

Ⅴ. GitHub 褰璤介涢 79

Slide 80

Slide 80 text

च๜砺֢ (Basic) 1. ጭ獈 Github牐
 - https://github.com/ 2. 䌘 Lab ጱ Repository 蝱ᤈ fork牐
 - https://github.com/chusiang/sandbox/ 3. ӥ斉纷ୗ嘨牐
 $ git clone https://github.com/YourName/sandbox.git 4. 碝ी䲆礯㪔൉Ի牐
 $ git { add | status | commit } 5. Ӥ㯽纷ୗ嘨牐
 $ git push 80 Login GitHub fork Repository git clone git add git commit git status git push Finish? Yes No

Slide 81

Slide 81 text

蝱褩砺֢ (Advanced) 1. ෝٌਙ᪠䕩ٚ稞ӥ斉纷ୗ嘨牐
 $ git clone https://github.com/YourName/sandbox.git 2. 碝ी牏狕硬牏㳫ᴻ䲆礯㪔൉Իग़稞牐
 $ git { add | mv | rm | status | commit } 3. 碝ी獤ඪ㪔൉Իग़稞牐 4. 獥矦ᛗݱ㮆夵袅讨޾獤ඪ牐
 $ git checkout OXOXOXX 5. ݳ㬫獤ඪ牐 6. Ӥ㯽纷ୗ嘨牐
 $ git push origin master 81 dev master Finish

Slide 82

Slide 82 text

ૡ珶๐率 82

Slide 83

Slide 83 text

2015 2015.10.? - http://mopcon.org 83

Slide 84

Slide 84 text

ਥො翕ᒊ http://mopcon.org 罭妟ᗭ http://fb.me/mopcon 84

Slide 85

Slide 85 text

85

Slide 86

Slide 86 text

http://coscup.org 86

Slide 87

Slide 87 text

Q & A 瑥纔ೌ಑訤觬 藶㷢ᘍ匍䁰و執෈կ - http://goo.gl/aqTTYO 87

Slide 88

Slide 88 text

Reference • 匍䁰و執෈կ - http://goo.gl/aqTTYO • 匍䁰ፗ砮翕࣎ - https://youtu.be/5ftNjrpzVqM • 蝫糞ৼ᮷胼睞ጱ Git 獈槹瞲ܖ | 揔໒禼 (Backlog) - http://backlogtool.com/git-guide/tw/ • 䌃妔य़疑ጱ Git 硽䋊 | slideshare - http://www.slideshare.net/littlebtc/git-5528339 • Git 䋿率瑽薹 | slideshare - http://www.slideshare.net/pokaichang72/git-42427674 • Git ਥො෈կ - http://git-scm.com/book/zh-tw/v1 • 瑽粙㬵რ物 • 㾴疑瑿ቘ褾扮 - http://www.ngtaiwan.com • 10 Years of Git | Atlassian Git Tutorial - https://www.atlassian.com/git/articles/10-years-of-git/ 88

Slide 89

Slide 89 text

E N D 89