SlideShare a Scribd company logo
1 of 205
Download to read offline
跟著⽺羊⼩小咩⼀一起爽
Blog : lamb-mei.com
⽺羊⼩小咩 Lamb Mei
E-mail : lamb@lamb-mei.com
FB : https://www.facebook.com/lamb.mei
GitHub:https://github.com/lamb-mei/
爽 咩
世人的誤解
我是
圖⽚片來源 http://www.dep.taipei.gov.tw/site/tcg/public/MMO/dep_MMO/0129.jpg
今天的主題
圖⽚片來源 http://newsget-cache.stor.sinaapp.com/19e004423dfc63cc62576f113e68af04.jpg
圖⽚片來源:http://img04.tooopen.com/images/20121024/tooopen_201210241527566827.jpg
http://s1.t.itc.cn/mblog/pic/20125_18_9/f_28548972594774707.gif
為什麼要使⽤用 GIT
為什麼要使⽤用 Git
分散式
速度快
⼤大神都在⽤用
⼤大家都在⽤用
不⽤用很落伍
公司強迫我要⽤用
開分⽀支(branch)很容易
⼤大部份操作本地端可完成
不需中央伺服器版本庫毀損的⾵風險較低
超潮der
對沒⽤用過的⼈人來說
圖⽚片來源 http://s279.photobucket.com/user/sherlock1031/media/Dectective%20Dissicusion%20Group/Galileo106.jpg.html
對沒⽤用過的⼈人來說
圖⽚片來源 http://s279.photobucket.com/user/sherlock1031/media/Dectective%20Dissicusion%20Group/Galileo106.jpg.html
對只會 commit / push / pull 的⼈人也是
/ 20512
使⽤用 GIT 要解決的事情
/ 20513
使⽤用 GIT 要解決的事情
/ 20514
使⽤用 GIT 要解決的事情
檔案可能還好處理
但若分別
是資料夾呢?
/ 20515
使⽤用 GIT 要解決的事情
圖⽚片來源 http://backlogtool.com/git-guide/tw/img/post/intro/capture_intro1_1_2.png
/ 20516
使⽤用 GIT 要解決的事情
其實還有很多...
圖⽚片來源 http://backlogtool.com/git-guide/tw/img/post/intro/capture_intro1_1_2.png
/ 20517
圖⽚片來源 https://lh4.googleusercontent.com/-vvzM1j0tqGA/UPffE081MHI/AAAAAAAAQ5c/C6oSHikiCdY/s990/P1130764.jpg
最後只要知道 GIT 是
/ 20518
GIT Software
/ 205
Windows 必裝軟體
19
http://msysgit.github.io/
msysgit
http://git-scm.com/downloads/win
git-scm
/ 205
Mac 必裝軟體
20
$ yum install curl-devel expat-devel gettext-devel 
openssl-devel zlib-devel
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext 
libz-dev libssl-dev
git-scm
⼿手動安裝
/ 20521
若你是Coding 魔⼈人
千萬不能裝 GUI 軟體
圖⽚片來源 http://screen-wallpapers.com/wallpapers/4743/bigpreview_Coding.jpg
/ 20522
圖⽚片來源 http://screen-wallpapers.com/wallpapers/4743/bigpreview_Coding.jpg
⼀一定要⽤用 terminal
不然不夠帥
/ 20523
圖⽚片來源 http://ext.pimg.tw/yayachen0326/4ab33c5f3fe73.jpg
若你是...
/ 205
Git GUI 軟體
24
windows only
https://code.google.com/p/tortoisegit/
/ 205
Git GUI 軟體
25
windows / OS X
http://www.sourcetreeapp.com/
/ 20526
GIT 這個玩意
/ 20527
基本觀念⾮非常重要!



