Slide 1

Slide 1 text

Git 基礎講座 中央大學網路開源社 資管二 郭子德 [email protected]

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

版本 控制 Revision control

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

初學者的最佳玩伴

Slide 6

Slide 6 text

開始寫程式

Slide 7

Slide 7 text

我寫寫寫……

Slide 8

Slide 8 text

寫完記得存檔

Slide 9

Slide 9 text

確認存檔無誤

Slide 10

Slide 10 text

編譯並執行

Slide 11

Slide 11 text

什麼事也沒發生 ???

Slide 12

Slide 12 text

加入暫停

Slide 13

Slide 13 text

大功告成

Slide 14

Slide 14 text

作業需求

Slide 15

Slide 15 text

勤勞是美德

Slide 16

Slide 16 text

原本長這樣

Slide 17

Slide 17 text

新增新增

Slide 18

Slide 18 text

修改修改

Slide 19

Slide 19 text

又改又改

Slide 20

Slide 20 text

再改再改

Slide 21

Slide 21 text

花了 兩天 2 days long

Slide 22

Slide 22 text

寫爛了 BUUUUUUUUUUG

Slide 23

Slide 23 text

改回來

Slide 24

Slide 24 text

改回來

Slide 25

Slide 25 text

改回來

Slide 26

Slide 26 text

改回來

Slide 27

Slide 27 text

改回來

Slide 28

Slide 28 text

更好的辦法

Slide 29

Slide 29 text

版本控制

Slide 30

Slide 30 text

in 人工 way

Slide 31

Slide 31 text

恩……?

Slide 32

Slide 32 text

恩……?

Slide 33

Slide 33 text

◢▆▅▄▃-崩╰(〒皿〒)╯潰-▃▄▅▆◣ FUUUUUUUUU

Slide 34

Slide 34 text

多人 合作 Teamwork

Slide 35

Slide 35 text

Teamwork?

Slide 36

Slide 36 text

互相 覆蓋 ◢▆▅▄▃-崩╰(〒皿〒)╯潰-▃▄▅▆◣

Slide 37

Slide 37 text

版本 控制 Revision control

Slide 38

Slide 38 text

本地端 版本控制 Local

Slide 39

Slide 39 text

本地端版本控制

Slide 40

Slide 40 text

集中式 版本控制 CVCS

Slide 41

Slide 41 text

集中式版本控制

Slide 42

Slide 42 text

分散式 版本控制 DVCS

Slide 43

Slide 43 text

分散式版本控制

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

安裝 Git Install Git

Slide 46

Slide 46 text

apt-get install git yum install git pacman –S git Install Git on Linux

Slide 47

Slide 47 text

XCode 命令列工具 Install Git on Mac OSX

Slide 48

Slide 48 text

msysgit https://msysgit.github.io Install Git on Windows

Slide 49

Slide 49 text

git config --global user.email "[email protected]" git config --global user.name "Your Name" git config --global color.ui true Setting Git

Slide 50

Slide 50 text

Commands git COMMAND [ARGUMENTS]

Slide 51

Slide 51 text

help me git COMMAND --help

Slide 52

Slide 52 text

clone – 複製 repository git clone git://github.com/git/hello-world.git

Slide 53

Slide 53 text

init – 在此建立新的 repository git init

Slide 54

Slide 54 text

status – 查看目前狀態 git status

Slide 55

Slide 55 text

log – 查看 commit 記錄 git log

Slide 56

Slide 56 text

diff – 查看差異 git diff

Slide 57

Slide 57 text

diff – 查看差異 git diff [commit_id] [file]

Slide 58

Slide 58 text

show – 查看 commit git show [commit_id]

Slide 59

Slide 59 text

Staging Area http://git-scm.com/about/staging-area

Slide 60

Slide 60 text

示範 git init

Slide 61

Slide 61 text

示範 git init

Slide 62

Slide 62 text

touch README.txt 示範

Slide 63

Slide 63 text

示範 git status

Slide 64

Slide 64 text

