Slide 1

Slide 1 text

git & Heroku MrOrz 12年11月22日星期四

Slide 2

Slide 2 text

0 എܠ஌ࣝ զ၇త೔ৗ ൛ຊ߇੍ ଟਓڠ࡞ Images and concepts are from http://git-scm.com/video/what-is-version-control 12年11月22日星期四

Slide 3

Slide 3 text

զ၇త೔ৗ w ֖৽䈕Ҋ w ଘ䈕 w ฤाሏ w ࠶ଘ䈕 12年11月22日星期四

Slide 4

Slide 4 text

զ၇త೔ৗ w ֖৽䈕Ҋ w ଘ䈕 w ฤाሏ w ࠶ଘ䈕 ൛ຊ߇੍ܥ౷ 㢨ॿզ၇೭႔ 12年11月22日星期四

Slide 5

Slide 5 text

զ၇త㑖࢙ 㑌࣍౎վҰᴍᴍɼ޷૾኷௚᧺ http://git-scm.com/video/what-is-version-control 12年11月22日星期四

Slide 6

Slide 6 text

զ၇త㑖࢙ 㑌࣍౎վҰᴍᴍɼ޷૾኷௚᧺ վྃ啥ʁ http://git-scm.com/video/what-is-version-control 12年11月22日星期四

Slide 7

Slide 7 text

൛ຊ߇੍ w ҝॄኄᏓߋ w ॄኄ࣌ީᏓߋ w Ꮣߋྃॄኄ 12年11月22日星期四

Slide 8

Slide 8 text

େՈత㑖࢙ େՈኺओ䈕Ҋݿ፤֤ࣗత䈕Ҋɼվ׬ޙ์ճڈ http://git-scm.com/video/what-is-git 12年11月22日星期四

Slide 9

Slide 9 text

ଟਓڠ࡞ w ୭Ꮣߋతʁ w ଟਓվෆಉత䈕Ҋ w ଟਓվ૬ಉత䈕Ҋ 12年11月22日星期四

Slide 10

Slide 10 text

1 લஔ࡞ۀ ҆᧋ ઃఆ਎෼ ॳ࢝Խ 12年11月22日星期四

Slide 11

Slide 11 text

҆᧋ w ੥ݟ'#(SPVQɻ IUUQTXXXGBDFCPPLDPNHSPVQTOUV'DDTQQFSNBMJOL Ұ ୆ ి ᡵ Ұ ࣍ 12年11月22日星期四

Slide 12

Slide 12 text

ઃఆ਎෼ • git config --global user.name <名字> • git config --global user.email • git config --global core.editor vim Ұ ୆ ి ᡵ Ұ ࣍ 12年11月22日星期四

Slide 13

Slide 13 text

ॳ࢝Խ w DE౸QSPKFDUత໨㑚 w HJUJOJU w ݐཱHJU w ࠶ଧҰ࣍HJUJOJU။෴֖ ֖ ৽ 䈕 Ҋ ݿ ࣌ git init @ ~/MrOrz/mongolab 12年11月22日星期四

Slide 14

Slide 14 text

2 git࢖༻ྲྀఔ ֓೦ 䈕Ҋྨܕ ૹਐ䈕Ҋݿ 䈕Ҋత֯౓ HJUJHOPSF http://git-scm.com/book/en/Git-Basics-Recording- Changes-to-the-Repository 12年11月22日星期四

Slide 15

Slide 15 text

֓೦   ⏶ ⏶ Working Directory Staging Area Repository git status ᙛલ㐫ଶ 12年11月22日星期四

Slide 16

Slide 16 text

֓೦   ⏶ ⏶ Working Directory Staging Area Repository TUBUVTཫ؃ಘ౸ ੔ݸࢿྉᇄ݁ߏ ᤽ࡏHJUཫ໘ 就是你的檔案 將送進檔案庫裡的檔案們 檔案的前世今生 12年11月22日星期四

Slide 17

Slide 17 text

