GitHub 設定指引
(以下內容由 許元杰 貢獻)
建立 GitHub 帳號
- Github 是個 Git 的托管網站,可讓開發者將自己的專案儲存到網路上,與全世界分享,我們可方便的使用 Git 在本機進行專案管理。
- GitHub 同時提供付費帳號和為了開放原始碼程式提供的免費帳號。根據 2009 年的 Git 使用者調查,GitHub 是最熱門的 Git 分享網站。它提供了如 feeds、followers 和顯示開發者們如何在他們版本庫上的版本工作的圖表。 GitHub 也提供類似剪貼簿的功能,issue tracker 和網頁使用 Wiki,通過一個 git repository 即可對這些頁面進行編輯。
建立新 repository
在和本機的 repository 連動之前,先給自己的專案取個名字吧,這會是你專案之後的名字,也會是其他人搜尋你專案的時候的關鍵字,好的專案一定有一個好的名字。
上圖是筆者新增一個叫做 “Embedded-System-Class” 的 repository,以及 Fork 課程所用的 embedded2015/arm-lecture 這個 repository。
綁訂機器的 SSH key
因為要讓 Github 知道是我們這台電腦上傳的專案,所以我們要和 Github 之間建立一種默契,這個默契就是使用 ssh 通訊協定時的 public key,我們給 Github 我們本機的 ssh public key ,告訴 Github 拿著這個 key 的電腦才是這個帳號的使用者, 如此一來就只能由這台電腦進行管理,才不會造成其他人來我們的帳號亂上傳東西的窘境。
首先,點選右上角的工具按鈕,進入帳號設定頁面,在頁面的左下角點選 “SSH keys”
SSH key 產生的方法
($
開頭的表示法,就是說明在 Linux 終端機輸入指令)
- 輸入指令
$ ssh-keygen -t rsa -C "your_email@example.com"
後面那是自己申請 Github 所使用的信箱。之後 ssh 程式會要求輸入 passphrase:
- 直接按下 Enter 鍵即可。
- 輸入一個 passphrase,如不想輸入直接按下 Enter 鍵即可。
- 此時顯示的是你 SSH Key 的 fingerprint
- 將剛剛產生的 key 加入
ssh-agent
中
如果你已安裝了 Windows 版的 Github ,你可以在不使用 SSH Key 的狀況下,執行 clone 等操作。Windows版本同時支援許多 Git bash tool,可運行眾多的 Git 指令。
- 如果你已安裝 Git bash,輸入以下指令以啟動
ssh-agent
- 如果你使用的是 msysgit 等軟體,則輸入以下指令
- 將剛剛產生的 key 加入
ssh-agent
中
- 到 Github 網站加入你的 SSH key
將 SSH key 複製到你的剪貼簿,如果你的 key 檔案名稱不為 id_dsa.pub
,請自行將以下程式碼中 id_rsa.pub
修改成你的檔案名稱。
- 點選工具 icon
- 點選SSH Keys
- 選擇 Add SSH key
- 貼上key!!!!
- 按下 Add key就完成啦!
- 驗證你有沒有綁訂了
- 輸入
ssh -T git@github.com
- 你會看到這個 warning,然後輸入“yes”
- 你將會看到
這樣就成功囉!
同步
將本機 repository 和遠端 Github repository 同步
打開空的 repository,Github 會指示你如何將本機 repository 的 remote 設定為遠端的 repository 目錄,並輸入以下指令,即可連線並把目前的 repository 同步到 Github 上面了。
$ git remote add origin git@github.com:your_account/your_repository.git
$ git push -u origin master
之後只需要輸入
$ git push
即可
Clone 其他使用者的專案
Clone 是一個較為特殊的稱呼方式,意思是將遠端的 repository 複製一份到本機。在本機的 repository 可以自由修改/實驗,或是針對專案所需要的改善發送 patch 給原 repository,進而貢獻此專案。 如果你有寫入權限的話 (被加入成 “Collaborators”),就可透過 SSH 通訊協定,以 git 去 “clone” 下來:
$ git clone git@github.com:Username/repository.git
如果沒有寫入權限 (Collaborators) 的話,因為這個專案是公開的,所以你還是可以用 Git 通訊協定 clone 下來:
$ git clone git://github.com/Username/repository.git
若因遭逢防火牆問題 (如成功大學校園環境),請改用 HTTPS 通訊協定:
$ git clone https://github.com/Username/repository.git
Pull: 從遠端更新
$ git pull
或
$ git pull origin master
實際作用是先 git fetch 遠端的 branch,然後與本地端的 branch 做 merge,產生一個 merge commit 節點
Push: 將 Commit 送出去
$ git push
或
$ git push origin master
實際的作用是將本地端的 master branch 與遠端的 master branch 作 fast-forward 合併。如果出現 [rejected] 錯誤的話,表示你必須先作 pull。
若想要熟悉 Git 指令
以下是以 GUI 方式呈現指令所產生結果的網站: