原始碼管理工具——github

Aegsis發表於2024-05-29

目錄:
Github簡介

     1.Github基本功能

     2.Github檔案的相關操作 

     3.Github的建立與應用

Github特點

Github與TFS的區別

一、Github簡介

GitHub是一個面向開源及私有軟體專案的託管平臺,因為只支援git 作為唯一的版本庫格式進行託管,故名GitHub。GitHub於2008年4月10日正式上線,除了git程式碼倉庫託管及基本的 Web管理介面以外,還提供了訂閱、討論組、文字渲染、線上檔案編輯器、協作圖譜(報表)、程式碼片段分享(Gist)等功能。目前,其註冊使用者已經超過350萬,託管版本數量也是非常之多,其中不乏知名開源專案 Ruby on Rails、jQuery、python等。

1、Github基本功能

主頁面為:

GitHub可以託管各種git庫,並提供一個web介面,但與其它像SoureForge或Google Code這樣的服務不同,GitHub的獨特賣點在於從另外一個專案進行分支的簡易性。為一個專案貢獻程式碼非常簡單:首先點選專案站點的"fork"的按鈕,然後將程式碼檢出並將修改加入到剛才分出的程式碼庫中,最後透過內建的"pull request"機制向專案負責人申請程式碼合併。已經有人將GitHub稱為程式碼玩家的MySpace。GitHub進行分支就像在Myspace(或Facebook…)進行交友一樣,在社會關係圖的節點中不斷的連線。GitHub專案本身自然而然的也在GitHub上進行託管,只不過在一個私有的,公共檢視不可見的庫中。開源專案可以免費託管,但私有庫則並不如此。在GitHub,使用者可以十分輕易地找到海量的開原始碼。

(1)工具欄

LOGO:點選GitHub的LOGO就會進入控制皮膚。

搜尋視窗:在這裡輸入想找的使用者或程式碼片段,就可以搜尋到與之相關的資訊。

Pull requests:這裡檢視使用者倉庫最新的推送請求資訊。
Issues:這裡檢視使用者最新的問題推送資訊。
Marketplace:這裡提供最新的軟體,是程式碼軟體集市。
Explore:從各個角度介紹GitHub上的熱門軟體。
+:建立新的倉庫、舊倉庫搬家、管理釋出一些沒有必要儲存在倉庫中的程式碼、登入組織
頭像、使用者:檢視你的使用者資料、你關注的專案、你的Gists、幫助、設定、退出登入
(2)控制皮膚

News Feed:顯示當前已Follow的使用者和已Watch的專案的活動資訊,使用者可以在這裡檢視最新動向。
Broadcasts:主要用於接受GitHub公司發來的通知或使用技巧的小貼士
Repositories you contribute to:顯示使用者做過貢獻的倉庫。按貢獻時間的先後順序排列。
Your repositories:按更新時間順序顯示使用者的倉庫。標有鑰匙圖案的是非公開倉庫,標有類似字母Y圖案的是使用者Fork過的倉庫。
(3)倉庫

倉庫的URL形式為:https://github.com/使用者名稱/倉庫名; 這個頁面可以說是各個軟體的大門。循著目錄找下去我們就可以查閱自己想要的檔案。如果有相應許可權,還可以對檔案的內容直接進行編輯、提交。