䈕Ҋྨܕ   ⏶ ⏶ Working Directory Staging Area Repository ੔ݸࢿྉᇄ݁ߏ 就是你的檔案 tracked files:已納入版本控制的檔案 untracked files:沒納入版本控制的檔案 12年11月22日星期四

Slide 18

Slide 18 text

䈕Ҋྨܕ   ⏶ ⏶ Working Directory Staging Area Repository tracked files untracked files Create README.md git status mkdir log --> not in git status Tracking “files” only! So where are the tracked files? They are not displayed by default, unless... 12年11月22日星期四

Slide 19

Slide 19 text

४උૹਐ䈕Ҋݿ   ⏶ ⏶ Working Directory Staging Area Repository !:git add <檔名> ←:git reset HEAD <檔名>  unmodified files untracked files modified files staged files modify existing file git status; add an untracked file modify another existing file git add them git status git reset HEAD xxxxxx git status 12年11月22日星期四

Slide 20

Slide 20 text

ૹਐ䈕Ҋݿ   ⏶ ⏶ Working Directory Staging Area Repository !:git commit <檔名> ←:git reset --soft HEAD^  unmodified files untracked files modified files staged files git log 㑖࢙ه㑚 git commit; git status; git log git reset --soft HEAD^ 12年11月22日星期四

Slide 21

Slide 21 text

 䈕Ҋత֯౓ unmodified  untracked  modified  staged Working Directory git status git log git commit git add 檔名 ฤा 12年11月22日星期四

Slide 22

Slide 22 text

 䈕Ҋత֯౓ unmodified  untracked  modified  staged Working Directory git status git log git commit git add 檔名 ฤा git reset --soft HEAD^ git checkout -- 檔名 git reset HEAD 檔名 12年11月22日星期四

Slide 23

Slide 23 text

HJUJHOPSF w ༗ࠣ䈕ҊӬԕෆ૝BEE w ฤाثత࢑ଘ䈕ʢYYYdʣ w $$ తCJOBSZ䈕ɺ෺݅䈕ʢPʣ w HJUJHOPSF w Ұݸ䈕໊Ұߦ w Մ༻ w ሣࢠ໨㑚ຠ༗Ꮘ  untracked 12年11月22日星期四

Slide 24

Slide 24 text

3 ԕ୺䈕Ҋݿ ֓೦ HJUIVC#JUCVDLFU 44)LFZHFO ૢ࡞ 12年11月22日星期四

Slide 25

Slide 25 text

☁ ֓೦   ⏶ Working Directory Staging Area Repository ⏶  Remote Repository ⏶ 12年11月22日星期四

Slide 26

Slide 26 text

☁ ֓೦ ⏶ Working Directory  Staging Area  Repository ⏶  Remote Repository ⏶ Working Directory  Staging Area  Repository ⏶ ⏶ ⏶ 12年11月22日星期四

Slide 27

Slide 27 text

☁ ֓೦ ⏶ Working Directory  Staging Area  Repository ⏶  Remote Repository ⏶ Working Directory  Staging Area  Repository ⏶ ⏶ ⏶ git@HOST:PATH 12年11月22日星期四

Slide 28

Slide 28 text

☁ ֓೦ ⏶ Working Directory  Staging Area  Repository ⏶  Remote Repository ⏶ Working Directory  Staging Area  Repository ⏶ ⏶ ⏶ git@HOST:PATH TTI࿈ઢ QVCMJDLFZೝᨽ 12年11月22日星期四

Slide 29

Slide 29 text

HJUIVC#JUCVDLFU w XJLJɺJTTVFUSBDLJOHɺڠ࡞ऀޭೳ w 44)QVCMJDLFZత໔ີᛰೝᨽ w 0QFOTPVSDFQSPKFDUେଟ์HJUIVC w ࢲਓSFQPTJUPSZ༻#JUCVDLFU 12年11月22日星期四

Slide 30

Slide 30 text

