狠狠撸

狠狠撸Share a Scribd company logo
本簡報內容基於Scott Chacon的「Pro Git」電子書,修改過後
的內容以CC-BY-NC-SA-3.0授權發佈
寫給大家的 Git 教學
Littlebtc (Hsiao-TingYu)
What is Version Control?
What is Git?
為什麼要版本控制?
「凡走過必留下痕跡」
改了東西,不會改不回來
「三個臭皮匠勝過一個諸葛亮」
大家一起改,還能清楚知道對方改了什麼
Local 式版本控制
在「自己的電腦裡」
建立一個版本資料庫
rcs 指令
問題:如何協作?
中心式版本控制
在一台Server上,儲存所
有的版本記錄
從裡頭Checkout
將變更Commit上去
Subversion(SVN)是主流
問題:
Server會掛!
開發太亂!
分散式版本控制
「大家都有完整資料庫」
「大家都能獨立工作」
「Server爛了不要緊,拿到
一份好的資料庫灌回去就
可以全部復原!」
現在爆紅的 git, Mecurial
(hg), bazaar (bzr) 都屬此類
問題:亂成一團???
用好的Branch機制來解決!
從 Git 的誕生講起
Linux Kernel 是一切的開端
(http://en.wikipedia.org/wiki/Linux_kernel,Wikipedia contributors, CC-BY-SA)
極端龐大的資訊量
(From: Linux Kernel Development: How Fast it is Going,Who is
Doing It,WhatThey are Doing, andWho is Sponsoring It, Fair use(?))
先前的嘗試:BitKeeper
Linus Torvalds:「我就是不喜歡中
央式的系統!」
所以 Linux Kernel 以前的變更都是用 Patch + 壓
縮檔來散布
2002年, Linus 採用 BitKeeper 分
散版本控制系統(專有!)
社群不滿,甚至嘗試逆向工程,
於是跟 BitKeeper 開發商鬧翻
Git 因此而生
(pic: http://commons.wikimedia.org/wiki/File:Linus_Torvalds.jpeg CC-BY-
SA-3.0 & GFDL)
Git 的設計目標
超快
超簡單
支援非線性的開發
大家都可以自己改,改完合併來合併去,不必受到一條主線的拘束
完全分散式
可以處理 Linux Kernel 「超大」的資料量
And then realize that nothing is perfect. Git is just *closer* to perfect than any other
SCM out there. -- Linus on Git mailing list
Git Basics
Git不是記「檔案的差異」,
而是記錄「檔案的快照」
Git 幾乎什麼事都在本機進行!
你不只有一份完整的
資料庫......
閱讀版本歷史、提交
變更這些動作都可以
在本機進行
不需要網路連線也能
單獨工作!
Git 的檔案處理
使用 Checksum 來確
保檔案的完整性
設計上「只會增加資
料」,因此東西可以
輕鬆復原
在本機的檔案管理
中,增添了
「Staging」的觀念
Using Git
建立一個新的 Git Repository
「Repository」(倉庫、套件庫)就是一份版本控
制中的「版本資料庫」
找一個空的資料夾,然後執行:
git init
套件庫需要的資訊會放在.git資料夾裡
Initial Commit
新增一個檔案README
把所有檔案加進去
然後提交變更
touch README
git add .
git commit -m 'Initial commit'
複製別人的 Repository
Clone的專案會放在目前路徑下的新目錄。
$ git clone http://github.com/jquery/jquery.git
Initialized empty Git repository in /Users/littlebtc/work/jquery/.git/
remote: Counting objects: 14043, done.remote: Compressing objects: 100%
(4070/4070), done.
remote: Total 14043 (delta 9717), reused 13753 (delta 9452)
Receiving objects: 100% (14043/14043), 12.45 MiB | 288 KiB/s, done.
Resolving deltas: 100% (9717/9717), done.
File Status
git add ?lename
git rm ?lename git commit
git add ?lename
? 在 .gitignore 檔案中列出的檔案名稱將被忽略
(.gitignore這個檔也要commit!)
? 使用 git status 來檢查檔案狀態
git reset HEAD ?lename
git checkout -- ?lename
git status
如何檢視Commit log?
?git log (console)
?GitX (Mac)
?giggle (Linux) (截圖來自官網)
改爛了...!?
改變最後一次的 Commit:
git commit --amend
把 Stage 的檔案給 Unstage:
git reset HEAD file
把修改過的檔案回到未修改狀態:
git checkout -- file
Remote Server!!
Branch 和 Remote 之間的互動!
預設的 Branch 叫 master(稍後詳述)
預設的 Remote 叫 origin
git pull origin =
git fetch origin + git merge origin/master
拉下來之後 Merge
git push origin master
把 Master 給 Push 到 Origin
"Remote" 的 Protocol
?le://(本機)
ssh://(效率好、匿名訪問不可、適合寫入)
git://(效率很棒、不好設定、適合讀取)
http:// or https://(簡單、效率低)
Branches
先從 Commit 說起
git 是這樣看待 Commit 的
很多 commit
Commit之間互相連結
每個Commit對應一個SnapshotTree
於是有了branch
「標記我們在哪個commit上」
git branch testing
新增一個"testing" branch
git會使用「HEAD」紀錄目前所在的Branch
git checkout testing
把「HEAD」變成Testing Branch
or git checkout -b testing :開新 Branch過後切
這時如果Commit下去...
變成只算在 testing 不算 master
git checkout master
回到Master了,那麼What's next?
git commit -m 'Change the master!'
岔開來了!
如何重新變回一條?
Merge
把岔開來的分支在往後「合起來」
通常的建議方式
Rebase
把岔開來的分支「裝回去」主線
「還沒Push出去的東西」才可以Rebase!
Merge
Branch滿天飛
有緊急的 Bug,我開了一個 hot?x branch 弄好了。
現在要怎麼處理 master?
git checkout master
git merge hotfix
切到 master 之後,把 master 和 hot?x 「合併」
因為這種合併只需要Commit往前推,叫做fast-foward
Branch滿天飛
好,我繼續來寫 Issue 53 的 branch
總算寫完了!我要Merge!
git 最終的 merge 方式
$ git checkout master
$ git merge iss53
Merge made by recursive.
README | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
CONFLICT!衝到了!
別慌張!
git status 一下看是哪個檔案出問題
到出問題的檔案找問題,手動解決
再檢查 git status 後,用 git commit 手動 Merge
(會自動生成 Merge 的 Commit Message)
Rebase
回到類似先前的情境
除了Merge以外,我有沒有其他的辦法可以處理掉
experiment branch?
git checkout experiment
git rebase master
把C3上的變更Rebase到C4之上(onto C4)
git checkout master
git merge experiment
Rebase過後就可以fast-forward Merge了!
当事情更复杂...
git rebase --onto master server client
「檢查client的Branch,
從client和server的共同祖先看作了哪些變動,
把那些變更重新在master上面作過一遍」
git checkout master
git merge client
對client作fast-forward Merge
git rebase master server
直接指定要將哪個Branch的更動(server)
重新在哪個Branch作過一遍(master)
git checkout master
git merge server
git branch -d client
git branch -d server
通通都Merge完之後
把兩條不要的Branch砍掉囉 :)
「千萬不要」對已經Push的東西
作Rebase!
除非你想成為害群之馬。
Pic: http://commons.wikimedia.org/wiki/File:Castle_Romeo.jpg, Public Domain, United States Department of Energy
Remote Branches
Remote Branch
記錄「遠端套件庫」
上的Branch狀態
origin上的master分支
就是origin/master
所以git clone會跑出
origin/master和master
當你與Remote Branch
同時改了東西...
Pull = Fetch + Merge
把Origin作Fetch之
後,兩邊同時有更
動,因此會變成兩條
分支
通常的作法是,用
Merge合併回一條
所以會有git pull:
git pull origin =
git fetch origin 之後
git merge origin/master
b03ed
git merge
origin/master
新增一个搁别尘辞迟别
Fetch後會有
新的Remote Branch
Distributed Workflows
中央式的開發
開發方式任你選擇
整合管理員 司令官和副手
一些基本守則
當你要Commit/送交Patch時:
用git diff --check檢查行尾有沒有多餘的空白
「每個Commit只改一件事情」
如果一個檔案有多個變更,用git add --patch
只選擇檔案中的部分變更進Stage
寫清楚Commit Message!
私人小團體協作
John 改了738ee之後Fetch跑出兩條,於是Merge起來,一切正常後Push
開了一個Branch專心來處理 Issue 54 的臭蟲Jessica
Jessica會怎麼做?
Fetch之後,Jessica發現John有更
動,檢查過後,先合併issue54
(Fast-foward):
git checkout master
git merge issue54
然後合併origin/master:
git merge origin/master
就可以快樂Push了!
規模較大私人團體的協作
三個人一起工作
開兩個Branch寫兩種功能
最後把一切Merge起來
公開的小型協作
開了A、B兩個Branch之後
先用Rebase把A組好:
再用「奇妙Merge」
把B組回去:
... Still a lot to learn!
github 很好玩!
...而且對公開的 Open Source 專案免費!
了解更多
Pro Git 線上電子書: http://progit.org/
這份投影片大部分的內容都出於此處,是很好的
Git?線上說明!
ihower 的 Git 文章系列: http://ihower.tw/blog/
archives/category/git

