前面我們已經將 git 基礎的指令和用途都大致介紹過了,有時間的話建議看完之後再來看這篇:
我們先前提過 git 可以讓大家多人協作,共同開發專案,但要怎麼實現呢?其實多人協作就是大家共用一個 git 的專案,在 git 中被 git 控制的一個專案稱為 repository ,所以只要把這個 repository 上傳到網路上,其他人再把他下載下來就可以完成多人協作的目標了。
所以其實可以把 GitHub 想成像是 Google Drive 或是 Dropbox,只是 GitHub 是拿來放 git repository 的地方,也可以說是個讓 git repository 具現化的網站。
那要怎麼放上來呢?
在 GitHub 頁面右上角有個加號 > New repository > 填完資料後 create
這樣你就會有一新的 repository 了
但目前這個 repository 還是空的,所以我可以按照網頁上的指示把檔案加上來
git remote add origin https://github.com/ai86109/101.git
git push -u origin master
這樣就可以把 local 端的 git repository 成功上傳到 GitHub 上了!
*origin 可以自己取名字
*-u 可以省略
上傳下載
其實我們剛剛已經講過上傳了,之後如果有任何更新,在 local 端 commit 完成後,就直接git push origin master
即可。
但這樣說有點不精確,如果是 branch 的更新呢?
其實是一樣的,先在 local 端切換到 branch 的那條支線,把原本推上去的 master 改成那條 branch 的名稱就可以了,git push origin 分支敘述
可以推上去就可以拉下來
當你的協作夥伴更新 GitHub 上的檔案後,為了將我們 local 端的資料更新到最新版,我們可以利用指令將他下載下來,git pull origin master
,如果碰到衝突的時候也是要手動解決後,才能繼續執行。
上傳下載就是這麼的容易
神的左手惡魔的右手
那如果我在 GitHub 看到其他人的 repository 覺得不錯,想要抓下來該怎麼做?
誠如標題的暗示,我們可以把它 clone 起來,有兩種方式:
到你想要 clone 的 repository,右邊會有一個 clone or download
(1)直接下載到本機
或是
(2)複製這串URL > git clone 這串 URL > 就會複製一份到你電腦裡
使用直接下載的這種方式,在本機端可以做任何修改、commit,但無法 push 到你的 GitHub 上,因為你並沒有這個 repository 的權限。
如果真的想改又想放在自己的 GitHub
GitHub 右上角有 fork,會複製一份到自己的 repository,可以按照剛剛步驟複製到本機,修改過後也可以 push 回 GitHub。
但其實 fork 有一個常見的用法是,貢獻開放原始碼。
你發現有一個專案很有趣,但你覺得可以寫得更好,所以你把它 fork 過來,修改了一番之後 push 回你的 GitHub,然後點選 New pull request,也就是 create 一個 PR 給作者,作者就會在 PR 那邊看到你改的東西。
作者如果覺得這個修改很讚,可以點選 Merge pull request,再 confirm 這個 PR,就會將這個更動 merge 到原本的專案中,在開源界是很常見的貢獻程式碼的方法。
實際操作可以參考這篇:與其它開發者的互動 — 使用 Pull Request(PR)
另外,GitHub 上有 history 可以看過往 commit 的歷史,blame 可以看是誰改了哪一段。
免費網頁大空間
你知道 GitHub 除了以上這些功能外,也可以當作靜態網頁伺服器嗎?
可以直接在 GitHub 開啟網頁,就可以省下一筆租借虛擬主機的錢了,實在非常划算。使用的方式很簡單,到你的 repository 中,進入 setting 找到 GitHub Pages,將 source 選成 master branch,GitHub 便會給你一串網址,在這串網址的後面加上你要開啟的檔案名稱,進入後會看到專案檔以網頁呈現。
但 GitHub Pages 也是有些限制,例如像是因為只支援靜態網頁,所以 PHP, asp 的檔案他就不會理你了。
跟著 Flow 走
Github flow 其實就是 work flow(工作流程),在你執行專案時,按照這個步驟能讓你更有效率的開發。
建立分支
進行修改 & Commit
開啟 Pull Request
討論檢視程式碼
部署
合併 & 刪除分支
基本上就是按照上面這個專案的生命週期去開發,詳細的流程可以參考這篇:讓我們來了解 GitHub Flow 吧!
除了我們講了這麼久的 GitHub,市面上還有其他和他相似的服務,像是 Bitbucket, Gitlab,如果你不想使用 GitHub 的話,也可以改使用其他類似的服務。
下一篇我們要來演練一下,實際操作 git 時會遇到的狀況。