示範 On branch master Initial commit Untracked files: (use "git add ..." to include in what will be committed) README.txt nothing added to commit but untracked files present (use "git add" to track)

Slide 65

Slide 65 text

add – 將檔案加入 Staging git add [files]

Slide 66

Slide 66 text

add – 將所有檔案加入 Staging git add .

Slide 67

Slide 67 text

示範 git add README.txt

Slide 68

Slide 68 text

示範 git status

Slide 69

Slide 69 text

示範 On branch master Initial commit Changes to be committed: (use "git rm --cached ..." to unstage) new file: README.txt

Slide 70

Slide 70 text

reset – 將檔案移出 Staging git reset [file]

Slide 71

Slide 71 text

commit – 將 Staging 的檔案存入 Repository git commit

Slide 72

Slide 72 text

示範

Slide 73

Slide 73 text

commit log 格式 標題 [空行] 內容

Slide 74

Slide 74 text

示範

Slide 75

Slide 75 text

示範 [master (root-commit) 6ce65d4] Initial commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 README.txt

Slide 76

Slide 76 text

commit log 如何 撰寫

Slide 77

Slide 77 text

commit log 如何 撰寫

Slide 78

Slide 78 text

commit log 如何 撰寫 http://www.reddit.com/r/shittyprogramming/comments/1skq3s/my_buddy_is_a_phenomenal_programmer_but_really/

Slide 79

Slide 79 text

如何撰寫 Commit

Slide 80

Slide 80 text

智慧型忽略 .gitignore

Slide 81

Slide 81 text

.gitignore 中繼檔 暫存檔 記錄檔

Slide 82

Slide 82 text

checkout – 切換到特定版本 git checkout [commit_id]

Slide 83

Slide 83 text

checkout – 切換到特定版本 git checkout [commit_id] [file]

Slide 84

Slide 84 text

branch – 建立分支 git branch BRANCH

Slide 85

Slide 85 text

branch Commit 別名

Slide 86

Slide 86 text

merge – 融合版本 git merge [commit_id]

Slide 87

Slide 87 text

示範

Slide 88

Slide 88 text

示範 git add . git commit

Slide 89

Slide 89 text

示範 git branch apple git branch banana git checkout apple

Slide 90

Slide 90 text

示範

Slide 91

Slide 91 text

示範 git add . git commit

Slide 92

Slide 92 text

示範 git checkout banana

Slide 93

Slide 93 text

示範

Slide 94

Slide 94 text

示範

Slide 95

Slide 95 text

示範 git add . git commit

Slide 96

Slide 96 text

示範 git log --graph --all

Slide 97

Slide 97 text

示範

Slide 98

Slide 98 text

示範

Slide 99

Slide 99 text

示範 git checkout master

Slide 100

Slide 100 text

示範 git merge apple

Slide 101

Slide 101 text

示範 Updating ea51d2c..339a0fc Fast-forward README.txt | 2 ++ 1 file changed, 2 insertions(+)

Slide 102

Slide 102 text

Fast-forward 快速 前進

Slide 103

Slide 103 text

示範 git merge banana

Slide 104

Slide 104 text

示範 Auto-merging README.txt Merge made by the 'recursive' strategy. README.txt | 2 ++ 1 file changed, 2 insertions(+)

Slide 105

Slide 105 text

示範

Slide 106

Slide 106 text

示範 Magic!

Slide 107

Slide 107 text

push – 推送 git push

Slide 108

Slide 108 text

pull – 拉回 git pull

Slide 109

Slide 109 text

Staging Area http://zoomq.qiniudn.com/ZQScrapBook/ZqFLOSS/data/20081210180347/

Slide 110

Slide 110 text

Do yourself 嘗試 看看

Slide 111

Slide 111 text

Ref  https://speakerdeck.com/crboy/code-smart- dont-code-hard Code Smart, Don't Code hard by crboy  http://denny0223.github.io/HackGen-2014- workshop/#28 Git by Denny Huang

Slide 112

Slide 112 text

Q & A 任何 問題