HJUIVC#JUCVDLFU w XJLJɺJTTVFUSBDLJOHɺڠ࡞ऀޭೳ w 44)QVCMJDLFZత໔ີᛰೝᨽ w 0QFOTPVSDFQSPKFDUେଟ์HJUIVC w ࢲਓSFQPTJUPSZ༻#JUCVDLFU w #JUCVDLFU FEV৴ശແ্ݶ໔අࢲਓSFQP 12年11月22日星期四

Slide 31

Slide 31 text

44) ☁ 㑌୆ిᡵ༗ࣗݾతҰ౟ɿ ެᮋʢ1VCMJD,FZʣ༻ԙՃີ ࢲᮋʢ1SJWBUF,FZʣ༻ԙղີ ަ׵ެᮋ ༻ሣํతެᮋ Ճີཁၚత㘤ଉ ֤ࣗ༻ࣗݾతࢲᮋ ղີሣํၚိత㘤ଉ 12年11月22日星期四

Slide 32

Slide 32 text

44)1VCMJD,FZ"VUI ☁ ઌ೺զ၇తެᮋ์౸࢕෰ث্ ࢕෰ث༻ެᮋ൑Ꮧੋ୭࿈౸ሏ ަ׵ެᮋ ༻ሣํతެᮋ Ճີཁၚత㘤ଉ ֤ࣗ༻ࣗݾతࢲᮋ ղີሣํၚိత㘤ଉ 用公鑰認人 12年11月22日星期四

Slide 33

Slide 33 text

44),FZHFO w ᒾ查dTTI࿨dTTIJE@STBQVCੋ൱ଘࡏ w एੋɼ௚઀௓աԼ໘㑊ᱜ •ssh-keygen -t rsa w ᪑ஶࠑทత4UFQɿ IUUQTIFMQHJUIVCDPNBSUJDMFTHFOFSBUJOHTTILFZT 12年11月22日星期四

Slide 34

Slide 34 text

44)LFZ์࢕෰ث 12年11月22日星期四

Slide 35

Slide 35 text

44)LFZ์࢕෰ث 12年11月22日星期四

Slide 36

Slide 36 text

44)LFZ์࢕෰ث w ෆೳෳ੡౸ଟᰨతᏗߦ࿨ۭന w NBDɿpbcopy < ~/.ssh/id_rsa.pub w -JOVYɿsudo apt-get install xclip xclip -sel clip < ~/.ssh/id_rsa.pub w 8JOEPXTɿclip < ~/.ssh/id_rsa.pub 12年11月22日星期四

Slide 37

Slide 37 text

ઃఆԕ୺SFQPTJUPSZ ☁  已有 Repository  Remote Repository ⏶ git remote add origin git@HOST:PATH git remote --verbose Create new repository @ bitbucket git remote add origin 網址 git remote 12年11月22日星期四

Slide 38

Slide 38 text

ૢ࡞ ☁  Repository  Remote Repository git push origin master git pull origin master ೺TFSWFSཫత൛ຊ፛Լိฒ׌߹ซ ೺ిᡵཫత൛ຊਪ্TFSWFS MrOrz/mongolab 底下的 push, pull 開一下 bitbucket 網頁 看變更 12年11月22日星期四

Slide 39

Slide 39 text

ຊػᔒSFQPTJUPSZ ☁ 當前目錄  Remote Repository ֖ ৽ 䈕 Ҋ ݿ ࣌ 介紹協作者 kytu clone 12年11月22日星期四

Slide 40

Slide 40 text

ຊػᔒSFQPTJUPSZ ☁ 當前目錄  Remote Repository git clone git@HOST:AAAAAA ೺TFSWFSཫత൛ຊ፛Լိ ࣗಈࡏᙛલ໨㑚Լɼݐཱ৽ࢿྉᇄ"""""" ֖ ৽ 䈕 Ҋ ݿ ࣌ 介紹協作者 kytu clone 12年11月22日星期四

Slide 41

Slide 41 text

ຊػᔒSFQPTJUPSZ ☁  Cloned repository  Remote Repository ֖ ৽ 䈕 Ҋ ݿ ࣌ ⏶ 自動記錄 origin = git@HOST:AAAAAA 當前目錄 git remote --verbose 12年11月22日星期四