More Related Content

What's hot (20)

15分でわかる骋颈迟入门
15分でわかる骋颈迟入门15分でわかる骋颈迟入门
15分でわかる骋颈迟入门
to_ueda
?
Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀
Wen-Tien Chang
?
いつやるの?骋颈迟入门
いつやるの?骋颈迟入门いつやるの?骋颈迟入门
いつやるの?骋颈迟入门
Masakazu Matsushita
?
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
Hirohito Kato
?
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門
Tomohiko Himura
?
はじめよう骋颈迟
はじめよう骋颈迟はじめよう骋颈迟
はじめよう骋颈迟
techscore
?
いつやるの?骋颈迟入门 v1.1.0
いつやるの?骋颈迟入门 v1.1.0いつやるの?骋颈迟入门 v1.1.0
いつやるの?骋颈迟入门 v1.1.0
Masakazu Matsushita
?
はじめての骋颈迟 蹿辞谤デザイナー&コーダー
はじめての骋颈迟 蹿辞谤デザイナー&コーダーはじめての骋颈迟 蹿辞谤デザイナー&コーダー
はじめての骋颈迟 蹿辞谤デザイナー&コーダー
Saeko Yamamoto
?
ノンプログラマでも今日から使える「骋颈迟」でバージョン管理
ノンプログラマでも今日から使える「骋颈迟」でバージョン管理ノンプログラマでも今日から使える「骋颈迟」でバージョン管理
ノンプログラマでも今日から使える「骋颈迟」でバージョン管理
H2O Space. Co., Ltd.
?
奥颈谤别诲罢颈驳别谤を详しく説明
奥颈谤别诲罢颈驳别谤を详しく説明奥颈谤别诲罢颈驳别谤を详しく説明
奥颈谤别诲罢颈驳别谤を详しく説明
Tetsutaro Watanabe
?
一人でもはじめる骋颈迟でバージョン管理
一人でもはじめる骋颈迟でバージョン管理一人でもはじめる骋颈迟でバージョン管理
一人でもはじめる骋颈迟でバージョン管理
Takafumi Yoshida
?
コンテナネットワーキング(颁狈滨)最前线
コンテナネットワーキング(颁狈滨)最前线コンテナネットワーキング(颁狈滨)最前线
コンテナネットワーキング(颁狈滨)最前线
Motonori Shindo
?
版本控制 使用Git & git hub
版本控制   使用Git & git hub版本控制   使用Git & git hub
版本控制 使用Git & git hub
維佋 唐
?
Git 版本控制 (使用教學)
Git 版本控制 (使用教學)Git 版本控制 (使用教學)
Git 版本控制 (使用教學)
Jui An Huang (黃瑞安)
?
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
Md. Ahsan Habib Nayan
?
Git and Github
Git and GithubGit and Github
Git and Github
Wen-Tien Chang
?
骋颈迟のよく使うコマンド
骋颈迟のよく使うコマンド骋颈迟のよく使うコマンド
骋颈迟のよく使うコマンド
YUKI Kaoru
?
Git and github 101
Git and github 101Git and github 101
Git and github 101
Senthilkumar Gopal
?
今话题のいろいろなコンテナランタイムを比较してみた
今话题のいろいろなコンテナランタイムを比较してみた今话题のいろいろなコンテナランタイムを比较してみた
今话题のいろいろなコンテナランタイムを比较してみた
Kohei Tokunaga
?
15分でわかる骋颈迟入门
15分でわかる骋颈迟入门15分でわかる骋颈迟入门
15分でわかる骋颈迟入门
to_ueda
?
Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀Git 版本控制系統 -- 從微觀到宏觀
Git 版本控制系統 -- 從微觀到宏觀
Wen-Tien Chang
?
Git flowの活用事例
Git flowの活用事例Git flowの活用事例
Git flowの活用事例
Hirohito Kato
?
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門
Tomohiko Himura
?
はじめよう骋颈迟
はじめよう骋颈迟はじめよう骋颈迟
はじめよう骋颈迟
techscore
?
いつやるの?骋颈迟入门 v1.1.0
いつやるの?骋颈迟入门 v1.1.0いつやるの?骋颈迟入门 v1.1.0
いつやるの?骋颈迟入门 v1.1.0
Masakazu Matsushita
?
はじめての骋颈迟 蹿辞谤デザイナー&コーダー
はじめての骋颈迟 蹿辞谤デザイナー&コーダーはじめての骋颈迟 蹿辞谤デザイナー&コーダー
はじめての骋颈迟 蹿辞谤デザイナー&コーダー
Saeko Yamamoto
?
ノンプログラマでも今日から使える「骋颈迟」でバージョン管理
ノンプログラマでも今日から使える「骋颈迟」でバージョン管理ノンプログラマでも今日から使える「骋颈迟」でバージョン管理
ノンプログラマでも今日から使える「骋颈迟」でバージョン管理
H2O Space. Co., Ltd.
?
奥颈谤别诲罢颈驳别谤を详しく説明
奥颈谤别诲罢颈驳别谤を详しく説明奥颈谤别诲罢颈驳别谤を详しく説明
奥颈谤别诲罢颈驳别谤を详しく説明
Tetsutaro Watanabe
?
一人でもはじめる骋颈迟でバージョン管理
一人でもはじめる骋颈迟でバージョン管理一人でもはじめる骋颈迟でバージョン管理
一人でもはじめる骋颈迟でバージョン管理
Takafumi Yoshida
?
コンテナネットワーキング(颁狈滨)最前线
コンテナネットワーキング(颁狈滨)最前线コンテナネットワーキング(颁狈滨)最前线
コンテナネットワーキング(颁狈滨)最前线
Motonori Shindo
?
版本控制 使用Git & git hub
版本控制   使用Git & git hub版本控制   使用Git & git hub
版本控制 使用Git & git hub
維佋 唐
?
骋颈迟のよく使うコマンド
骋颈迟のよく使うコマンド骋颈迟のよく使うコマンド
骋颈迟のよく使うコマンド
YUKI Kaoru
?
今话题のいろいろなコンテナランタイムを比较してみた
今话题のいろいろなコンテナランタイムを比较してみた今话题のいろいろなコンテナランタイムを比较してみた
今话题のいろいろなコンテナランタイムを比较してみた
Kohei Tokunaga
?

