git由超淺入超深
TRANSCRIPT
![Page 1: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/1.jpg)
跟著⽺羊⼩小咩⼀一起爽
![Page 2: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/2.jpg)
Blog : lamb-mei.com
⽺羊⼩小咩 Lamb MeiE-mail : [email protected]
FB : https://www.facebook.com/lamb.mei
GitHub:https://github.com/lamb-mei/
![Page 3: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/3.jpg)
爽 咩
世人的誤解
![Page 4: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/4.jpg)
我是
圖⽚片來源 http://www.dep.taipei.gov.tw/site/tcg/public/MMO/dep_MMO/0129.jpg
![Page 5: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/5.jpg)
今天的主題
圖⽚片來源 http://newsget-cache.stor.sinaapp.com/19e004423dfc63cc62576f113e68af04.jpg
![Page 6: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/6.jpg)
![Page 7: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/7.jpg)
圖⽚片來源:http://img04.tooopen.com/images/20121024/tooopen_201210241527566827.jpg http://s1.t.itc.cn/mblog/pic/20125_18_9/f_28548972594774707.gif
![Page 8: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/8.jpg)
為什麼要使⽤用 GIT
![Page 9: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/9.jpg)
為什麼要使⽤用 Git分散式
速度快
⼤大神都在⽤用
⼤大家都在⽤用
不⽤用很落伍
公司強迫我要⽤用
開分⽀支(branch)很容易
⼤大部份操作本地端可完成
不需中央伺服器版本庫毀損的⾵風險較低
超潮der
![Page 10: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/10.jpg)
對沒⽤用過的⼈人來說
圖⽚片來源 http://s279.photobucket.com/user/sherlock1031/media/Dectective%20Dissicusion%20Group/Galileo106.jpg.html
![Page 11: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/11.jpg)
對沒⽤用過的⼈人來說
圖⽚片來源 http://s279.photobucket.com/user/sherlock1031/media/Dectective%20Dissicusion%20Group/Galileo106.jpg.html
對只會 commit / push / pull 的⼈人也是
![Page 12: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/12.jpg)
/ 20512
使⽤用 GIT 要解決的事情
![Page 13: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/13.jpg)
/ 20513
使⽤用 GIT 要解決的事情
![Page 14: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/14.jpg)
/ 20514
使⽤用 GIT 要解決的事情
檔案可能還好處理但若分別是資料夾呢?
![Page 15: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/15.jpg)
/ 20515
使⽤用 GIT 要解決的事情
圖⽚片來源 http://backlogtool.com/git-guide/tw/img/post/intro/capture_intro1_1_2.png
![Page 16: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/16.jpg)
/ 20516
使⽤用 GIT 要解決的事情
其實還有很多...圖⽚片來源 http://backlogtool.com/git-guide/tw/img/post/intro/capture_intro1_1_2.png
![Page 17: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/17.jpg)
/ 20517
圖⽚片來源 https://lh4.googleusercontent.com/-vvzM1j0tqGA/UPffE081MHI/AAAAAAAAQ5c/C6oSHikiCdY/s990/P1130764.jpg
最後只要知道 GIT 是
![Page 18: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/18.jpg)
/ 20518
GIT Software
![Page 19: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/19.jpg)
/ 205
Windows 必裝軟體19
http://msysgit.github.io/
msysgit
http://git-scm.com/downloads/win
git-scm
![Page 20: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/20.jpg)
/ 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
⼿手動安裝
![Page 21: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/21.jpg)
/ 20521
若你是Coding 魔⼈人 千萬不能裝 GUI 軟體
圖⽚片來源 http://screen-wallpapers.com/wallpapers/4743/bigpreview_Coding.jpg
![Page 22: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/22.jpg)
/ 20522
圖⽚片來源 http://screen-wallpapers.com/wallpapers/4743/bigpreview_Coding.jpg
⼀一定要⽤用 terminal 不然不夠帥
![Page 23: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/23.jpg)
/ 20523
圖⽚片來源 http://ext.pimg.tw/yayachen0326/4ab33c5f3fe73.jpg
若你是...
![Page 24: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/24.jpg)
/ 205
Git GUI 軟體24
windows onlyhttps://code.google.com/p/tortoisegit/
![Page 25: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/25.jpg)
/ 205
Git GUI 軟體25
windows / OS Xhttp://www.sourcetreeapp.com/
![Page 26: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/26.jpg)
/ 20526
GIT 這個玩意
![Page 27: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/27.jpg)
/ 20527
基本觀念⾮非常重要!
協同作業 必須⼤大家都要有相同的觀念
![Page 28: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/28.jpg)
/ 20528
腦部神經聯結⽰示意圖
協同作業,必須⼤大家都要有相同的觀念
圖⽚片來源 http://www.naipo.com/Portals/1/web_tw/images/pic089-01-a01.jpg
![Page 29: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/29.jpg)
儲存庫 ( Repository )
![Page 30: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/30.jpg)
/ 20530
圖⽚片來源:http://backlogtool.com/git-guide/tw/img/post/intro/capture_intro1_2_1.png
儲存庫哪來的• 本地的儲存庫 (local repository)
![Page 31: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/31.jpg)
/ 20531
圖⽚片來源:http://backlogtool.com/git-guide/tw/img/post/intro/capture_intro1_2_2.png
儲存庫哪來的• 遠端的儲存庫 (remote repository)
GitHub 或其他平台建⽴立的 repo
![Page 32: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/32.jpg)
儲存庫 ( Repository )
git init
git init --bare
git clone <REPOSITORY_URI>
![Page 33: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/33.jpg)
/ 20533
git init --bare Server ⽤用儲存庫資料夾 命名規則
<資料夾名稱>.git
https://github.com/github/gitignore.git
儲存庫 ( Repository )
![Page 34: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/34.jpg)
Git 常⽤用指令
![Page 35: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/35.jpg)
/ 20535
Git 常⽤用指令
git add新增檔案
git add .git add <file path>
git add *.jsgit add docs/*
![Page 36: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/36.jpg)
/ 20536
Git 常⽤用指令
git status查詢狀態
git status -sgit status -b
![Page 37: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/37.jpg)
/ 20537
Git 常⽤用指令
git commit
提交變更 / 建⽴立版本
git commit -m ‘訊息⽂文字‘
![Page 38: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/38.jpg)
/ 20538
Git 常⽤用指令
git log
查詢版本
git log -2
![Page 39: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/39.jpg)
/ 20539
Git 常⽤用指令對很多⼈人來說從這開始 就不是常⽤用指令了
![Page 40: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/40.jpg)
/ 20540
Git 常⽤用指令
git rm
刪除檔案
git rm 1.txt
1. 刪除版本庫索引的 ‘1.txt' 這個檔案 2. 刪除⼯工作⺫⽬目錄下的 '1.txt' 這個實體檔案
![Page 41: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/41.jpg)
/ 20541
Git 常⽤用指令
git mv
更換檔案
git mv 1.txt A.txt
![Page 42: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/42.jpg)
/ 20542
Git 常⽤用指令
git reset
重設⼯工作⺫⽬目錄/索引狀態
git reset --hard
只有重設索引
還原索引跟⼯工作⺫⽬目錄
注意 reset 是針對全部⼯工作區(這只是為了好記,有別種reset ⽤用法)
![Page 43: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/43.jpg)
/ 20543
Git 常⽤用指令
git checkout master -- 1.txt
取出指定的 <物件>
git checkout master 1.txt
e.g 還原其中⼀一個被改壞的檔案
git checkout
![Page 44: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/44.jpg)
儲存庫 ? ⼯工作⺫⽬目錄?索引?
⼯工作⺫⽬目錄
![Page 45: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/45.jpg)
/ 20545
儲存庫(repo)
儲存庫 ? ⼯工作⺫⽬目錄?索引?
![Page 46: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/46.jpg)
/ 20546
索引
儲存庫 ? ⼯工作⺫⽬目錄?索引?
![Page 47: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/47.jpg)
/ 20547
圖⽚片來源:http://backlogtool.com/git-guide/tw/img/post/intro/capture_intro1_4_1.png
儲存庫 ? ⼯工作⺫⽬目錄?索引?
![Page 48: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/48.jpg)
Git 原理/結構
圖⽚片來源 :http://himg2.huanqiu.com/saronscms/uploadfile/2014/0403/20140403050245784.jpg
跟⼤大藍洞⼀一樣深 XD
Git 原理/結構
![Page 49: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/49.jpg)
/ 20549
Git 物件類型
blob 物件 tree 物件
commit 物件 tag 物件
所有的物件都會以 zlib 演算法進⾏行壓縮
![Page 50: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/50.jpg)
/ 20550
Git 物件類型blob 物件
某個檔案的 "內容",且只有內容⽽而已,當你執⾏行 git add 指令的同時,這些新增檔案的內容就會⽴立刻被寫⼊入成為 blob 物件,檔名則是物件內容的雜湊運算結果,沒有任何其他其他資訊,像是檔案時間、原本的檔名或檔案的其他資訊,都會儲存在其他類型的物件裡 (也就是 tree 物件)
![Page 51: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/51.jpg)
/ 20551
Git 物件類型tree 物件
儲存特定⺫⽬目錄下的所有資訊,包含該⺫⽬目錄下的檔名、對應的 blob 物件名稱、檔案連結(symbolic link) 或其他 tree 物件等等。由於 tree 物件可以包含其他 tree 物件,所以tree 物件其實就跟「資料夾」沒兩樣。簡單來說,tree 物件這就是在特
定版本下某個資料夾的快照(Snapshot)
![Page 52: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/52.jpg)
/ 20552
Git 物件類型commit 物件
⽤用來記錄有那些 tree 物件包含在版本中,⼀一個 commit 物件代表著 Git 的⼀一次提交,記錄著特定提交版本有哪些 tree 物件、以及版本提交的時間、紀錄訊息等等,通常還會記錄上⼀一層的
commit 物件名稱 (只有第⼀一次 commit 的版本沒有上層 commit 物件名稱
![Page 53: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/53.jpg)
/ 20553
Git 物件關聯
圖⽚片來源 :http://journal.code4lib.org/media/issue21/anderson/images/large/fig-09-git-revisions.png
![Page 54: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/54.jpg)
/ 20554
Git 物件命名規則每⼀一個「物件」,都是以「檔案內容」進⾏行 SHA1 雜湊運算出⼀一個 hash 值,並⽤用這個 hash 值當作物件的名稱 (檔名)。
Git 會先拿前兩個字元(97)當作⺫⽬目錄 然後把剩下的 hash 值當成檔名 (3749075c53236cfc411f62918efc3ce3a31380) 這些物件的實體⺫⽬目錄與檔案也都會放在 .git\objects ⺫⽬目錄下
![Page 55: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/55.jpg)
/ 20555
查詢 Hash 編碼git hash-object
$git hash-object 1.txt d00491fd7e5bb6fa28c517a0bb32b8b506539d4d
![Page 56: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/56.jpg)
/ 20556
查詢 Git 物件git cat-file -p
![Page 57: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/57.jpg)
/ 20557
查詢 Git 物件git cat-file -p
![Page 58: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/58.jpg)
/ 20558
查詢 Git 物件git cat-file -p
![Page 59: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/59.jpg)
/ 20559
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0301-tn.png
![Page 60: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/60.jpg)
/ 20560
Git 物件關聯
圖⽚片來源 : http://git-scm.com/figures/18333fig0302-tn.png
![Page 61: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/61.jpg)
/ 20561
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0303-tn.png
![Page 62: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/62.jpg)
/ 20562
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0304-tn.png
![Page 63: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/63.jpg)
/ 20563
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0305-tn.png
HEAD 是⼀一直保持著最新版本的指標
![Page 64: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/64.jpg)
/ 20564
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0306-tn.png
切換到 Testing 分⽀支的狀態
![Page 65: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/65.jpg)
/ 20565
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0307-tn.png
![Page 66: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/66.jpg)
/ 20566
Git 物件關聯
圖⽚片來源 :http://git-scm.com/figures/18333fig0309-tn.png
![Page 67: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/67.jpg)
圖⽚片來源 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)
![Page 68: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/68.jpg)
/ 20568
分⽀支 (branch)
git branch <branch name>建⽴立分⽀支
![Page 69: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/69.jpg)
/ 20569
分⽀支 (branch)
git checkout <branch name>切換分⽀支
![Page 70: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/70.jpg)
/ 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
![Page 71: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/71.jpg)
/ 20571
Git 物件的參照名稱
參照名稱 (ref) 簡單來說就是 Git 物件的⼀一個「指標」
是相對於「絕對名稱」的另⼀一個「好記名稱」 ⽤用⼀一個預先定義或⾃自⾏行定義的名稱來代表某⼀一個 Git 物件。
HEAD (代表最新版本) 分⽀支標籤名稱 這些都是「參照名稱」
![Page 72: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/72.jpg)
/ 20572
在⼤大多數的情況下,「參照名稱」通常都會指向⼀一個 commit 物件,但並⾮非必要,你也可以指向其他 Git 物件類型,像是 blob 物件、tree 物件、tag 物件等等
Git 物件的參照名稱
![Page 73: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/73.jpg)
/ 20573
.git/refs/ ⺫⽬目錄
• 本地分⽀支: .git/refs/heads/
• 遠端分⽀支: .git/refs/remotes/
• 標 籤: .git/refs/tags/
![Page 74: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/74.jpg)
/ 20574
* HEAD永遠會指向「⼯工作⺫⽬目錄」中所設定的「分⽀支」當中的「最新版」。
* ORIG_HEAD就是 HEAD 這個 commit 物件的「前⼀一版」,經常⽤用來復原上⼀一次的版本變更。
* FETCH_HEAD使⽤用遠端儲存庫時,可能會使⽤用 git fetch 指令取回所有遠端儲存庫的物件。這個 FETCH_HEAD 符號參考則會記錄遠端儲存庫中每個分⽀支的 HEAD (最新版) 的「絕對名稱」。
* MERGE_HEAD當你執⾏行合併⼯工作時 (關於合併的議題會在⽇日後的⽂文章中會提到),「合併來源」的 commit 物件絕對名稱會被記錄在 MERGE_HEAD 這個符號參照中。
符號參照名稱 (symref)符號參照名稱 (symref) 其實也是參照名稱 (ref) 的⼀一種,只是內容不同⽽而已。我們從下圖應可看出其內容的差異,「符號參照」會指向另⼀一個「參照名稱」
並且內容以 ref: 開頭
![Page 75: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/75.jpg)
/ 20575
Git 參照名稱⼜又有區分「⼀一般參照」與「符號參照」,兩者的⽤用途⼀一模⼀一樣,只在於內容不太⼀一樣。 「符號參照」會指向另⼀一個「⼀一般參照」 「⼀一般參照」則是指向⼀一個 Git 物件的「絕對名稱」。
「參照名稱(ref)」 簡單來說就是 Git 物件的⼀一個「指標」,⽤用來指向特定 Git 物件,所以你可以把「參照名稱」想像成 Git 物件絕對名稱的別名 (Alias),⽤用來幫助記憶。在 Git 裡,有許多機制可以幫你控管專案,例如「分⽀支」、「標籤」等等,這些機制⾻骨
⼦子裡其實就是靠「參照」完成的。
參照⼩小節
![Page 76: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/76.jpg)
圖⽚片來源 : 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
![Page 77: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/77.jpg)
圖⽚片來源 :http://www.fangdigital.com/wp-content/uploads/2013/04/tags.jpg
Git 標籤 (tag)
• 輕量標籤 (lightweight tag)
• 標⽰示標籤 (annotated tag)
![Page 78: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/78.jpg)
/ 20578
Git 標籤 (tag)
• 輕量標籤 (lightweight tag)
• 標⽰示標籤 (annotated tag)
這種「標籤」才是 Git 儲存庫中「永久的物件」
![Page 79: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/79.jpg)
/ 20579
Git 暫存(stash)
• git stash
會將所有已列⼊入追蹤(tracked)的檔案建⽴立暫存版
• git stash -u會包括所有已追蹤或未追蹤的檔案,全部都建⽴立成暫存版
![Page 80: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/80.jpg)
圖⽚片來源:http://bbs.mychat.to/attach/Fid_175/175_837026.jpg
追蹤變更軌跡
git reflog
![Page 81: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/81.jpg)
/ 20581
追蹤變更軌跡 (儲存位置).git/logs/
![Page 82: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/82.jpg)
/ 20582
追蹤變更軌跡 (查詢後復原)
git reflog
HEAD@{0},永遠代表⺫⽬目前分⽀支的「最新版」
![Page 83: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/83.jpg)
/ 20583
git reset HEAD@{1} --hard
追蹤變更軌跡 (查詢後復原)
git reflog
「取消」最近⼀一次的版本紀錄
HEAD@{0},永遠代表⺫⽬目前分⽀支的「最新版」
![Page 84: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/84.jpg)
/ 20584
追蹤變更軌跡(記錄時機)
* commit * checkout * pull * push * merge * reset * clone * branch * rebase * stash
![Page 85: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/85.jpg)
Git 忽略清單.gitignore
![Page 86: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/86.jpg)
/ 20586
Git 忽略清單 .gitignore
![Page 87: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/87.jpg)
Git 合併觀念git merge
![Page 88: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/88.jpg)
/ 20588
Git 合併觀念 (merge)
![Page 89: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/89.jpg)
/ 20589
Git 合併觀念 (merge)
fast-forward(快轉)合併
![Page 90: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/90.jpg)
/ 20590
Git 合併觀念 (merge)
![Page 91: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/91.jpg)
/ 20591
Git 合併觀念 (merge)
合併會多⼀一個 commit
![Page 92: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/92.jpg)
/ 20592
圖⽚片來源 :http://git-scm.com/figures/18333fig0310-tn.png
Git 合併 (merge)
![Page 93: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/93.jpg)
/ 20593
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0311-tn.png
![Page 94: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/94.jpg)
/ 20594
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0311-tn.png
![Page 95: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/95.jpg)
/ 20595
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0313-tn.png
![Page 96: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/96.jpg)
/ 20596
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0314-tn.png
![Page 97: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/97.jpg)
/ 20597
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0315-tn.png
![Page 98: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/98.jpg)
/ 20598
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0316-tn.png
![Page 99: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/99.jpg)
/ 20599
Git 合併 (merge)
圖⽚片來源 :http://git-scm.com/figures/18333fig0316-tn.png
![Page 100: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/100.jpg)
/ 205100
Git 合併觀念 (merge)
1. 合併之前,先看清楚⾃自⼰己在哪個分⽀支 2. 合併之前,請確保⼯工作⺫⽬目錄是乾淨的 3. 合併時請⽤用 git merge [另⼀一個分⽀支] 來將另⼀一個分⽀支的變更合併回來 4. 合併成功後,確認沒有問題!
![Page 101: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/101.jpg)
/ 205101
Git 合併衝突 (merge)
![Page 102: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/102.jpg)
/ 205102
Git 合併衝突 (merge)
⽤用壞了怎麼辦
![Page 103: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/103.jpg)
/ 205103
Git 合併衝突 (merge)
⽤用壞了怎麼辦
git reset HEAD@{1} --hard
還原就好了
![Page 104: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/104.jpg)
/ 205104
Git 合併衝突 (merge)
⽤用壞了怎麼辦
git reset --hard ORIG_HEAD
這樣也可以!
![Page 105: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/105.jpg)
Git 合併git rebase
![Page 106: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/106.jpg)
/ 205106
Git 合併git rebase
![Page 107: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/107.jpg)
/ 205107
Git 合併
git rebase
![Page 108: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/108.jpg)
/ 205108
Git 合併從 bugfix “rebase” 到 master
![Page 109: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/109.jpg)
/ 205109
Git 合併 rebase
圖⽚片來源 :http://git-scm.com/figures/18333fig0331-tn.png
![Page 110: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/110.jpg)
所以在 client 分⽀支下命令git rebase master (會變成下圖
![Page 111: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/111.jpg)
若在 mastergit rebase client (會變成下圖
![Page 112: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/112.jpg)
這張圖是
![Page 113: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/113.jpg)
git rebase --onto master server client
![Page 114: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/114.jpg)
git rebase --onto master server client
“取出 client 分⽀支,找出 client 分⽀支和 server 分⽀支的共同祖先之後的變化,然後把它們在 master 上重演⼀一遍”。
(譯注:雖然 client 裡的 C8, C9 在 C3 之後,但這僅表明時間上的先後,⽽而⾮非在 C3 修改的基礎上進⼀一步改動,因為 server 和 client 這兩個分⽀支對應的代碼應該是兩套檔,雖然這麼說不是很嚴格,但應理解為在 C3 時間
點之後,對另外的檔所做的 C8,C9 修改,放到主幹重演。)
![Page 115: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/115.jpg)
git rebase --onto master server client
這需要⽤用 command 才弄得出來,所以做個了解就好
我也很少⽤用 onto 這個命令
![Page 116: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/116.jpg)
/ 205116
Git 合併 rebase
圖⽚片來源 :http://git-scm.com/figures/18333fig0333-tn.png
![Page 117: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/117.jpg)
/ 205117
Git 合併 rebase
圖⽚片來源 :http://git-scm.com/figures/18333fig0334-tn.png
![Page 118: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/118.jpg)
/ 205118
現在你想法⼀一定是
![Page 119: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/119.jpg)
/ 205119
圖⽚片來源 :http://mypaper.pchome.com.tw/show/article/kkk670670/A1276118288
![Page 120: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/120.jpg)
Git 修改 commit
![Page 121: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/121.jpg)
/ 205121
⼈人⾮非聖賢,孰能無過
![Page 122: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/122.jpg)
/ 205122
Git 修改 commit
git commit --amend
![Page 123: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/123.jpg)
/ 205123
Git 修改 commit (amend)
漏掉應該要⼀一起commit 檔案
![Page 124: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/124.jpg)
/ 205124
糟糕我寫錯mesage
Git 修改 commit (amend)
![Page 125: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/125.jpg)
/ 205125
Git 重置 commit
git reset
![Page 126: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/126.jpg)
/ 205126
Git 重置 commit
git reset --hard "HEAD^"刪除最後的版本
![Page 127: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/127.jpg)
/ 205127
Git 重置 commit
git reset --hard ORIG_HEAD復原上次的動作
![Page 128: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/128.jpg)
/ 205128
Git 重置 commit
git reset --soft "HEAD^"刪除最後的版本,但留下修改內容
![Page 129: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/129.jpg)
/ 205129
Git 重置 commit
git reset --soft "HEAD^"
git reset --mixed "HEAD^"git reset "HEAD^"
![Page 130: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/130.jpg)
/ 205130
Git 重置 commit
git reset --soft "HEAD^"
git reset --mixed "HEAD^"git reset "HEAD^"
檔案會是 stage狀態
![Page 131: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/131.jpg)
/ 205131
Git 重置 commit
git reset --soft "HEAD^"
git reset --mixed "HEAD^"git reset "HEAD^"
檔案會是 unstage狀態
![Page 132: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/132.jpg)
/ 205132
Git 還原 commit
git revert [commit_id]
![Page 133: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/133.jpg)
/ 205133
Git 還原 commit
git revert [commit_id]
注意:索引必須乾淨狀態
![Page 134: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/134.jpg)
/ 205134
Git 修改 commit
git cherry-pick
圖⽚片來源 : https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTSkS0N71OS1U4LRv9xx79ek2-rHXowkqWKvDt65_h-oWsP4chNzg
![Page 135: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/135.jpg)
/ 205135
Git 修改 commitgit cherry-pick
圖⽚片來源 : https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTSkS0N71OS1U4LRv9xx79ek2-rHXowkqWKvDt65_h-oWsP4chNzg
![Page 136: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/136.jpg)
/ 205136
Git 修改 commitgit cherry-pick
![Page 137: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/137.jpg)
/ 205137
Git 修改 commit
git rebase -i乾坤⼤大挪移
圖⽚片來源 :http://www.wzrlmy.com/A//upload/product//NewWebPic/BigPic/201005281209289062.jpg
![Page 138: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/138.jpg)
/ 205138
Git 修改 commit
git rebase -i乾坤⼤大挪移
注意:索引必須乾淨狀態
![Page 139: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/139.jpg)
/ 205139
Git 修改 commit (rebase)
你可以...
![Page 140: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/140.jpg)
/ 205140
Git 修改 commit (rebase)
1. 調換 commit 的順序
![Page 141: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/141.jpg)
/ 205141
Git 修改 commit (rebase)
1. 調換 commit 的順序 2. 修改 commit 的訊息
![Page 142: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/142.jpg)
/ 205142
Git 修改 commit (rebase)
1. 調換 commit 的順序 2. 修改 commit 的訊息 3. 插⼊入⼀一個 commit
![Page 143: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/143.jpg)
/ 205143
Git 修改 commit (rebase)
1. 調換 commit 的順序 2. 修改 commit 的訊息 3. 插⼊入⼀一個 commit 4. 編輯⼀一個 commit
![Page 144: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/144.jpg)
/ 205144
Git 修改 commit (rebase)
1. 調換 commit 的順序 2. 修改 commit 的訊息 3. 插⼊入⼀一個 commit 4. 編輯⼀一個 commit 5. 拆解⼀一個 commit
![Page 145: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/145.jpg)
/ 205145
Git 修改 commit (rebase)
1. 調換 commit 的順序 2. 修改 commit 的訊息 3. 插⼊入⼀一個 commit 4. 編輯⼀一個 commit 5. 拆解⼀一個 commit 6. 壓縮⼀一個 commit,且保留訊息紀錄
![Page 146: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/146.jpg)
/ 205146
Git 修改 commit (rebase)
1. 調換 commit 的順序 2. 修改 commit 的訊息 3. 插⼊入⼀一個 commit 4. 編輯⼀一個 commit 5. 拆解⼀一個 commit 6. 壓縮⼀一個 commit,且保留訊息紀錄 7. 壓縮⼀一個 commit,但丟棄版本紀錄
![Page 147: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/147.jpg)
/ 205147
Git 修改 commit (rebase)
1. 調換 commit 的順序 2. 修改 commit 的訊息 3. 插⼊入⼀一個 commit 4. 編輯⼀一個 commit 5. 拆解⼀一個 commit 6. 壓縮⼀一個 commit,且保留訊息紀錄 7. 壓縮⼀一個 commit,但丟棄版本紀錄 8. 刪除⼀一個 commit
![Page 148: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/148.jpg)
Git 遠端版本庫
![Page 149: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/149.jpg)
/ 205149
Git 遠端版本庫
傳輸⽅方式
http:// https://git://ssh://
![Page 150: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/150.jpg)
/ 205150
Git 遠端版本庫
git push
![Page 151: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/151.jpg)
/ 205151
Git 遠端版本庫
git pull
git fetch
![Page 152: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/152.jpg)
/ 205152
Git 遠端版本庫
git pull
git fetch
fetch
merge+
![Page 153: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/153.jpg)
/ 205153
來⾃自github的Scott Chacon OSDC Git Session
來源 http://contribgit.herokuapp.com/#1
![Page 154: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/154.jpg)
/ 205154
![Page 155: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/155.jpg)
/ 205155
![Page 156: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/156.jpg)
/ 205156
![Page 157: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/157.jpg)
/ 205157
![Page 158: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/158.jpg)
/ 205158
![Page 159: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/159.jpg)
/ 205159
![Page 160: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/160.jpg)
/ 205160
![Page 161: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/161.jpg)
/ 205161
![Page 162: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/162.jpg)
/ 205162
![Page 163: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/163.jpg)
/ 205163
![Page 164: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/164.jpg)
/ 205164
![Page 165: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/165.jpg)
/ 205165
![Page 166: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/166.jpg)
/ 205166
![Page 167: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/167.jpg)
/ 205167
![Page 168: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/168.jpg)
/ 205168
![Page 169: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/169.jpg)
/ 205169
![Page 170: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/170.jpg)
/ 205170
![Page 171: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/171.jpg)
/ 205171
![Page 172: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/172.jpg)
/ 205172
![Page 173: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/173.jpg)
/ 205173
![Page 174: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/174.jpg)
/ 205174
![Page 175: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/175.jpg)
/ 205175
![Page 176: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/176.jpg)
/ 205176
![Page 177: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/177.jpg)
/ 205177
![Page 178: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/178.jpg)
/ 205178
![Page 179: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/179.jpg)
/ 205179
![Page 180: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/180.jpg)
/ 205180
![Page 181: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/181.jpg)
/ 205181
![Page 182: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/182.jpg)
/ 205182
![Page 183: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/183.jpg)
/ 205183
![Page 184: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/184.jpg)
/ 205184
![Page 185: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/185.jpg)
/ 205185
![Page 186: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/186.jpg)
Git 遠端觀念
![Page 187: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/187.jpg)
/ 205187
push 了就回不去了
圖⽚片來源:http://cdn0.t17.techbang.com.tw/system/attached_images/2012/12/76729/show/feba4c111f349866c5e087de04526d98.jpg?1355366400
Git 遠端觀念
![Page 188: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/188.jpg)
/ 205188
push 後的commit 不能...
Git 遠端觀念
![Page 189: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/189.jpg)
/ 205189
push 後的commit 不能...
Git 遠端觀念
resetrebaseament
…
![Page 190: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/190.jpg)
/ 205190
push 後的commit 只能...
Git 遠端觀念
revert
![Page 191: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/191.jpg)
/ 205191
Git 掛勾 (Hook)
![Page 192: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/192.jpg)
Git flow
![Page 193: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/193.jpg)
/ 205193
Git flow
![Page 194: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/194.jpg)
/ 205194
Git flow
git flow feature start feature_xxxxx (以此類推 git flow release 和 git flow hotfix)
git flow feature finish feature_xxxxx
![Page 195: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/195.jpg)
其他的....
![Page 196: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/196.jpg)
/ 205196
Blame
subtree
submodules
bisect
![Page 197: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/197.jpg)
/ 205197
下次有空再說....
圖⽚片來源 :http://pic.pimg.tw/austinleefuture/1407855278-2999893000.jpg
![Page 198: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/198.jpg)
最後
![Page 199: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/199.jpg)
最後最後
![Page 200: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/200.jpg)
最後最後最後
![Page 201: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/201.jpg)
很重要,所以說三次
![Page 202: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/202.jpg)
學然後知不⾜足,教然後知困,教學相⻑⾧長
圖⽚片來源 :http://www.worldofmastermind.com/wp-content/uploads/2013/10/Confucious-2a.jpg
![Page 203: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/203.jpg)
/ 205203
學然後知不⾜足,教然後知困。 知不⾜足,然後能⾃自反也知困,然後⾃自強也 故⽈曰,教學相⻑⾧長也
• “⾃自反”,意思是反過來要求⾃自⼰己。 • “困”,不通,理解不清。 • “⾃自強”,意思是⾃自⼰己努⼒力。“強”,竭⼒力,盡⼒力。 • “教學相⻑⾧長”,意思是教和學互相促進,教別⼈人,也能增⻑⾧長⾃自⼰己的學問
學習才能知道⾃自⼰己知識的缺乏教了別⼈人之後才能知道⾃自⼰己對知識還理解不清。認識到了⾃自⼰己知識的不⾜足,然後才能反過來要求⾃自⼰己;知道了⾃自⼰己對有些知識還理解不通,然後才能⾃自⼰己努⼒力。
![Page 204: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/204.jpg)
參考⽂文獻• The Will Will Web 保哥 Git 教學
• iHower Git 版本控制系統
• 猴⼦子都能懂的 Git 指南
• Git官⽅方教學
• Casear Chu Git 教學
• Scott Chacon Git Session on OSDC
![Page 205: Git由超淺入超深](https://reader030.vdocuments.mx/reader030/viewer/2022032421/55a81c621a28ab072e8b483d/html5/thumbnails/205.jpg)
Q & A
羊小咩 2015 / 01 / 29
Thank you !