Code:顯示該倉庫中的檔案列表。倉庫名下方是該倉庫的簡單說明和URL。
Issue:用於BUG報告、功能新增、方向性討論等,將這些以Issue形式進行管理。Pull Requests時也會建立Issue。旁邊顯示的數字是當前處於Open狀態的Issue數。
Pull Requests:在Pull Requests中可以列表檢視並管理Pull Request。程式碼的更改和討論都可以在這裡進行。旁邊顯示的數字表示尚未Close的Pull Request的數量。
Wiki:Wiki是一種比HTML語法更簡單的頁面描述功能。常用語記錄開發者之間共享的資訊或軟體文件。數字表示當前Wiki的頁面數量。
Insights:洞察:Pulse:顯示該倉庫最近的活動資訊。該倉庫中的軟體是 無人問津,還是在火熱的開發之中,從這裡可以一目瞭然。
Graphs:以圖表形式顯示該倉庫的各項指標。讓使用者輕鬆瞭解該倉庫的活動傾向。
Network:以圖表形式直觀地顯示出當前從寬的狀態及Fork出的倉庫的狀態,同時會顯示成員列表。
Settings:這裡可以更改當前倉庫的設定。使用者必須擁有更改設定的許可權才能看到這個選單。
Clone or download:Clone時候的地址,或者download的選項。
commit:這裡可以檢視當前分支的提交歷史。左側的數字表示提交數。
Branch:可以檢視倉庫的分值列表。左側的數字表示當前擁有的分支數。
Releases:顯示倉庫的標籤(Tag)列表。同時可以將標籤加入時的檔案以歸檔形式(ZIP、tar.gz)下載到本地。軟體在版本升級時一般都會打標籤,如果需要特別版本的檔案,可以從這裡尋找。
Contributor:顯示對該倉庫進行過提交的程式設計師名單。如果您也對該倉庫傳送過Pull Request並被採納,那麼在這裡就能找到自己的名字。左邊的數字是程式設計師的人數。
Branch:顯示當前分支的名稱。從這裡可以切換倉庫內分支,檢視其他分支的檔案。
Path:顯示當前檔案列表的路徑。點選上級目錄的連結就可以直接移動至該目錄。
Fork this project and Create new file:可以在當前倉庫的路徑下新建檔案。新建檔案作為一個新的提交記錄在Fork出的分支中。如果使用者對該倉庫擁有足夠許可權,該項則顯示為Create a new file,使用者可以直接在當前路徑下新建檔案。
Upload files:上傳檔案到GitHub的倉庫。
Find file:可以檢視當前分支的檔案。
files:可以檢視當前分支的檔案。頂端為最新提交得相關資訊。在檔案或目錄的列表中,從左至右分別為檔名稱、該檔案最新的提交日誌、更新日期。點選目錄或檔案就可以檢視相關內容。如果當前目錄中包含README檔案,那麼在檔案列表下方會顯示README。
(4)Issue
在軟體開發過程中,開發者為了跟蹤BUG及進行軟體相關討論,進而方便管理,建立了Issue。管理Issue的系統成為BTS(Bug Tracking System,BUG跟蹤系統)。
GitHub也為自身加入了BTS功能。在GitHub上,可以將它作為軟體開發者之間的交流工具,多多加以利用。一下幾種情況可以使用這個功能:發現軟體的BUG並報告;有事想向作者諮詢、探討;事先列出今後準備實施的任務

Issue除BUG管理之外還有許多其他用途。在軟體開發者的圈子中,將Issue用於多種用途的情況已經司空見慣。

(5)Pull Request
Pull Request是使用者修改程式碼後向堆放倉庫傳送採納請求的功能,也是GitHub的核心功能。
在Pull Request頁面能夠列表檢視當前處於Open狀態的Pull Request。透過點選頁面左部和上部的選項可以進行篩選和重新排列。
在列表中點選特定的Pull Request就會進入詳細頁面。頁面上方顯示著這次是從誰的哪個分支向誰的哪個分支傳送了Pull Request。

Conversation:在Conversation標籤頁中,可以檢視與當前Pull Request相關的所有評論以及提交的歷史記錄。人們在這裡新增評論互相探討,傳送提交落實討論內容的整個過程會按照時間順序列出,供使用者檢視。選中需要引用的評論內容,按r就能引用評論。
Commits:在Commits標籤中,按時間順序列表顯示了與當前Pull Request相關的提交。標籤上的數字為提交的次數。每個提交右側的雜湊值可以連線到該提交的程式碼。
Files Changed:Files Changed標籤頁中可以檢視當前Pull Request更改的檔案內容以及前後差別。標籤上的數字表示新建及被更改的檔案數。只要在URL的末尾加上?w=1即可不顯示空格的差別。將滑鼠指標放到被更改的行號的左側,我們會看到一個加號。點選這個加號,就可以在程式碼中插入評論。這樣,評論是針對哪行的程式碼就一目瞭然。
(6)Wiki
Wiki是一個使用簡答的語法就能編寫文件的功能。所有有許可權的人都可以對文章進行修改,所以比較適合多人共同編寫文章的情況。建立、編輯文件時不必另外啟動軟體,適合用來針對更新頻率較高的軟體進行文件等資訊方面的彙總。
與Issue和Pull Request相同,Wiki也支援GFM語法,所以可以輕鬆建立表現力豐富的文件。Wiki功能本身的資料也在Git中進行管理。點選Clone URL按鈕可以將當前的Wiki的Git倉庫URL複製到貼上板中。使用者能夠透過Clone操作獲取Wiki倉庫,然後在本地建立、編輯頁面,進行提交再Push,便可以完成對Wiki的建立及編輯工作。在Pages標籤頁中可以檢視Wiki頁面。