Viewers also liked (6)

CocoaPods 使用教學
CocoaPods 使用教學CocoaPods 使用教學
CocoaPods 使用教學
ShengWen Chiou
?
骋颈迟丑耻产初上手教学
骋颈迟丑耻产初上手教学骋颈迟丑耻产初上手教学
骋颈迟丑耻产初上手教学
um nop
?
机器学习与资料探勘:决策树
机器学习与资料探勘:决策树机器学习与资料探勘:决策树
机器学习与资料探勘:决策树
Xavier Yin
?
Android Thread
Android ThreadAndroid Thread
Android Thread
Charile Tsai
?
Git rebase -i
Git rebase -iGit rebase -i
Git rebase -i
Charile Tsai
?
連淡水阿嬤都聽得懂的 機器學習入門 scikit-learn
連淡水阿嬤都聽得懂的機器學習入門 scikit-learn 連淡水阿嬤都聽得懂的機器學習入門 scikit-learn
連淡水阿嬤都聽得懂的 機器學習入門 scikit-learn
Cicilia Lee
?
骋颈迟丑耻产初上手教学
骋颈迟丑耻产初上手教学骋颈迟丑耻产初上手教学
骋颈迟丑耻产初上手教学
um nop
?
机器学习与资料探勘:决策树
机器学习与资料探勘:决策树机器学习与资料探勘:决策树
机器学习与资料探勘:决策树
Xavier Yin
?
連淡水阿嬤都聽得懂的 機器學習入門 scikit-learn
連淡水阿嬤都聽得懂的機器學習入門 scikit-learn 連淡水阿嬤都聽得懂的機器學習入門 scikit-learn
連淡水阿嬤都聽得懂的 機器學習入門 scikit-learn
Cicilia Lee
?

