Mais conteúdo relacionado
Semelhante a COSCUP 2015 開源之道-Git工作坊教學簡報 (20)
COSCUP 2015 開源之道-Git工作坊教學簡報
- 3. ⺫⽬目的
• 學習 Git 的基本⽤用法
• 學習使⽤用 GitCafe 來為開源專案做貢獻
• 學習使⽤用 GitCafe 來為協作⼀一個專案
- 4. 規則
• 請各位聽眾嚴格按照 Slides 上的指⽰示⼀一步⼀一步做
• 如果在課程中遇到任何問題,可以詢問助教
• 課後如果還有問題,可以求助於 GitCafe Support
或者 Facebook 群
- 87. Atom 安裝指導
• Windows ⽤用⼾戶雙擊安裝包即可直接安裝
• Mac ⽤用⼾戶解壓安裝包並把 app 拖曳到 /
Applications 中去,然後在 Atom 主菜單中選擇
Install Shell Commands
- 101. 編輯器
• 通過 atom 命令後⾯面跟⽂文件名就可以⽤用 atom 編輯
該⽂文件
• ⼤大家也可以使⽤用⾃自⼰己慣⽤用的編輯器編輯⽂文件
- 130. git clone
• 預設情況下,git clone 會在當前⺫⽬目錄中創建⼀一個
與專案名同名的新⺫⽬目錄
• 例如我們 clone 的這個專案叫 tang,因此新⺫⽬目錄
也就叫 tang
• 所有源碼都會被下載到這個新⺫⽬目錄中
• 這樣⼀一個⺫⽬目錄就叫 Git repo
• ⺫⽬目錄和當前⺫⽬目錄的概念如果不理解請詢問助教
- 145. git status
• 這是我們學習的第⼆二條 git 命令
• 這條命令是⽤用來查看當前 Git repo 的狀態
• 仔細閱讀這條命令所顯⽰示的信息,可以幫助我們
知道接下來該做什麼
• 所以這條命令應該經常使⽤用
• 現在它告訴我們當前 Git repo 還沒有被修改過
- 148. 編輯器
• 本次教程使⽤用 Atom 作為編輯器
• 通過 atom 命令後⾯面跟⽂文件名就可以⽤用 atom 編輯
該⽂文件
• ⼤大家也可以使⽤用⾃自⼰己慣⽤用的編輯器編輯⽂文件
- 153. git status
• 正如之前所說的
• 這條命令是⽤用來查看當前 Git repo 的狀態
• 這裏它告訴我們有⼀一個叫 poem1 的⽂文件被修改過
• 仔細閱讀這條命令所顯⽰示的信息,可以幫助我們
知道接下來該做什麼
• 這裏它告訴我們該執⾏行 git add 了
- 154. git add
• 在 Git 中,所有修改過的⽂文件都需要⽤用 git add 命
令做標記
• 如果修改過的⽂文件沒有被標記,等會 git 就不會提
交這個修改
- 159. git commit
• 這條命令將當前所有被標記為提交的⽂文件提交
• 每次提交都需要⼀一段描述性的語句來解釋修改程
式碼的原因,這被稱為 commit message,通常
是英語
• ⽐比如這裡的 commit message 就可以是 "correct
author",⼤大家也可以適當發揮
• 為了⽅方便,本次教程統⼀一⽤用 git commit 的 -m 參
數來設置 commit message
- 168. git log -p
• 在預設情況下,git 總是按⾏行⽐比較
• 紅⾊色⾏行表⽰示被刪除的⾏行
• 綠⾊色⾏行表⽰示新增加的⾏行
- 175. git push
• git push 會通過網絡將你所有提交上傳到 GitCafe
上
• 由於你電腦上的 Git repo 是通過 git clone 命令從
你帳⼾戶下的 tang 項⺫⽬目中下載的,因此你的提交會
上傳回同樣的地⽅方
- 195. 任務⼀一步驟回憶
1. 打開 gitcafe.com/poetries/tang
2. 點擊“派⽣生”將項⺫⽬目複製⼀一份到⾃自⼰己帳⼾戶下
3. git clone <派⽣生後的項⺫⽬目的地址>
4. 在⾃自⼰己的電腦上改正錯誤
5. git add <所有要提交的⽂文件>
6. git commit -m "<commit message>"
7. git push
8. 在項⺫⽬目中點擊“請求合併”,並填寫內容發送給原作者等待決定
- 196. 第⼀一階段 Q & A 時間
• 提問
• 跟上節奏
• 相互交流
• 安排分組
- 197. 任務⼆二
• ⾓角⾊色扮演
• 在場聽眾兩兩分組,假設其中⼀一⼈人為 project owner,⽽而另
⼀一個⼈人充當他的 collaborator
• 兩⼈人合作完成⼀一個寫詩的專案
• Project owner 負責在 GitCafe 創建專案並設置另⼀一名同伴
為他的 collaborator
• Owner 與 collaborator 根據指⽰示交替開發同⼀一專案
• 並且解決交替開發中發⽣生⼀一切的衝突
- 225. git pull
• git pull 從伺服器上抓取所有新 push 的提交並且
更新本地的代碼
• 如果執⾏行 git pull 前本地沒有提交過任何代碼,則
顯⽰示 Fast-Forward,表⽰示更新本地代碼沒有問題
- 249. Auto-merging
• 當你執⾏行 git pull 之前提交過代碼,同時其他⼈人在
此之前也 push 過代碼,那麼 Git 會試圖將雙⽅方提
交的代碼合併,並⾃自動解決衝突
• 如果衝突解決成功,就無須⼿手⼯工解決
• 衝突解決後,需要創建⼀一個特殊提交稱之為
merge commit,合併提交本⾝身不包含⽂文件修改,
但是同時基於兩個或兩個以上的提交
- 305. 任務三
• 繼續⾓角⾊色扮演
• owner 和之前⼀一樣繼續開發這個專案
• ⽽而 collaborator 將創建⼀一個新的分⽀支,在這個分
⽀支中,collaborator 也將同時開發這個專案
• 之後 owner 將 pull 下 collaborator 的新分⽀支,並
將它合併回主分⽀支
- 309. git branch
• Git 的分⽀支功能特別易⽤用⾼高效,它實際上只是版本
樹上浮動的指針
• ⼀一個 Git repo ⾄至少有⼀一個分⽀支,預設情況下,⼀一
個新專案只有⼀一個分⽀支 master,通常也叫主分⽀支
- 333. git lg
• git lg 其實並⾮非⼀一條 git 命令,它其實是⼀一條複雜
的 git log 命令的別名
• git 的別名定義在最初提供的 ~/.gitconfig 中
• 這條命令告訴我們 cowork,也就是當前分⽀支,指
向了 fix poem3 這個 commit,⽽而主分⽀支還停留在
merge conflict 那邊
- 346. 它的語意是
• 將本地 Git repo 的 cowork 分⽀支 push 到遠端
origin 伺服器的 cowork 分⽀支上
• 如果伺服器上沒有這⼀一分⽀支就創建
• 並且設置當前 cowork 分⽀支對應遠端的 cowork 分
⽀支
- 351. git remote
• ⼀一個 Git repo 可以有⼀一個或多個遠端伺服器上的
Git repo
• 每個遠端伺服器上的 Git repo 都有⼀一個名稱,預設
名稱是 origin
• 我們的 Git repo 是通過 git clone 命令從 GitCafe
伺服器下載的,因此預設的 origin 伺服器就是這個
repo 在 GitCafe 上的地址
• 可以通過 git remote -v 看到
- 353. 遠端分⽀支
• 即遠端 Git repo 上的分⽀支
• 本地的 Git repo 有分⽀支,遠端 Git repo 上⾃自然也要
有分⽀支與本地分⽀支對應
• 遠端分⽀支⼀一律以「遠端 repo 名稱」/「分⽀支名」命
名
• 你不能直接切換到遠端分⽀支上,也不能直接對遠端
分⽀支進⾏行修改
注:這是⼀一個簡化模型,⽤用來簡化我們的教學
- 380. git log A..B
• 注意 A 和 B 當中⽤用兩個點連接
• 列出 A 和 B 兩個分⽀支之間的區別
• 更精確的說,列出所有存在於 B 分⽀支卻不存在於
A 分⽀支的提交
- 382. owner: git diff master..origin/cowork
紅⾊色的⾏行表⽰示 master 分⽀支有⽽而 origin/cowork 分⽀支沒有的內容
綠⾊色的⾏行表⽰示 origin/cowork 分⽀支有⽽而 master 分⽀支沒有的內容
- 383. git diff A..B
• git diff 對⽐比兩個分⽀支之間源碼的區別
• 紅⾊色的⾏行表⽰示 A 分⽀支有⽽而 B 分⽀支沒有的內容
• 綠⾊色的⾏行表⽰示 B 分⽀支有⽽而 A 分⽀支沒有的內容
• 從返回的結果可知,遠端的 cowork 分⽀支與
master 分⽀支相⽐比,不僅改了《⼭山居秋暝》,還增
加了《相思》,但沒有《早發⽩白帝城》
- 396. ⽤用⼾戶名/密碼 認證
• 每次 git push 和 git pull 都要輸⼊入⽤用⼾戶名/密碼
• 很⿇麻煩
• 怎麼才能做到不⽤用⼀一直輸⼊入密碼
- 398. oh-my-zsh
• 這裏對 Mac ⽤用⼾戶重點推薦下 zsh + oh-my-zsh
• 更友好的⾃自動補全
• ⾃自動提⽰示當前分⽀支
• ⾃自動提⽰示當前 Git repo 有沒有程式碼還沒有提交
- 407. Q&A
如果你對 Git 或者 GitCafe 的⽤用法有任何問題
或者希望獲取 Git 相關的更多詳細資料
Email: support@gitcafe.com
Facebook:開源之道-Git Workshop