2021-05-12 14:32:11
Github使用入門基礎教學
Github使用簡介
———————-
當我們的專案需要多人共同作業的時候,有一個公共的程式碼文件倉庫就會很方便。由於網上最廣泛使用的服務還是github.com,儘管自己最熟悉的是SVN,但還是為了能用上更好的服務而選擇了github。
Github上的幫助頁面有個Bootcamp的指引,實際上Windows和Mac系統都基本上可以通過github所提供的用戶端進行便捷的管理,只需要點選Download Github for Mac/Windows下載安裝就可以了。(註:後來發現github的用戶端只支援最新版的OSX,若10.7以前的可以選用其他/更專業的git用戶端,比如說SourceTree)
而Linux系統將會稍麻煩一點,需要按照指引一步一步做。Github上手步驟分成四步:
1. Set Up Git
2. Create a Repo
3. Fork A Repo
4. Be Social
第一步會告訴你如何通過git的命令列設定你的名字、帳號和SSH金鑰,生成金鑰之後還需要上傳到自己的帳號設定裡面,之後才可以進行其他操作。第二步是要如何建立一個repository,一般會包含一個最基本的README檔案,因為空目錄不會上傳到repository上。第三步就是如果你希望對其他repository進行分支的更改,這適用在沒有修改該repository的許可權,或者不希望將自己的程式碼跟別人的repository混在一起的時候,就可以通過分支到自己的帳號上,用自己的repository進行修改,同時通過upstream來同步原始repository和自己的repository的程式碼。第四步介紹了如何在github上與其他使用者的交流。在Linux下也有其他圖形用戶端,比如說RabbitVCS就挺好的,能夠同時支援SVN, Git和Mercurial,使用的是windows下的Toitoise系列的風格。
但在linux下有一個地方要注意的,如果是github的private repository(私有倉庫),只用git clone命令是無法拷貝到原生的(用其他用戶端也不行),而需要用以下的命令列:
$ git clone git@github.com:username/projectname.git
經過前面幾步之後,就已經可以用git來存放自己的程式碼了。後面還需要學習一下Git的版本控制理念,如怎樣提交程式碼,怎樣做分支的管理和版本控制,這要結合到團隊成員之間如何配合管理提交程式碼。
Git概念簡述
———————
Github是一個提供了Git程式碼版本管理服務的伺服器,使用版本控制和程式碼託管有什麼好處呢?
- 我們可以通過github的網站隨時隨地瀏覽,我們的程式碼和文件資料(如:arduino-exercises)。
- 我們可以跟蹤所有提交到伺服器的更改(也就是如果你做了壞事都會有記錄 ,如:arduino-exercises的history)
- 我們可以對現有的工作資料進行備份。如果碰巧你的硬碟壞了或者電腦丟了,起碼網站上有一份備份。
- 我們可以持續地對自己的工作做更改。Git支援我們對現有的內容建立分支,儲存快照,合併修改等,讓我們可以不斷地改進作品而不影響原有的版本。
以下是Git對檔案管理流程的簡介:
1. Checkout。第一次使用需要從遠端伺服器fetch並checkout HEAD來建立原生的工作目錄,之後我們便可以在工作目錄裡任意地新增/刪除/修改檔案,然後提交到原生的倉庫。
2. Add to Index。對於新新增的檔案,我們要把它加到索引(Add to Index)裡面,檔案的修改才會進入Git的跟蹤範圍。
3. Commit。對於已新增索引的檔案, 我們只需要在要儲存更改的時候,做一個“提交到本地倉庫”(Commit)的操作。那麼該檔案的更改便在本地有歷史可尋。
4. Push/Pull。同步本地倉庫(Local Repository)和遠端倉庫(Remote Repository)的記錄。這裡用的動詞很形象,Push就是把本地倉庫的記錄推播到伺服器上,而Pull就是把伺服器的記錄拉到原生的倉庫。
這裡稍微解釋一下,由於Git是一個DVCS(Distributed Version Control System,分散式版本控制系統),不同於傳統的CVS/SVN版本系統那樣必須由一個中央伺服器來管理所有的版本記錄,它實際上每一個倉庫都可獨立運作,因此而稱為分散式(Distributed)。Git Repos既可以是一個伺服器的倉庫,也可以是一個原生的檔案倉庫,可以存在與不同的資料夾裡或別人的電腦上,它可以被無限制地fork/clone產生分支,並記下來它們的上游(upstream)是源自哪一個分支,這樣當擁有相同upstream的倉庫之間,就可以共用版本資訊以進行版本合併操作。
5. Merge(只在有衝突的時候)。有時候在我們想Push更新到伺服器的時候,發現伺服器上的版本已經有別人更新過了,即有新的其他人的Push記錄沒有下載到本地,這時需要我們先把別人的更改下載到本地,以確保自己是基於最新版提交的更改,才可以把原生的記錄Push上去。如果別人修改的部分跟自己的部分沒有重合,則應該可以自動地merge。
一種簡單的merge方法如Github Client是先對自己的版本拷一個備份到別的目錄,然後Discard Local Changes(即取消原生的更改,或稱Revert),然後把Remote的changes更新到本地,然後再在最新版的基礎上把自己的changes寫上去。
另一種辦法是在SourceTree裡提供更高階的處理矛盾的方式,就是你直接修改原生的檔案為想要的最新狀態,然後把其標為已經Resolved(右鍵點選檔案->Resolve Conflicts->Mark as Resolved),再提交的時候就會認為這個conflict已經被merged了,可以成功commit。
如果在使用過程之中遇到問題,可先檢視所用的Git用戶端的文件。之後如果有需要的話,我再講解一下如何做tag/branch相關的操作,這就屬於進階的內容了。
GitHub 教學系列文章:
通過GitHub建立個人技術部落格圖文詳解 http://www.linuxidc.com/Linux/2015-02/114121.htm
GitHub 使用教學圖文詳解 http://www.linuxidc.com/Linux/2014-09/106230.htm
Git 標籤管理詳解 http://www.linuxidc.com/Linux/2014-09/106231.htm
Git 分支管理詳解 http://www.linuxidc.com/Linux/2014-09/106232.htm
Git 遠端倉庫詳解 http://www.linuxidc.com/Linux/2014-09/106233.htm
Git 本地倉庫(Repository)詳解 http://www.linuxidc.com/Linux/2014-09/106234.htm
Git 伺服器搭建與用戶端安裝 http://www.linuxidc.com/Linux/2014-05/101830.htm
Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm
分享實用的GitHub 使用教學 http://www.linuxidc.com/Linux/2014-04/100556.htm
相關文章