Similar to 寫給大家的 Git 教學 (20)

Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshell
Nelson Tai
?
Git 入门实战
Git 入门实战Git 入门实战
Git 入门实战
icy leaf
?
Git and git hub
Git and git hubGit and git hub
Git and git hub
唯 李
?
Git 程式碼版本控制軟體介紹
Git 程式碼版本控制軟體介紹Git 程式碼版本控制軟體介紹
Git 程式碼版本控制軟體介紹
PingLun Liao
?
骋颈迟入门与实践
骋颈迟入门与实践骋颈迟入门与实践
骋颈迟入门与实践
LC2009
?
骋滨罢实务操作与理论
骋滨罢实务操作与理论骋滨罢实务操作与理论
骋滨罢实务操作与理论
鵬 大
?
Git Essence Tutorial
Git Essence TutorialGit Essence Tutorial
Git Essence Tutorial
Ho Kim
?
骋颈迟+使用教程
骋颈迟+使用教程骋颈迟+使用教程
骋颈迟+使用教程
gemron
?
骋颈迟简报
骋颈迟简报骋颈迟简报
骋颈迟简报
Ted Liang
?
Git & git hub v1.2
Git & git hub v1.2Git & git hub v1.2
Git & git hub v1.2
Chris Chen
?
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops) twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC
?
Git
GitGit
Git
Min Micro
?
Git share
Git shareGit share
Git share
mactanxin
?
Git & git flow
Git & git flowGit & git flow
Git & git flow
Amo Wu
?
Git and Github basic with SourceTree
Git and Github basic with SourceTreeGit and Github basic with SourceTree
Git and Github basic with SourceTree
Chu-Siang Lai
?
Git flow
Git flowGit flow
Git flow
shaokun
?
Git 教學
Git 教學Git 教學
Git 教學
Ming-Sian Lin
?
骋颈迟丑耻产介绍及实用入门
骋颈迟丑耻产介绍及实用入门骋颈迟丑耻产介绍及实用入门
骋颈迟丑耻产介绍及实用入门
Rongxing Liu
?
Learning to Use Git | WeiYuan
Learning to Use Git | WeiYuanLearning to Use Git | WeiYuan
Learning to Use Git | WeiYuan
Wei-Yuan Chang
?
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
Bo-Yi Wu
?
Git in a nutshell
Git in a nutshellGit in a nutshell
Git in a nutshell
Nelson Tai
?
Git 入门实战
Git 入门实战Git 入门实战
Git 入门实战
icy leaf
?
Git and git hub
Git and git hubGit and git hub
Git and git hub
唯 李
?
Git 程式碼版本控制軟體介紹
Git 程式碼版本控制軟體介紹Git 程式碼版本控制軟體介紹
Git 程式碼版本控制軟體介紹
PingLun Liao
?
骋颈迟入门与实践
骋颈迟入门与实践骋颈迟入门与实践
骋颈迟入门与实践
LC2009
?
骋滨罢实务操作与理论
骋滨罢实务操作与理论骋滨罢实务操作与理论
骋滨罢实务操作与理论
鵬 大
?
Git Essence Tutorial
Git Essence TutorialGit Essence Tutorial
Git Essence Tutorial
Ho Kim
?
骋颈迟+使用教程
骋颈迟+使用教程骋颈迟+使用教程
骋颈迟+使用教程
gemron
?
骋颈迟简报
骋颈迟简报骋颈迟简报
骋颈迟简报
Ted Liang
?
Git & git hub v1.2
Git & git hub v1.2Git & git hub v1.2
Git & git hub v1.2
Chris Chen
?
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops) twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC
?
Git & git flow
Git & git flowGit & git flow
Git & git flow
Amo Wu
?
Git and Github basic with SourceTree
Git and Github basic with SourceTreeGit and Github basic with SourceTree
Git and Github basic with SourceTree
Chu-Siang Lai
?
骋颈迟丑耻产介绍及实用入门
骋颈迟丑耻产介绍及实用入门骋颈迟丑耻产介绍及实用入门
骋颈迟丑耻产介绍及实用入门
Rongxing Liu
?
Learning to Use Git | WeiYuan
Learning to Use Git | WeiYuanLearning to Use Git | WeiYuan
Learning to Use Git | WeiYuan
Wei-Yuan Chang
?
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
Bo-Yi Wu
?