(7)Pulse
Pulse是體現該倉庫軟體開發活躍度的功能。近期該倉庫建立了多少Pull Request或Issue,有多少人參與了這個倉庫的開發等。都可以在這裡一目瞭然。
根據這個頁面,使用者可以判斷目前這個軟體是否正在被積極開發,或者持有倉庫修改許可權的人是否在認真的記性BUG修正等維護工作。

active pull requests:頁面中Overview的左半部分顯示了特定期間內活動過的Pull Request數。點選proposed-pull-request則可以按建立的先後順序檢視Pull Request的概要及連結。透過這些資訊,使用者就可以瞭解軟體最近正在開發哪些功能。
active Issues:頁面中Overview的右半部分顯示了特定期間內活動過的Issue數。透過觀察Issue的整體動向,使用者能夠知道這個軟體是否有人在積極維護與支援。對方倉庫越是活躍,使用者傳送的BUG報告和相關探討就越可能收到回應。
Commits:Overview下方顯示的是與提交相關的資訊。左側部分包含了如下幾類資訊:編寫過程式碼的人數、提交的次數、default branch中修改過的檔案數、default branch中新增的行數、default branch中刪除的行數,透過這些資訊,使用者就可以大致把握該倉庫中活躍開發者的人數。另外,右側圖表顯示了這些開發者具體傳送的提交數。

2、Github的相關操作

(1)Github檔案的相關操作

點開檔案後會顯示出檔案的內容,同時右上角會顯示用於該檔案的選單。Edit可以對檔案內容進行編輯並提交。Raw可以直接在瀏覽器中顯示該檔案的內容。使用這個URL,就能透過HTTPS協議獲取該檔案。Blame能夠按行顯示最新提交的資訊。History可以檢視該檔案的歷史記錄。Delete可以刪除這個檔案。
檔案內容的左側會顯示該檔案的行號。假如我們點選第十行的行號,這一行就會被高亮標記為黃色,同時URL末尾會自動新增#L10。使用這兒URL,程式設計師們在交流時,就可以將討論明確指向某一行。另外,如果將#L10改為#L10-15,則會標記該檔案的第10到15行。

(2)檢視差別
在GitHub上,直接修改URL就可以讓使用者以多種形式檢視差別。這裡我們以Ruby on Rails倉庫為例,介紹直接修改URL的一些技巧。

檢視分支間的差別:

比如我們想看4-0-stable分支與3-2-stable分支之間的差別,可以像下面這樣將分支名加到URL裡。

這樣,就可以檢視兩個分支間的差別了。可以看到,有65名程式設計師經過1710次提交,完成了3.2版本到4.0版本的升級工作。

檢視與幾天前的差別
假如我們想看master分支在最近7天內的差別,可以像下面這樣將時間加入URL:

這樣,就可以檢視這段期間內的差別。

Day、Week、Month、Year指定期間可以使用以上四個時間單位。如果差別過大則不會列出所有提交,只顯示最近的比部分。

檢視與指定日期之間的差別
假設我們想檢視master分支2013年1月1日與現在的區別,可以將日期加入URL:

這樣,便可以檢視與指定日期之間的差別。但是如果指定日期與現在的差別過大,或者指定日期過於久遠,則無法顯示。由於可以從多種角度檢視差別,所以GitHub也稱得上是一個優秀的原始碼檢視器。

(3)其他:

新增圖片:拖拽或者選擇下方的selecting them
新增標籤以便整理:Issue可以透過新增標籤(Label)來進行整理。新增標籤後,Issue的左側就會顯示標籤。點選頁面左側的標籤,還可以只顯示該類標籤的Issue。標籤可以自由建立。(其實在Issue比較少的情況下,不必每個都新增標籤,大可等Issue積攢到一定數量,只有進行篩選才能清晰把握時再新增標籤。)透過提交資訊操作Issue:在GitHub上,只要按照特定的格式描述提交資訊,就可以像一般BTS帶有的功能那樣對Issue進行操作。在相關Issue中顯示提交:每個Issue標題下面都分配了諸如#24的編號。只要在提交資訊的描述中加入#24就可以在Issue中顯示該提交的相關資訊,使關聯的提交一目瞭然。
Close Issue:如果一個處於Open狀態的Issue已經處理完畢,只要在該提交中以下列任意一種格式提交資訊,對應的Issue就會被Close:fix #24、fixes #24、fixed #24、close #24、closes #24、closed #24、resolve #24、resolves #24,將特定的Issue轉換為Pull Request:在GitHub上,如果給Issue新增原始碼,就會變成我們馬上要講到的Pull Request。