協同作業
必須⼤大家都要有相同的觀念
/ 20528
腦部神經聯結⽰示意圖
協同作業,必須⼤大家都要有相同的觀念
圖⽚片來源 http://www.naipo.com/Portals/1/web_tw/images/pic089-01-a01.jpg
儲存庫 ( Repository )
/ 20530
圖⽚片來源:http://backlogtool.com/git-guide/tw/img/post/intro/capture_intro1_2_1.png
儲存庫哪來的
• 本地的儲存庫 (local repository)
/ 20531
圖⽚片來源:http://backlogtool.com/git-guide/tw/img/post/intro/capture_intro1_2_2.png
儲存庫哪來的
• 遠端的儲存庫 (remote repository)
GitHub 或其他平台建⽴立的 repo
儲存庫 ( Repository )
git init
git init --bare
git clone <REPOSITORY_URI>
/ 20533
git init --bare
Server ⽤用儲存庫資料夾 命名規則
<資料夾名稱>.git
https://github.com/github/gitignore.git
儲存庫 ( Repository )
Git 常⽤用指令
/ 20535
Git 常⽤用指令
git add
新增檔案
git add .
git add <file path>
git add *.js
git add docs/*
/ 20536
Git 常⽤用指令
git status
查詢狀態
git status -s
git status -b
/ 20537
Git 常⽤用指令
git commit
提交變更 / 建⽴立版本
git commit -m ‘訊息⽂文字‘
/ 20538
Git 常⽤用指令
git log
查詢版本
git log -2
/ 20539
Git 常⽤用指令
對很多⼈人來說從這開始
就不是常⽤用指令了
/ 20540
Git 常⽤用指令
git rm
刪除檔案
git rm 1.txt
1. 刪除版本庫索引的 ‘1.txt' 這個檔案
2. 刪除⼯工作⺫⽬目錄下的 '1.txt' 這個實體檔案
/ 20541
Git 常⽤用指令
git mv
更換檔案
git mv 1.txt A.txt
/ 20542
Git 常⽤用指令
git reset
重設⼯工作⺫⽬目錄/索引狀態
git reset --hard
只有重設索引
還原索引跟⼯工作⺫⽬目錄
注意 reset 是針對全部⼯工作區
(這只是為了好記,有別種reset ⽤用法)
/ 20543
Git 常⽤用指令
git checkout master -- 1.txt
取出指定的 <物件>
git checkout master 1.txt
e.g 還原其中⼀一個被改壞的檔案
git checkout
儲存庫 ? ⼯工作⺫⽬目錄?索引?
⼯工作⺫⽬目錄
/ 20545
儲存庫

(repo)
儲存庫 ? ⼯工作⺫⽬目錄?索引?
/ 20546
索引
儲存庫 ? ⼯工作⺫⽬目錄?索引?
/ 20547
圖⽚片來源:http://backlogtool.com/git-guide/tw/img/post/intro/capture_intro1_4_1.png
儲存庫 ? ⼯工作⺫⽬目錄?索引?
Git 原理/結構
圖⽚片來源 :http://himg2.huanqiu.com/saronscms/uploadfile/2014/0403/20140403050245784.jpg
跟⼤大藍洞⼀一樣深 XD
Git 原理/結構
/ 20549
Git 物件類型
blob 物件 tree 物件
commit 物件 tag 物件
所有的物件都會以 zlib 演算法進⾏行壓縮
/ 20550
Git 物件類型
blob 物件
某個檔案的 "內容",且只有內容⽽而已,當你執⾏行
git add 指令的同時,這些新增檔案的內容就會
⽴立刻被寫⼊入成為 blob 物件,檔名則是物件內容
的雜湊運算結果,沒有任何其他其他資訊,像是
檔案時間、原本的檔名或檔案的其他資訊,都會
儲存在其他類型的物件裡 (也就是 tree 物件)
/ 20551
Git 物件類型
tree 物件
儲存特定⺫⽬目錄下的所有資訊,包含該⺫⽬目錄下的檔
名、對應的 blob 物件名稱、檔案連結(symbolic
link) 或其他 tree 物件等等。由於 tree 物件可以
包含其他 tree 物件,所以tree 物件其實就跟「資
料夾」沒兩樣。簡單來說,tree 物件這就是在特
定版本下某個資料夾的快照(Snapshot)
/ 20552
Git 物件類型
commit 物件
⽤用來記錄有那些 tree 物件包含在版本中,⼀一個
commit 物件代表著 Git 的⼀一次提交,記錄著特
定提交版本有哪些 tree 物件、以及版本提交的
時間、紀錄訊息等等,通常還會記錄上⼀一層的
commit 物件名稱 (只有第⼀一次 commit 的版本沒
有上層 commit 物件名稱
/ 20553
Git 物件關聯
圖⽚片來源 :http://journal.code4lib.org/media/issue21/anderson/images/large/fig-09-git-revisions.png
/ 20554
Git 物件命名規則
每⼀一個「物件」,都是以「檔案內容」進⾏行 SHA1 雜湊運算
出⼀一個 hash 值,並⽤用這個 hash 值當作物件的名稱 (檔名)。
Git 會先拿前兩個字元(97)當作⺫⽬目錄
然後把剩下的 hash 值當成檔名 (3749075c53236cfc411f62918efc3ce3a31380)
這些物件的實體⺫⽬目錄與檔案也都會放在 .gitobjects ⺫⽬目錄下
/ 20555
查詢 Hash 編碼
git hash-object
$git hash-object 1.txt
d00491fd7e5bb6fa28c517a0bb32b8b506539d4d
/ 20556
查詢 Git 物件
git cat-file -p
/ 20557
查詢 Git 物件
git cat-file -p
/ 20558
查詢 Git 物件
git cat-file -p
/ 20559
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0301-tn.png
/ 20560
Git 物件關聯
圖⽚片來源 : http://git-scm.com/figures/18333fig0302-tn.png
/ 20561
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0303-tn.png
/ 20562
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0304-tn.png
/ 20563
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0305-tn.png
HEAD 是⼀一直保持著最新版本的指標
/ 20564
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0306-tn.png
切換到 Testing 分⽀支的狀態
/ 20565
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0307-tn.png
/ 20566
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0309-tn.png
圖⽚片來源 http://ecx.images-amazon.com/images/I/51oxTnCqCbL._SY300_.jpg
http://backlogtool.com/git-guide/tw/img/post/stepup/capture_stepup1_1_1.png
分⽀支 (branch)
/ 20568
分⽀支 (branch)
git branch <branch name>
建⽴立分⽀支
/ 20569
分⽀支 (branch)
git checkout <branch name>
切換分⽀支
/ 20570
Git 差異⽐比對
git diff
git diff         => ⼯工作⺫⽬目錄 vs 索引
git diff HEAD      => ⼯工作⺫⽬目錄 vs HEAD
git diff --cached HEAD => 索引 vs HEAD
git diff HEAD^ HEAD  => HEAD^ vs HEAD
/ 20571
Git 物件的參照名稱
參照名稱 (ref) 簡單來說就是 Git 物件的⼀一個「指標」
是相對於「絕對名稱」的另⼀一個「好記名稱」
⽤用⼀一個預先定義或⾃自⾏行定義的名稱來代表某⼀一個 Git 物件。
HEAD (代表最新版本)
分⽀支

標籤名稱
這些都是「參照名稱」
/ 20572
在⼤大多數的情況下,「參照名稱」通常都
會指向⼀一個 commit 物件,但並⾮非必要,
你也可以指向其他 Git 物件類型,像是
blob 物件、tree 物件、tag 物件等等
Git 物件的參照名稱
/ 20573
.git/refs/ ⺫⽬目錄
• 本地分⽀支: .git/refs/heads/
• 遠端分⽀支: .git/refs/remotes/
• 標  籤: .git/refs/tags/
/ 20574
* HEAD
永遠會指向「⼯工作⺫⽬目錄」中所設定的「分⽀支」當中的「最新版」。
* ORIG_HEAD
就是 HEAD 這個 commit 物件的「前⼀一版」,經常⽤用來復原上⼀一次的版本變更。
* FETCH_HEAD
使⽤用遠端儲存庫時,可能會使⽤用 git fetch 指令取回所有遠端儲存庫的物件。這個
FETCH_HEAD 符號參考則會記錄遠端儲存庫中每個分⽀支的 HEAD (最新版) 的「絕對名
稱」。
* MERGE_HEAD
當你執⾏行合併⼯工作時 (關於合併的議題會在⽇日後的⽂文章中會提到),「合併來源」的 commit
物件絕對名稱會被記錄在 MERGE_HEAD 這個符號參照中。
符號參照名稱 (symref)
符號參照名稱 (symref) 其實也是參照名稱 (ref) 的⼀一種,只是內容不同
⽽而已。我們從下圖應可看出其內容的差異,「符號參照」會指向另⼀一
個「參照名稱」
並且內容以 ref: 開頭
/ 20575
Git 參照名稱⼜又有區分「⼀一般參照」與「符號參照」,兩者的⽤用
途⼀一模⼀一樣,只在於內容不太⼀一樣。
「符號參照」會指向另⼀一個「⼀一般參照」
「⼀一般參照」則是指向⼀一個 Git 物件的「絕對名稱」。
「參照名稱(ref)」 簡單來說就是 Git 物件的⼀一個「指標」,⽤用來
指向特定 Git 物件,所以你可以把「參照名稱」想像成 Git 物件
絕對名稱的別名 (Alias),⽤用來幫助記憶。在 Git 裡,有許多機制
可以幫你控管專案,例如「分⽀支」、「標籤」等等,這些機制⾻骨
⼦子裡其實就是靠「參照」完成的。
參照⼩小節
圖⽚片來源 : http://i.imgur.com/LRC1M.jpg
http://blog-imgs-43-origin.fc2.com/m/o/l/mollymolly1/100331-5ds.jpg
http://static.ettoday.net/images/576/d576654.jpg
http://link.photo.pchome.com.tw/s13/js86/4/132991104143/

http://pic.pimg.tw/sandykill/4aab6e5adf5d7.gif
圖⽚片來源 :http://www.fangdigital.com/wp-content/uploads/2013/04/tags.jpg
Git 標籤 (tag)
• 輕量標籤 (lightweight tag)
• 標⽰示標籤 (annotated tag)
/ 20578
Git 標籤 (tag)
• 輕量標籤 (lightweight tag)
• 標⽰示標籤 (annotated tag)
這種「標籤」才是 Git 儲存庫中「永久的物件」
/ 20579
Git 暫存(stash)
• git stash
會將所有已列⼊入追蹤(tracked)的檔案建⽴立暫存版
• git stash -u
會包括所有已追蹤或未追蹤的檔案,全部都建⽴立
成暫存版
圖⽚片來源:http://bbs.mychat.to/attach/Fid_175/175_837026.jpg
追蹤變更軌跡
git reflog
/ 20581
追蹤變更軌跡 (儲存位置)
.git/logs/
/ 20582
追蹤變更軌跡 (查詢後復原)
git reflog
HEAD@{0},永遠代表⺫⽬目前分⽀支的「最新版」
/ 20583
git reset HEAD@{1} --hard
追蹤變更軌跡 (查詢後復原)
git reflog
「取消」最近⼀一次的版本紀錄
HEAD@{0},永遠代表⺫⽬目前分⽀支的「最新版」
/ 20584
追蹤變更軌跡(記錄時機)
* commit
* checkout
* pull
* push
* merge
* reset
* clone
* branch
* rebase
* stash
Git 忽略清單
.gitignore
/ 20586
Git 忽略清單 .gitignore
Git 合併觀念
git merge
/ 20588
Git 合併觀念 (merge)
/ 20589
Git 合併觀念 (merge)
fast-forward(快轉)合併
/ 20590
Git 合併觀念 (merge)
/ 20591
Git 合併觀念 (merge)
合併會多⼀一個 commit
/ 20592
圖⽚片來源 :http://git-scm.com/figures/18333fig0310-tn.png
Git 合併 (merge)
/ 20593
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0311-tn.png
/ 20594
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0311-tn.png
/ 20595
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0313-tn.png
/ 20596
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0314-tn.png
/ 20597
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0315-tn.png
/ 20598
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0316-tn.png
/ 20599
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0316-tn.png
/ 205100
Git 合併觀念 (merge)
1. 合併之前,先看清楚⾃自⼰己在哪個分⽀支
2. 合併之前,請確保⼯工作⺫⽬目錄是乾淨的
3. 合併時請⽤用 git merge [另⼀一個分⽀支] 來將另⼀一個分
⽀支的變更合併回來
4. 合併成功後,確認沒有問題!
/ 205101
Git 合併衝突 (merge)
/ 205102
Git 合併衝突 (merge)
⽤用壞了怎麼辦
/ 205103
Git 合併衝突 (merge)
⽤用壞了怎麼辦
git reset HEAD@{1} --hard
還原就好了
/ 205104
Git 合併衝突 (merge)
⽤用壞了怎麼辦
git reset --hard ORIG_HEAD
這樣也可以!
Git 合併
git rebase
/ 205106
Git 合併
git rebase
/ 205107
Git 合併
git rebase
/ 205108
Git 合併
從 bugfix “rebase” 到 master
/ 205109
Git 合併 rebase
圖⽚片來源 :http://git-scm.com/figures/18333fig0331-tn.png
所以在 client 分⽀支下命令
git rebase master (會變成下圖
若在 master
git rebase client (會變成下圖
這張圖是
git rebase --onto master server client
git rebase --onto master server client
“取出 client 分⽀支,找出 client 分⽀支和 server 分⽀支的共同祖先之後的變化,
然後把它們在 master 上重演⼀一遍”。
(譯注:雖然 client 裡的 C8, C9 在 C3 之後,但這僅表明時間上的先後,
⽽而⾮非在 C3 修改的基礎上進⼀一步改動,因為 server 和 client 這兩個分⽀支對
應的代碼應該是兩套檔,雖然這麼說不是很嚴格,但應理解為在 C3 時間
點之後,對另外的檔所做的 C8,C9 修改,放到主幹重演。)
git rebase --onto master server client
這需要⽤用 command 才弄得出來,所以做個了解就好


我也很少⽤用 onto 這個命令
/ 205116
Git 合併 rebase
圖⽚片來源 :http://git-scm.com/figures/18333fig0333-tn.png
/ 205117
Git 合併 rebase
圖⽚片來源 :http://git-scm.com/figures/18333fig0334-tn.png
/ 205118
現在你想法⼀一定是
/ 205119
圖⽚片來源 :http://mypaper.pchome.com.tw/show/article/kkk670670/A1276118288
Git 修改 commit
/ 205121
⼈人⾮非聖賢,孰能無過
/ 205122
Git 修改 commit
git commit --amend
/ 205123
Git 修改 commit (amend)
漏掉應該要⼀一起commit 檔案
/ 205124
糟糕我寫錯mesage
Git 修改 commit (amend)
/ 205125
Git 重置 commit
git reset
/ 205126
Git 重置 commit
git reset --hard "HEAD^"
刪除最後的版本
/ 205127
Git 重置 commit
git reset --hard ORIG_HEAD
復原上次的動作
/ 205128
Git 重置 commit
git reset --soft "HEAD^"
刪除最後的版本,但留下修改內容
/ 205129
Git 重置 commit
git reset --soft "HEAD^"
git reset --mixed "HEAD^"
git reset "HEAD^"
/ 205130
Git 重置 commit
git reset --soft "HEAD^"
git reset --mixed "HEAD^"
git reset "HEAD^"
檔案會是 stage狀態
/ 205131
Git 重置 commit
git reset --soft "HEAD^"
git reset --mixed "HEAD^"
git reset "HEAD^"
檔案會是 unstage狀態
/ 205132
Git 還原 commit
git revert [commit_id]
/ 205133
Git 還原 commit
git revert [commit_id]
注意:索引必須乾淨狀態
/ 205134
Git 修改 commit
git cherry-pick
圖⽚片來源 : https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTSkS0N71OS1U4LRv9xx79ek2-rHXowkqWKvDt65_h-oWsP4chNzg
/ 205135
Git 修改 commit
git cherry-pick
圖⽚片來源 : https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTSkS0N71OS1U4LRv9xx79ek2-rHXowkqWKvDt65_h-oWsP4chNzg
/ 205136
Git 修改 commit
git cherry-pick
/ 205137
Git 修改 commit
git rebase -i
乾坤⼤大挪移
圖⽚片來源 :http://www.wzrlmy.com/A//upload/product//NewWebPic/BigPic/201005281209289062.jpg
/ 205138
Git 修改 commit
git rebase -i
乾坤⼤大挪移
注意:索引必須乾淨狀態
/ 205139
Git 修改 commit (rebase)
你可以...
/ 205140
Git 修改 commit (rebase)
1. 調換 commit 的順序
/ 205141
Git 修改 commit (rebase)
1. 調換 commit 的順序
2. 修改 commit 的訊息
/ 205142
Git 修改 commit (rebase)
1. 調換 commit 的順序
2. 修改 commit 的訊息
3. 插⼊入⼀一個 commit
/ 205143
Git 修改 commit (rebase)
1. 調換 commit 的順序
2. 修改 commit 的訊息
3. 插⼊入⼀一個 commit
4. 編輯⼀一個 commit
/ 205144
Git 修改 commit (rebase)
1. 調換 commit 的順序
2. 修改 commit 的訊息
3. 插⼊入⼀一個 commit
4. 編輯⼀一個 commit
5. 拆解⼀一個 commit
/ 205145
Git 修改 commit (rebase)
1. 調換 commit 的順序
2. 修改 commit 的訊息
3. 插⼊入⼀一個 commit
4. 編輯⼀一個 commit
5. 拆解⼀一個 commit
6. 壓縮⼀一個 commit,且保留訊息紀錄
/ 205146
Git 修改 commit (rebase)
1. 調換 commit 的順序
2. 修改 commit 的訊息
3. 插⼊入⼀一個 commit
4. 編輯⼀一個 commit
5. 拆解⼀一個 commit
6. 壓縮⼀一個 commit,且保留訊息紀錄
7. 壓縮⼀一個 commit,但丟棄版本紀錄
/ 205147
Git 修改 commit (rebase)
1. 調換 commit 的順序
2. 修改 commit 的訊息
3. 插⼊入⼀一個 commit
4. 編輯⼀一個 commit
5. 拆解⼀一個 commit
6. 壓縮⼀一個 commit,且保留訊息紀錄
7. 壓縮⼀一個 commit,但丟棄版本紀錄
8. 刪除⼀一個 commit
Git 遠端版本庫
/ 205149
Git 遠端版本庫
傳輸⽅方式
http:// https://
git://
ssh://
/ 205150
Git 遠端版本庫
git push
/ 205151
Git 遠端版本庫
git pull
git fetch
/ 205152
Git 遠端版本庫
git pull
git fetch
fetch
merge
+
/ 205153
來⾃自github的Scott Chacon

OSDC Git Session

來源 http://contribgit.herokuapp.com/#1
/ 205154
/ 205155
/ 205156
/ 205157
/ 205158
/ 205159
/ 205160
/ 205161
/ 205162
/ 205163
/ 205164
/ 205165
/ 205166
/ 205167
/ 205168
/ 205169
/ 205170
/ 205171
/ 205172
/ 205173
/ 205174
/ 205175
/ 205176
/ 205177
/ 205178
/ 205179
/ 205180
/ 205181
/ 205182
/ 205183
/ 205184
/ 205185
Git 遠端觀念
/ 205187
push 了就回不去了
圖⽚片來源:http://cdn0.t17.techbang.com.tw/system/attached_images/2012/12/76729/show/feba4c111f349866c5e087de04526d98.jpg?1355366400
Git 遠端觀念
/ 205188
push 後的commit 不能...
Git 遠端觀念
/ 205189
push 後的commit 不能...
Git 遠端觀念
reset
rebase
ament
…
/ 205190
push 後的commit 只能...
Git 遠端觀念
revert
/ 205191
Git 掛勾 (Hook)
Git flow
/ 205193
Git flow
/ 205194
Git flow
git flow feature start feature_xxxxx
(以此類推 git flow release 和 git flow hotfix)
git flow feature finish feature_xxxxx
其他的....
/ 205196
Blame
subtree
submodules
bisect
/ 205197
下次有空再說....
圖⽚片來源 :http://pic.pimg.tw/austinleefuture/1407855278-2999893000.jpg
最後
最後
最後
最後
最後
最後
很重要,所以說三次
學然後知不⾜足,教然後知困,教學相⻑⾧長
圖⽚片來源 :http://www.worldofmastermind.com/wp-content/uploads/2013/10/Confucious-2a.jpg
/ 205203
學然後知不⾜足,教然後知困。
知不⾜足,然後能⾃自反也

知困,然後⾃自強也
故⽈曰,教學相⻑⾧長也
• “⾃自反”,意思是反過來要求⾃自⼰己。
• “困”,不通,理解不清。
• “⾃自強”,意思是⾃自⼰己努⼒力。“強”,竭⼒力,盡⼒力。
• “教學相⻑⾧長”,意思是教和學互相促進,教別⼈人,也能增⻑⾧長⾃自⼰己的學問
學習才能知道⾃自⼰己知識的缺乏

教了別⼈人之後才能知道⾃自⼰己對知識還理解不清。

認識到了⾃自⼰己知識的不⾜足,然後才能反過來要求⾃自⼰己;知道了⾃自⼰己對有些
知識還理解不通,然後才能⾃自⼰己努⼒力。
參考⽂文獻
• The Will Will Web 保哥 Git 教學
• iHower Git 版本控制系統
• 猴⼦子都能懂的 Git 指南
• Git官⽅方教學
• Casear Chu Git 教學
• Scott Chacon Git Session on OSDC
Q & A
羊小咩 2015 / 01 / 29
Thank	
  you	
  !

More Related Content

What's hot

はじめようGit
はじめようGitはじめようGit
はじめようGittechscore
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門dsuke Takaoka
 
はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーSaeko Yamamoto
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門to_ueda
 
Gitのよく使うコマンド
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンドYUKI Kaoru
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewRueful Robin
 
git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用Will Huang
 
Git 實務圖解
Git 實務圖解Git 實務圖解
Git 實務圖解Pokai Chang
 
Learning git
Learning gitLearning git
Learning gitSid Anand
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門Tomohiko Himura
 
連哈秋都懂的Git教學
連哈秋都懂的Git教學連哈秋都懂的Git教學
連哈秋都懂的Git教學hydai
 
バージョン管理のワークフロー
バージョン管理のワークフローバージョン管理のワークフロー
バージョン管理のワークフローadd20
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩Ayana Yokota
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hubVenkat Malladi
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash CourseNilay Binjola
 
プログラミング勉強会「オトナのGit入門」
プログラミング勉強会「オトナのGit入門」プログラミング勉強会「オトナのGit入門」
プログラミング勉強会「オトナのGit入門」Yoshinori Yamanouchi
 

What's hot (20)

はじめようGit
はじめようGitはじめようGit
はじめようGit
 
デザイナのためのGit入門
デザイナのためのGit入門デザイナのためのGit入門
デザイナのためのGit入門
 
はじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダーはじめてのGit forデザイナー&コーダー
はじめてのGit forデザイナー&コーダー
 
15分でわかるGit入門
15分でわかるGit入門15分でわかるGit入門
15分でわかるGit入門
 
Gitのよく使うコマンド
Gitのよく使うコマンドGitのよく使うコマンド
Gitのよく使うコマンド
 
Github basics
Github basicsGithub basics
Github basics
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
 
git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用git merge 與 rebase 的觀念與實務應用
git merge 與 rebase 的觀念與實務應用
 
Git 實務圖解
Git 實務圖解Git 實務圖解
Git 實務圖解
 
Learning git
Learning gitLearning git
Learning git
 
やりなおせる Git 入門
やりなおせる Git 入門やりなおせる Git 入門
やりなおせる Git 入門
 
連哈秋都懂的Git教學
連哈秋都懂的Git教學連哈秋都懂的Git教學
連哈秋都懂的Git教學
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
バージョン管理のワークフロー
バージョン管理のワークフローバージョン管理のワークフロー
バージョン管理のワークフロー
 
Git n git hub
Git n git hubGit n git hub
Git n git hub
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Gitはじめの一歩
Gitはじめの一歩Gitはじめの一歩
Gitはじめの一歩
 
Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
プログラミング勉強会「オトナのGit入門」
プログラミング勉強会「オトナのGit入門」プログラミング勉強会「オトナのGit入門」
プログラミング勉強会「オトナのGit入門」
 

Similar to Git由超淺入超深

Git tutorial for windows user (給 Windows user 的 Git 教學)
Git tutorial for windows user (給 Windows user 的 Git 教學)Git tutorial for windows user (給 Windows user 的 Git 教學)
Git tutorial for windows user (給 Windows user 的 Git 教學)Cloud Tu
 
TortoiseGit Intro in Traditional Chinese
TortoiseGit Intro in Traditional ChineseTortoiseGit Intro in Traditional Chinese
TortoiseGit Intro in Traditional ChineseInfobio@YM
 
Code review on github training ( beginner )
Code review on github training ( beginner )Code review on github training ( beginner )
Code review on github training ( beginner )JS Lee
 
Android 程式設計(4)
Android 程式設計(4)Android 程式設計(4)
Android 程式設計(4)Roy Wang
 
看日記學Git
看日記學Git看日記學Git
看日記學GitStanley Ho
 
Git 超簡單學習懶人包(軟體程式版本控管系統)
Git 超簡單學習懶人包(軟體程式版本控管系統)Git 超簡單學習懶人包(軟體程式版本控管系統)
Git 超簡單學習懶人包(軟體程式版本控管系統)flylon
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to gitBo-Yi Wu
 
大家應該都要會的工具 Git 從放棄到會用2-分支篇
大家應該都要會的工具 Git   從放棄到會用2-分支篇大家應該都要會的工具 Git   從放棄到會用2-分支篇
大家應該都要會的工具 Git 從放棄到會用2-分支篇Alan Tsai
 
大家應該都要會的工具 Git 從放棄到會用1-基礎篇
大家應該都要會的工具 Git   從放棄到會用1-基礎篇大家應該都要會的工具 Git   從放棄到會用1-基礎篇
大家應該都要會的工具 Git 從放棄到會用1-基礎篇Alan Tsai
 

Similar to Git由超淺入超深 (11)

Git tutorial for windows user (給 Windows user 的 Git 教學)
Git tutorial for windows user (給 Windows user 的 Git 教學)Git tutorial for windows user (給 Windows user 的 Git 教學)
Git tutorial for windows user (給 Windows user 的 Git 教學)
 
TortoiseGit Intro in Traditional Chinese
TortoiseGit Intro in Traditional ChineseTortoiseGit Intro in Traditional Chinese
TortoiseGit Intro in Traditional Chinese
 
Git for everyone
Git for everyoneGit for everyone
Git for everyone
 
Code review on github training ( beginner )
Code review on github training ( beginner )Code review on github training ( beginner )
Code review on github training ( beginner )
 
Android 程式設計(4)
Android 程式設計(4)Android 程式設計(4)
Android 程式設計(4)
 
看日記學Git
看日記學Git看日記學Git
看日記學Git
 
Git 超簡單學習懶人包(軟體程式版本控管系統)
Git 超簡單學習懶人包(軟體程式版本控管系統)Git 超簡單學習懶人包(軟體程式版本控管系統)
Git 超簡單學習懶人包(軟體程式版本控管系統)
 
Introduction to git
Introduction to gitIntroduction to git
Introduction to git
 
大家應該都要會的工具 Git 從放棄到會用2-分支篇
大家應該都要會的工具 Git   從放棄到會用2-分支篇大家應該都要會的工具 Git   從放棄到會用2-分支篇
大家應該都要會的工具 Git 從放棄到會用2-分支篇
 
大家應該都要會的工具 Git 從放棄到會用1-基礎篇
大家應該都要會的工具 Git   從放棄到會用1-基礎篇大家應該都要會的工具 Git   從放棄到會用1-基礎篇
大家應該都要會的工具 Git 從放棄到會用1-基礎篇
 
Git Tutorial
Git TutorialGit Tutorial
Git Tutorial
 

More from 羊 小咩 (lamb-mei)

使用openCV做影像辨識 @ iplayground
使用openCV做影像辨識 @ iplayground使用openCV做影像辨識 @ iplayground
使用openCV做影像辨識 @ iplayground羊 小咩 (lamb-mei)
 
資訊安全從連線加密開始 workshop 2020/01
資訊安全從連線加密開始 workshop 2020/01資訊安全從連線加密開始 workshop 2020/01
資訊安全從連線加密開始 workshop 2020/01羊 小咩 (lamb-mei)
 
非對稱加密-以橢圓曲線密碼學ECC為例
非對稱加密-以橢圓曲線密碼學ECC為例非對稱加密-以橢圓曲線密碼學ECC為例
非對稱加密-以橢圓曲線密碼學ECC為例羊 小咩 (lamb-mei)
 
致,第三者 - 從中間人攻擊看Network Debug
致,第三者 - 從中間人攻擊看Network Debug致,第三者 - 從中間人攻擊看Network Debug
致,第三者 - 從中間人攻擊看Network Debug羊 小咩 (lamb-mei)
 
咩星征服計劃 用 Js 征服地球Part VI
咩星征服計劃 用 Js 征服地球Part VI咩星征服計劃 用 Js 征服地球Part VI
咩星征服計劃 用 Js 征服地球Part VI羊 小咩 (lamb-mei)
 
咩星征服計劃 用 Js 征服地球 Part III
咩星征服計劃 用 Js 征服地球 Part III咩星征服計劃 用 Js 征服地球 Part III
咩星征服計劃 用 Js 征服地球 Part III羊 小咩 (lamb-mei)
 
咩星征服計劃 用 Js 征服地球 Part II
咩星征服計劃 用 Js 征服地球 Part II咩星征服計劃 用 Js 征服地球 Part II
咩星征服計劃 用 Js 征服地球 Part II羊 小咩 (lamb-mei)
 
咩星征服計劃 用 Js 征服地球
咩星征服計劃 用 Js 征服地球咩星征服計劃 用 Js 征服地球
咩星征服計劃 用 Js 征服地球羊 小咩 (lamb-mei)
 
主管不會教、自己學不會的 Google analytics
主管不會教、自己學不會的 Google analytics主管不會教、自己學不會的 Google analytics
主管不會教、自己學不會的 Google analytics羊 小咩 (lamb-mei)
 

More from 羊 小咩 (lamb-mei) (12)

使用openCV做影像辨識 @ iplayground
使用openCV做影像辨識 @ iplayground使用openCV做影像辨識 @ iplayground
使用openCV做影像辨識 @ iplayground
 
資訊安全從連線加密開始 workshop 2020/01
資訊安全從連線加密開始 workshop 2020/01資訊安全從連線加密開始 workshop 2020/01
資訊安全從連線加密開始 workshop 2020/01
 
你的APP安全嗎
你的APP安全嗎你的APP安全嗎
你的APP安全嗎
 
非對稱加密-以橢圓曲線密碼學ECC為例
非對稱加密-以橢圓曲線密碼學ECC為例非對稱加密-以橢圓曲線密碼學ECC為例
非對稱加密-以橢圓曲線密碼學ECC為例
 
致,第三者 - 從中間人攻擊看Network Debug
致,第三者 - 從中間人攻擊看Network Debug致,第三者 - 從中間人攻擊看Network Debug
致,第三者 - 從中間人攻擊看Network Debug
 
咩星征服計劃 用 Js 征服地球Part VI
咩星征服計劃 用 Js 征服地球Part VI咩星征服計劃 用 Js 征服地球Part VI
咩星征服計劃 用 Js 征服地球Part VI
 
咩星征服計劃 用 Js 征服地球 Part III
咩星征服計劃 用 Js 征服地球 Part III咩星征服計劃 用 Js 征服地球 Part III
咩星征服計劃 用 Js 征服地球 Part III
 
咩星征服計劃 用 Js 征服地球 Part II
咩星征服計劃 用 Js 征服地球 Part II咩星征服計劃 用 Js 征服地球 Part II
咩星征服計劃 用 Js 征服地球 Part II
 
咩星征服計劃 用 Js 征服地球
咩星征服計劃 用 Js 征服地球咩星征服計劃 用 Js 征服地球
咩星征服計劃 用 Js 征服地球
 
主管不會教、自己學不會的 Google analytics
主管不會教、自己學不會的 Google analytics主管不會教、自己學不會的 Google analytics
主管不會教、自己學不會的 Google analytics
 
重新認識Facebook
重新認識Facebook重新認識Facebook
重新認識Facebook
 
那些年,我們一起做的 App
那些年,我們一起做的 App那些年,我們一起做的 App
那些年,我們一起做的 App
 

Git由超淺入超深