git and github basic with sourcetree
Post on 15-Jul-2015
2.126 Views
Preview:
TRANSCRIPT
[ 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
關於凍仁翔
• 5 年以上的 Git 使⽤用經驗。
• 前 Foxconn軟體⼯工程師。
• 現職 DrSays IT ⼯工程師。
• 相關作品和著作:
• LifeZMD
• @be_vimmer_tw
• 《完全⽤用 GNU/Linux ⼯工作》
• 凍仁的筆記
2
準備好⼀一探究竟嗎?開始囉!3
OutlineI. Git 是什麼?
II. GitHub ⼜又是什麼?
III. Git & GitHub 可以怎麼玩?
IV. 10 招成為 Git ⼤大師。
V. GitHub 隨堂測驗。
4
Ⅰ. Git 是什麼?
5
–Wikipedia
Git是⼀一個分散式版本控制軟體,最初由林納斯.托⽡瓦茲 (Linus Torvalds)創作,於 2005 年以 GPL釋出。最初是為了更有效率的管理 Linux Kernel 開
發⽽而設計的。
6
Git 是什麼?• SCM (Source Code Management, Software
Configuration Management)
• VCS (Version Control Software)
• 分散式的版本控制系統
• ⾃自由軟體 (GPL License)
7
⽏毋需 Server,可離線使⽤用
不怕被襲斷、不怕成為軟體孤兒
沒有版本控管的世界⼤大家都經歷過的「⼿手殘」年代
8
9
檔案夾版本控制
網路芳鄰版本控制
• FTP 版本控制• 壓縮檔版本控制• Google 雲端硬碟版本控制• Dropbox 版本控制• ...
那位⺩王OX到底是在寫什麼啊!10
有 SVN 的世界⼤大家都經歷過的「⼿手殘」年代 #2
11
沒有網路是要怎麼寫 code 啊!!12
有 Git 的世界⼿手殘? 爛 code? 傻傻分的清楚
13
誰? 在何時?⾃自我敘述
做了什麼?
在 Git 的世界裡您可以看到…
詳細資訊
14
凡⾛走過必留痕跡
15
–jserv
「Git 是⼀一個可以讓現在的⾃自⼰己、過去的⾃自⼰己和未來的⾃自⼰己共同開發的版本控制系統。」
16
Git 10 週年,Linux 之⽗父談他是怎麼在 10 天內開發完成
伯樂在線 - http://goo.gl/zvavk3
17
Ⅱ. GitHub ⼜又是什麼?
18
–chusiang
GitHub 是⼀一個提供友善的 Git 代管、Issue tracking ... 等的程式碼社交平台。
19
GitHub 官⽅方網站https://github.com/
20
Git Web
21
git diff
22
Issue Tracking
23
Wiki
24
Follwers
25
Ⅲ. Git 和 GitHub 可以怎麼玩?
26
多⼈人協同開發• LifeZMD 為 Charlie, Chu, Dick,
Olga, Steven, chusiang 於 iDSBG 第
三屆 HTML5 Hackathon 所製作。
• ⽐比賽成績:第 4 名。
• ⽐比賽時間:2 天 1 夜。
• 團隊⼈人數:6 ⼈人。
LifeZMD - http://goo.gl/OHJK9u27
靜態網站SM 是個使⽤用 GitHub Pages 服務和的
HTML, CSS 和 Javascript 所寫成的⼤大
字報Web Apps。
SM - http://sm.drx.tw
28
送 Patch覺得別⼈人的專案不夠完美?
那就先 fork 別⼈人的專案,
改完 code 再送 Pull Requests 唄!
@be_vimmer_tw - http://goo.gl/TVYHsL29
寫書• 藉由 GitHub 和 GitBook 服務的整
合,我們可以使⽤用 Markdown 語法撰
寫⽂文章,並整理成冊。
• GitBook 同時⽀支援Web, PDF, ePub
和 mobi 等多種格式。
完全⽤用 GNU/Linux ⼯工作 - http://goo.gl/OHJK9u30
持續整合 (CI)
搭配強⼤大的 Jenkins CI,即可進⾏行
⾃自動化測試 (Web UI, Unit test)、
編譯 (AOSP)、通知訊息 (Email,
HipChat, Slack) ... 等整合。
Jenkins CI - https://ci.jenkins-ci.org/31
–chusiang
「有了 Git 就好⽐比寫程式可以跟玩單機遊戲⼀一樣,可以隨時儲存和讀取進度,不管是要快速破關還是
要體驗各個分⽀支劇情都可以輕鬆的辦到。」
32
Ⅳ. 10 招成為 Git ⼤大師
33
在開始之前須準備
功預善其事,必先利其器
的Tool34
SourceTree Terminalor
35
還有跑跳江湖
的 ID 和Email36
# 設定使⽤用者名稱$ git config --global user.name "foo"
# 設定電⼦子信箱$ git config --global user.email "foo@example.tw"
37
第 1 招:複製 (clone) 與初始化 (init)想快速上⼿手?那就先從抄開始唄!
38
再 clone 前,請先 fork為便於同步本以下操作環境,請先⾄至 GitHub 進⾏行 fork。
左鍵
39
複製 (clone)若不是從⾃自⼰己的 GitHub 進⾏行複製 (clone),預設是沒有權限上傳 (push) 的喔!
40
左鍵左鍵
41
# 複製 (clone)$ git clone git@github.com:chusiang/sandbox.git
紅字部份請改成⾃自⼰己的帳號紅字部份請改成⾃自⼰己的帳號紅字部份請改成⾃自⼰己的帳號
初始化 (init)在建⽴立⼀一個新的 Git 專案之前,我們需⼿手動建⽴立本地端的數據庫 (Local Repository),但若有前⼈人 (通常會是系統管理員) 建⽴立好,或 fork 其它專案,這時我們就可以略過。
42
左鍵
左鍵
# 建⽴立專案⺫⽬目錄並切換⾄至該⺫⽬目錄底下$ mkdir /Users/jonny/vcs/demo; cd $_
# 建⽴立本地數據庫 (local repository)$ git init 43
第 2 招:新增 (add)、移動 (mv)、刪除 (rm)可想成是 CRUD 裡的 Create, Upgrade, Delete。
44
右鍵
# 新增 (Add)、刪除 (Remove)$ git { add | rm } README.md
# 移動 (Move)$ git mv README.md foo.md
第 3 招:提交 (commit)在 Git 的每⼀一動裡,都是⽤用 commit 來記錄的。
46
# 提交 (Commit)$ git commit README.md
git commit 左鍵
輸⼊入⽂文字
47
Upgradeto Lv1
48
第 4 招:查看狀態 (status) 與歷史記錄 (log)在 Git 的世界迷路時,⽤用 status 和 log 就對了。
49
查看狀態 (status)現在做到哪⼀一動了? 看 status 就知道了!
50
# 版本狀態 (Status)$ git status
git status
51
查看歷史記錄 (log)在 Console 裡凍仁習慣⽤用 git lg 的別名 (alias) 來看版本樹。
52
# 觀看版本記錄$ git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
git log
53
第 5 招:查看記錄 (checkout)講完了儲存進度,接下來就是讀取 (Read) 進度。
54
# 查看某進度時的記錄$ git checkout 09a3d66
左鍵
左鍵
左鍵
55
第 6 招:⽐比對版本差異 (diff)剛剛改了什麼 code? 有 diff 即可⼀一⺫⽬目瞭然。
56
# ⽐比對 (Different) 當前版本差異$ git diff HEAD
57
Upgradeto Lv2
58
第 7 招:推送 (push)上傳⾄至遠端 (remote) 的數據庫 (Repository)。
59
# 推送 (Push)$ git push origin master
左鍵
左鍵
60
第 8 招:拉取 (pull)從遠端 (remote) 數據庫 (Repository) 下載。
61
# 拉取 (Pull)$ git pull origin master
左鍵
左鍵
62
第 9 招:捨棄修改 (checkout)程式寫爛了? 那就重頭來過吧!
63
# 藉由 checkout 捨棄修改$ git checkout README.md
左鍵
左鍵
64
65
Upgradeto Lv3
第⼗十招:分⽀支 (branch) 與合併 (merge)學會 branch 和 merge 即可說是習得⼤大成功⼒力了!
66
版本樹在開始前先看⼀一下結果。
master
dev
67
分⽀支 (branch)同⼀一款遊戲,總有不同的分⽀支劇情。
68
# 建⽴立分⽀支$ git branch dev$ git checkout -b dev
左鍵
master69
左鍵
# 列出分⽀支$ git branch
master70
# 藉由 checkout 切換⾄至 dev 分⽀支$ git checkout dev
左鍵 x2
dev
master71
# 於 dev 分⽀支新增檔案,並提交$ git add branch_demo.txt$ git commit -m 'Demo for branch'dev
72
Branch? 舉⼿手可得開了新的 branch 後還要在新的 branch 裡 commit 過才看得到分⽀支樹。
dev
master
Uncommitted changes
73
合併 (merge)劇情分⽀支久了,總有回到主線的⼀一天。
74
左鍵 x2
# 藉由 checkout 切換⾄至 master 分⽀支$ git checkout masterdev
master
75
# 於 master 合併 dev 分⽀支$ git merge --no-ff dev
master76
合併完成!
master77
您已習得上乘⼼心法Congratulation !
78
您已習得上乘⼼心法Congratulation !
79
Ⅴ. GitHub 隨堂測驗
80
基本操作 (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
81
Login GitHub
fork Repository
git clone
git add
git commit
git status
git push
Finish?Yes
No
進階操作 (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
82
dev
master
Finish
⼯工商服務
83
2015
2015.10.?
- http://mopcon.org
84
官⽅方網站http://mopcon.org
粉絲群http://fb.me/mopcon
85
86
http://coscup.org87
Q & A
嚴禁拍打餵⻝⾷食
請參考現場共筆⽂文件 - http://goo.gl/aqTTYO
88
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/
89
E N D90
top related