Slide 42

Slide 42 text

Heroku ্ၚ౸TFSWFS 4FSWFSಛੑ QBDLBHFKTPO1SPDpMF )FSPLVࢦྩߦ޻۩ 4UBHJOHTFSWFS 12年11月22日星期四

Slide 43

Slide 43 text

্ၚ౸4FSWFS w ੯ɿ'51 w ์౸ಛఆࢿྉᇄʢQVCMJD@IUNMɺXXXʣ w ࠓɿHJUQVTI w ༻HJUSFNPUFBEEIFSPLVHJU! w QVTI׬੒ޙࣗಈEFQMPZ 12年11月22日星期四

Slide 44

Slide 44 text

4FSWFSಛੑ w 1""4 w EZOP w 1SPDpMF IUUQTEFWDFOUFSIFSPLVDPNBSUJDMFTOPEFKTEFDMBSFQSPDFTTUZQFTXJUIQSPDpMF 12年11月22日星期四

Slide 45

Slide 45 text

QBDLBHFKTPO1SPDpMF w QBDLBHFKTPO w OQNJOTUBMM w 1SPDpMF w GPSFNBO 12年11月22日星期四

Slide 46

Slide 46 text

IFSPLVࢦྩߦ޻۩ w heroku login೚Կ஍ํ౎ՄҎొೖɼ୞ཁొೖҰ࣍ w heroku create  w heroku logs <-t> w heroku run node TFSWFS୺ࢦྩߦ w heroku config:add KEY=VALUE؀ڥᏓᏐ w /0%&@&/7 %"5"#"4&@63- 12年11月22日星期四

Slide 47

Slide 47 text

4UBHJOHTFSWFS w EFWFMPQNFOUɿ㟬తిᡵ w QSPEVDUJPOɿIFSPLV w TUBHJOHɿIFSPLVɼ㚎෦ଌࢼ༻ w ෆಉతHJUSFNPUF໊᜝ w ࢦྩߦ޻۩Ճ্BQQ"11໊ 12年11月22日星期四

Slide 48

Slide 48 text

4 ෼ࢧCSBODI ෼ࢧ֓೦ DIFDLPVU %FUBDIFE)FBE .FSHF ଟਓڠ࡞ #SBODIJOH.PEFM 12年11月22日星期四

Slide 49

Slide 49 text

෼ࢧ֓೦ w HJUDIFDLPVUCኺ໨લ൛ຊ෼ሸ w HJUDIFDLPVU੾׵൛ຊ w HJUCSBODI؃໨લ༗䬟ࠣ൛ຊ w HJUEJ⒎؃ࠩผ 1. No conflict case Branch A app.js 前面加註解 commit Branch B app.js 後面加註解 commit 2. Try checkout. 同一個資料夾,可以切 換不同版本。 git diff 看線圖 git branch 12年11月22日星期四

Slide 50

Slide 50 text

%FUBDIFE)&"% w Ұछ࢑࣌తCSBODI w DIFDLPVUҰݸᢜతDPNNJU w TUBUVT/PUDVSSFOUMZPOBOZCSBODI w DIFDLPVUCOFX@CSBODI@OBNF git checkout xxxxxx git status git checkout -b C 12年11月22日星期四

Slide 51

Slide 51 text

෼ٱඞ࿨ɿ.FSHF w վෆಉ䈕ҊɺಉҰݸ䈕ҊతෆಉეҬ w ࣗಈNFSHF w վ౸ಉҰߦ w DPOqJDUɻ merge A & B! 改 A 和 B 的同一行。 commit。 merge。 conflict 12年11月22日星期四

Slide 52

Slide 52 text

෼ٱඞ࿨ɿ.FSHF w վෆಉ䈕ҊɺಉҰݸ䈕ҊతෆಉეҬ w ࣗಈNFSHF w վ౸ಉҰߦ w DPOqJDUɻ w ྫྷᯩʂ merge A & B! 改 A 和 B 的同一行。 commit。 merge。 conflict 12年11月22日星期四