More from littlebtc (12)

Jetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserJetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browser
littlebtc
?
MozTW Jetpack Workshop: Taichung
MozTW Jetpack Workshop: TaichungMozTW Jetpack Workshop: Taichung
MozTW Jetpack Workshop: Taichung
littlebtc
?
MozTW Jetpack Workshop: Taipei
MozTW Jetpack Workshop: TaipeiMozTW Jetpack Workshop: Taipei
MozTW Jetpack Workshop: Taipei
littlebtc
?
Jetpack and Jetpack Reboot
Jetpack and Jetpack RebootJetpack and Jetpack Reboot
Jetpack and Jetpack Reboot
littlebtc
?
COSCUP Jetpack Lighting Talk
COSCUP Jetpack Lighting TalkCOSCUP Jetpack Lighting Talk
COSCUP Jetpack Lighting Talk
littlebtc
?
MoZH propose
MoZH proposeMoZH propose
MoZH propose
littlebtc
?
Ext 0523
Ext 0523Ext 0523
Ext 0523
littlebtc
?
Mozilla Firefox Extension Development, Course 1: Basic
Mozilla Firefox Extension Development, Course 1: BasicMozilla Firefox Extension Development, Course 1: Basic
Mozilla Firefox Extension Development, Course 1: Basic
littlebtc
?
MozTW YZU CSE Lecture
MozTW YZU CSE LectureMozTW YZU CSE Lecture
MozTW YZU CSE Lecture
littlebtc
?
Something about Wikipedia
Something about WikipediaSomething about Wikipedia
Something about Wikipedia
littlebtc
?
Jetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browserJetpack SDK: The new possibility of the extensions on browser
Jetpack SDK: The new possibility of the extensions on browser
littlebtc
?
MozTW Jetpack Workshop: Taichung
MozTW Jetpack Workshop: TaichungMozTW Jetpack Workshop: Taichung
MozTW Jetpack Workshop: Taichung
littlebtc
?
MozTW Jetpack Workshop: Taipei
MozTW Jetpack Workshop: TaipeiMozTW Jetpack Workshop: Taipei
MozTW Jetpack Workshop: Taipei
littlebtc
?
Jetpack and Jetpack Reboot
Jetpack and Jetpack RebootJetpack and Jetpack Reboot
Jetpack and Jetpack Reboot
littlebtc
?
COSCUP Jetpack Lighting Talk
COSCUP Jetpack Lighting TalkCOSCUP Jetpack Lighting Talk
COSCUP Jetpack Lighting Talk
littlebtc
?
Mozilla Firefox Extension Development, Course 1: Basic
Mozilla Firefox Extension Development, Course 1: BasicMozilla Firefox Extension Development, Course 1: Basic
Mozilla Firefox Extension Development, Course 1: Basic
littlebtc
?
MozTW YZU CSE Lecture
MozTW YZU CSE LectureMozTW YZU CSE Lecture
MozTW YZU CSE Lecture
littlebtc
?
Something about Wikipedia
Something about WikipediaSomething about Wikipedia
Something about Wikipedia
littlebtc
?

寫給大家的 Git 教學