二:Github的建立與應用

(1)建立賬號

GitHub官網地址:https://github.com/

點選Sign up註冊GitHub賬號

填寫使用者,郵箱,密碼

點選create an account,進行郵箱確認

點選continue進行下一步,進行問卷(可選)

(2)建立應用

1.點選右上角圖示,選擇settings

2.選擇最後一個Developer settings

3.點選綠色按鈕Register a new applications

4.以下分別為專案名稱,主頁地址,專案描述,回撥地址

  1. 完成專案註冊,獲取到Client ID 和 Client Secret

    三:Github特點

Github是一個程式碼託管平臺和開發者社群,開發者可以在Github上建立自己的開源專案並與其他開發者協作編碼。創業公司可以用它來託管軟體專案,開源專案可以免費託管,私有專案需付費。Github可以託管各種git庫,並提供一個web介面,但與其它像SourceFore或Google_ Code這樣的服務不同,Github的獨特賣點在於從另外一個專案進行分支的簡易性。為一一個專案貢獻程式碼非常簡單:首先點選專案站點的“fork”的按鈕,然後將程式碼檢出並將修改加入到剛才分出的程式碼庫中,最後透過內建的“pull request”機制向專案負責人申請程式碼合併。已經有人將Github稱為程式碼玩家的HySpace。

優點:

(1)完整的支援Markdown語言,而且支援Emoji表情

(2)支援直接複製圖片到頁面,會自動上傳圖片(非常好的功能,知乎也支援)

(3)比較好的支援Mobile。雖然github沒有手機客戶端,但是一般開發者,寫好的blog都(4)會透過微博進行分享,所以點選過來之後,就可以在手機瀏覽器裡面訪問

(5)使用github原生的功能,就可以進行類似評論的功能

(6)支援@使用者功能,支援標籤

(7)功能設計簡潔實用上手很快,可用性好,已有很多相當質量的各類專案和優秀開發者在上面

缺點:

(1)國內訪問速度太慢,經常出現connect time-out

(2)wiki功能太弱,直接導致文件(對於開源專案很重要)經常被分離到一個獨立站點

(3)免費套餐不支援私有專案,無非解決企業內部的需求,github:fi價格過高(最便宜要$5,000/年)

(4)沒有整合社交分享功能。比如後面可以分享到微博,微信朋友圈等

四、Github與TFS的區別

(1)team foundation是微軟提供的版本控制服務,整合在Visual Studio中。當你新建立一個工程之後,如果需要使用team foundation,需要在選單中選擇TEAM->Connect to Team Foundation Server。透過微軟的賬號連線到伺服器上。然後選擇一個遠端的程式碼庫(透過網頁登陸visual studio online建立的)。之後才可以提交程式碼。版本控制需要聯網。微軟提供的這項服務5人以下免費。

git作為分散式版本控制,使用的時候非常靈活。它允許使用者在本地建立版本控制的倉庫,在非聯網狀態下就可以進行程式碼的提交,比較,歷史檢視等。在完成本地的提交之後,使用者可以選擇把程式碼提交到遠端伺服器上,用於不同環境的程式碼同步。依然舉例Visual Studio,在建立工程的時候你可以把git勾上,這樣就可以在本地管理程式碼。在需要遠端同步的時候,也可以透過Team Foundation Server提交git的程式碼。git不是微軟的專屬,你可以把git提交到很多遠端伺服器上,最著名的就是Github。目前國內也出現了很多免費的Git程式碼服務,比如git開源中國,git京東,等。

(2)TFS的操作很多餘,而GitHub for Windows操作起來很簡單。在GitHub上你可以立即檢視更改後的檔案以及更改的內容

(3)GitHub變得越來越流行,最近Github釋出了Github for Windows則大大降低了學習成本和使用難度,它甚至優於TFS。微軟也開始逐漸從TFS向GitHub轉移了。不是TFS 輸給了 Github,而是 TFS 原生的原始碼管理輸給了 GIT。TFS 定位並不是原始碼管理,而是一個團隊工具,貫穿需求,開發,測試,釋出各個流程提供自動化工具。

相關文章