Slide 53

Slide 53 text

႔ཧሏɺ$PNNJUሏ w DPOqJDUɻ w git statusྃղ㐫گ w ၏ग़Ꮣߋ w HJUBEEվ޷త䈕Ҋ w HJUDPNNJU 12年11月22日星期四

Slide 54

Slide 54 text

႔ཧሏɺ$PNNJUሏ w DPOqJDUɻ w git statusྃղ㐫گ w ၏ग़Ꮣߋ w HJUBEEվ޷త䈕Ҋ w HJUDPNNJU Resolve conflicts. 12年11月22日星期四

Slide 55

Slide 55 text

ଟਓڠ࡞ http://git-scm.com/video/what-is-git origin/master git pull git pull git pull git pull git push git push git push git push 12年11月22日星期四

Slide 56

Slide 56 text

ଟਓڠ࡞ w HJUCSBODIBMM w ԕ୺3FQPTJUPSZతNBTUFS໵ੋҰݸCSBODI w PSJHJONBTUFS w PSJHJOଖଞCSBODI w $IFDLPVUPSJHJOCSBODI໊။ਐ%FUBDIFE IFBE 12年11月22日星期四

Slide 57

Slide 57 text

ଟਓڠ࡞ 12年11月22日星期四

Slide 58

Slide 58 text

ଟਓڠ࡞ 12年11月22日星期四

Slide 59

Slide 59 text

ଟਓڠ࡞ 12年11月22日星期四

Slide 60

Slide 60 text

ଟਓڠ࡞ 12年11月22日星期四

Slide 61

Slide 61 text

#SBODIJOH.PEFM w IUUQOWJFDPNQPTUTBTVDDFTTGVMHJU CSBODIJOHNPEFM 12年11月22日星期四

Slide 62

Slide 62 text

ଟਓڠ࡞ w ೺ผਓత৽CSBODIൖճՈ w ྫɿ w LZUVሜྃҰࠣመᱛੑత৽ൣྫɼ์ࡏ໊ҝlFYQzతCSBODIɼਪ౸ CJUCVDLFU্ɻ w զᔒ༗FYQCSBODIɻզ૝೺91์্ڈతFYQCSBODIൖճՈɻ w զతlPSJHJOzઃҝ֘CJUCVDLFUతSFQPɻ w git fetch origin ፤PSJHJOతॴ༗CSBODIɼୠෆNFSHF w git checkout origin/exp㗞ੜ%FUBDIFE)&"% w git checkout -b exp ݐཱຊ஍୺CSBODIɼ໵ڣFYQ 12年11月22日星期四

Slide 63

Slide 63 text

ޙՌࣗෛ w HJUQVTIޙHJUDPNNJUBNFOE w DPOqJDU࣌༻HJUHိDPNNJU w ଞෆ။ߋ৽NFSHFIFBE w HJUSFCBTF w ᔒࣄผ༻ɻ w HJUDPNNJUTRVBTI w ະိՄೳ။DPOqJDU w HJUSFTFUIBSE൛ຊᥒ w HJUQVTIGPSDF w HJUCSBODI% 12年11月22日星期四

Slide 64

Slide 64 text

ޙՌࣗෛ w HJUQVTIޙHJUDPNNJUBNFOE w DPOqJDU࣌༻HJUHိDPNNJU w ଞෆ။ߋ৽NFSHFIFBE w HJUSFCBTF w ᔒࣄผ༻ɻ w HJUDPNNJUTRVBTI w ະိՄೳ။DPOqJDU w HJUSFTFUIBSE൛ຊᥒ w HJUQVTIGPSDF w HJUCSBODI% w ෆڈ查㕕IUUQXXXOEQTPGUXBSFDPNHJUDIFBUTIFFUIUNM 12年11月22日星期四

Slide 65

Slide 65 text

End Licensed under CC BY-SA 3.0. Entypo pictograms by Daniel Bruce — www.entypo.com Git Logo by Jason Long — http://git-scm.com/downloads/logos 12年11月22日星期四