10 分鐘學會用 Git 下載倉庫、開發到提交的常見流程
記得在學校剛學寫程式時要做一個小組 project,那時候的開發方式現在回想起來真的蠻令人崩潰 XD:比方說 A、B、C、D 要共同開發一個 project,就讓 A 、B 、C 各自在自己的電腦寫程式,寫得差不多後再將檔案傳給負責統整的 D,D 打開 A、B 或 C 傳來的檔案後跟自己的那份檔案用「肉眼對照」,然後複製到自己的檔案,過程中時常會不知道哪一行要用誰的程式、要來回溝通確認、導致複製錯誤、開發緩慢、難以 debug 的問題。
後來到公司後用了 Git 就可以將上述場景變成:A、B、C、D 其中一個人在 GitHub 上為 project 開一個遠端倉庫,讓大家各自將倉庫 clone 到本地,創建自己的分支進行開發,開發到一個段落再個別提交到遠端倉庫,提 PR (Pull Request )請別人幫忙檢查程式,這時候 GitHub 上面會顯示改動的差異,當檢查的人與開發人員確認完沒問題後就可以點擊合併(merge), GitHub 就會自動將改動的部分合併到主分支 (master),大大省去肉眼查看差異、手動合併程式的麻煩。(看到這裡若不清楚「分支」是什麼請 點我),以下簡單介紹一下 Git 以及開發流程。
Git 簡介
Git 是由 Linux 核心開發人員 Linus Torvalds 於 2005 年開發的分散式版本控制系統(distributed revision control),方便使用者管理版本、合作開發。
分散式:為避免像集中式版本控制系統只存取最新的歷史記錄,導致若線上倉庫當機就會有無法協作的風險,Git 讓用戶備份整個倉庫到本地資料夾,若線上倉庫有問題只要任一開發人員有用 Git 備份倉庫,就可以復原倉庫、挽救程式。也便於開發人員在本地開分支獨立開發,完成後再提交到線上倉庫。
版本控制:Git 透過 .git 的隱藏子目錄(該目錄下為 Git 版本控制倉庫架構必要的檔案),管理檔案更新的歷史記錄,讓開發人員可以切換到指定的分支、指定的歷史本版。
常見的開發流程
- 將新建的倉庫或已經存在的遠端倉庫 (Remote Repository) 下載到本地
a. 訪問 github 遠端倉庫的網址,點選 clone or download,複製網址
b. 開啟終端機,clone 剛剛複製的倉庫網址
git clone <url>
c. 進入該資料夾
cd <repository name>
2. 下載下來默認是 master 分支,若不想要直接在 master 分支開發,需要切換到既有分支(branch)或新的分支
切換到既有分支:
git checkout <branch name>
切換到新分支(要加個 -b)
git checkout -b <branch name>
不確定是否切換成功,可以用下面指令查看所有本地分支
git branch
3. 開始寫程式囉~~~~
4. 寫一個段落可以檢查一下更新,刪除不必要的空白等
git diff <file name>
5. 一個檔案寫得差不多,可以將工作目錄(Working Directory)的檔案改動存到暫存區(staging area)
git add <file name>
6. 若這個功能寫得差不多,可以將暫存區的「所有檔案改動」命名並存到儲存庫(Repository),就有一筆改動的歷史紀錄
git commit -m <commit name>
7. 可以用下面的程式碼檢查一下改動的歷史紀錄
git log
8. 確認沒問題,就可以將本地的改動提交到遠端倉庫囉!
git push
若是第一次 push ,要先為本地分支設定要追蹤的指定遠端分支
git push --set-upstream github <branch name>
9. 到 github 上提 PR (Pull Request)
10. 請別人幫忙 review 通過後就可以 merge 到主分支拉!
參考資料
- Git 的歷史:https://zh.wikipedia.org/wiki/Git
- 關於版本控制:https://git-scm.com/book/zh-tw/v1/%E9%96%8B%E5%A7%8B-%E9%97%9C%E6%96%BC%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6
- 分支簡介:https://medium.com/r/url=https%3A%2F%2Fbacklog.com%2Fgit-tutorial%2Ftw%2Fstepup%2Fstepup1_1.html
- 工作目錄、暫存區和儲存庫:https://gitbook.tw/chapters/using-git/working-staging-and-repository.html