一:什麼是Git
Git 是一個開源的分佈式版本控制系統,可以有效、高速的處理從很小到非常大的項目版本管理。Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。
二:Git的特點
分佈式相比於集中式的最大區別在於開發者可以提交到本地,每個開發者通過克隆(gitclone),在本地機器上拷貝一個完整的 Git 倉庫。
從一般開發者的角度來看,git 有以下功能:從服務器上克隆完整的 Git 倉庫(包括代碼和版本信息)到單機上、在自己的機器上根據不同的開發目的,創建分支,修改代碼、在單機上自己創建的分支上提交代碼、在單機上合併分支、把服務器上最新版的代碼 fetch 下來,然後跟自己的主分支合併等。
1:優點
適合分佈式開發,強調個體。公共服務器壓力和數據量都不會太大。速度快、靈活。任意兩個開發者之間可以很容易的解決衝突。離線工作。
2:缺點
資料少(起碼中文資料很少)。學習週期相對而言比較長。不符合常規思維。代碼保密性差,一旦開發者把整個庫克隆下來就可完全公開所有代碼和版本信息。因其資料的公開性,導致大型商業化工程幾乎不會使用 GIT 來託管工程版本信息(除非搭建企業私服)。
三:GitHub簡介
平臺地址:https://github.com
GitHub是一個面向開源及私有軟件項目的託管平臺,因爲只支持 Git 作爲唯一的版本庫格式進行託管,故名 GitHub。
GitHub 於 2008 年 4 月 10 日正式上線,除了 git 代碼倉庫託管及基本的 Web 管理界面以外,還提供了訂閱、討論組、文本渲染、在線文件編輯器、協作圖譜(報表)、代碼片段分享(Gist)等功能。目前,其註冊用戶已經超過 350 萬,託管版本數量也是非常之多,其中不乏知名開源項目 Rubyon Rails、jQuery、python 等。
作爲開源代碼庫以及版本控制系統,Github 擁有超過 900 萬開發者用戶。隨着越來越多的應用程序轉移到了雲上,Github 已經成爲了管理軟件開發以及發現已有代碼的首選方法。
如前所述,作爲一個分佈式的版本控制系統,在 Git 中並不存在主庫這樣的概念,每一份複製出的庫都可以獨立使用,任何兩個庫之間的不一致之處都可以進行合併。
在 GitHub,用戶可以十分輕易地找到海量的開源代碼。
1:註冊賬號
請自行在 Github(https://github.com)網站中註冊。在部分企業中,開發人員是否擁有 Github 帳戶,在 Github 中是否有個人的代碼和資料發佈、發佈數量等,成爲了開發人員實力的一種評價標準。
2:創建版本倉庫
2.1:進入管理頁面
2.2:進入倉庫管理面板
2.3:提供新增倉庫信息
注意,這裏創建的是公開版本倉庫,私有版本倉庫不完全開放,大部分功能需要付費購買。
2.4 成功創建後的頁面內容
3:提供SSH2密鑰
3.1:創建本地密鑰
使用 EclipseIDE 生成本地密匙文件。window->preference->general->network connections->ssh2->點擊 Generate RSA KEY->點擊Save private key 生成並保存本地密匙:
生成後的密匙文件所在位置是:C:\${user.home}\.ssh 目錄。密匙文件名爲:id_rsa 和id_rsa.pub。其中 id_rsa.pub 文件是公鑰密匙,需要手工添加到 Github 密匙庫中。
3.2 Github
進入 Github 密匙管理面板
創建新的 SSH 密匙
在 title 中輸入密匙名稱(自定義),在 key 文本域中輸入 id_rsa.pub 文件中的內容。並確認新增密匙。
密匙新增成功(新增密匙過程可能需要確認用戶密碼),管理面板如下:
3.3 GitHub
在密匙管理面板中,點擊 Delete 按鈕可以刪除密匙(刪除過程可能需要輸入登錄密碼)。
4:刪除版本倉庫
進入版本庫管理面板:
選擇要刪除的版本倉庫,進入對應倉庫的 Settings 管理界面:
在管理界面的最末端,點擊 Delete this repository 按鈕:
在確認對話框中,輸入要刪除的版本倉庫名稱,並確認刪除
四:EGIT插件應用(Eclipse GIT插件)
1:安裝EGIT插件
Eclipse Mars2 版本,默認集成 EGIT 插件,如果需要安裝 EGIT 插件,可以使用在線安裝方式實現。
1.1:進入新插件安裝面板
1.2: 新增要安裝的插件
插件名稱自定義, 插件地址爲:
http://download.eclipse.org/egit/updates/
1.3:選擇要拉取的插件
2:Eclipse 訪問 GitHub 問題解決
ini 配置文件增加下述配置:ini 配置文件位置: eclipse 安裝目錄/eclipse.ini 文件。
-Dhttps.protocols=TLSv1.1,TLSv1.2
3:EGIT插件參數配置
使用 EGIT 插件,可以提前配置一些參數,爲 GIT 訪問遠程版本倉庫提供便利。
3.1:進入 Eclipse 配置面 板(Window->Preferences )
3.2:新增參數信息
常用 參數有 下述 4 個:
http.sslVerify=false 關閉 ssl 校驗。 (選填,如果未提供 SSH2 密匙必填)
http.sslVersion=tlsv1.2 定義 ssl 協議版本,Github 在最近的更新中關閉了 tlsv1.0 和 tlsv1.1
協議的訪問,不提供此參數無法訪問 Github 遠程版本倉庫 ( JDK1.8 未測試) 。
user.email=xxx@xxx
user.name=xxx
在訪問 Github 遠程版本倉庫的時候,Github 要求必須提供用戶和電子郵箱,如果不提供上述參數,在後續操作中需要提供對應的信息,參考下圖。
4:創建本地版本倉庫
4.1 打開 GIT Repositories 管理面板
4.2: 創建本地版本倉庫
5:克隆遠程版本倉庫
此操作爲常用操作,在克隆遠程版本倉庫同時, EGIT 插件會自動創建一個本地版本倉庫與之對應。
6:增加內容
此操作就是將本地工程分享到 GIT 中,並使用 GIT 來進行版本信息管理。
7:提交內容
8:更新內容
8.1:fetch
抓取, 抓取遠程的 head 信息。從遠程倉庫中下載 head 頭信息的變更狀態。沒有下載真實的代碼變化。
8.2:pull
拉取,相當於先 fetch head 再 pull code。 先下載 head 頭的變更,再根據頭信息的變更下載真實的代碼。通常直接 pull 即可。
9:分支管理
分支管理,是 GIT 開發中的一個非常有效的團隊開發策略。多個程序員並行開發,每程序員可以定義各自的分支,在自己的分支上開發工程。再開發結束測試完畢後,再合併到主幹工程中,一次性提交到遠程。由其他程序員使用。
9.1:創建新分支
9.2:分支切換
9.3:合併分支
首先切換到 master 主幹,再執行下述操作:
9.4:刪除分支
9.4.1:刪除本地分支
9.4.2:刪除遠程分支
10:衝突管理
10.1:提交衝突
10.1.1:遠程代碼
10.1.2:本地代碼
10.1.3:提交
10.1.4:結果
10.2:同步
10.3:pull遠程代碼
10.4:修改內容
10.5:將修改後的內容加入索引信息
10.6:提交內容
11:拉取內容
11.1:拉取遠程工程
11.2:拉取遠程代碼
在 Git 中,fetch 和 pull 的功能不同,fetch 是拉取遠程版本庫中的變化信息,是將遠程版本倉庫中最新版本的 heads 頭信息更新到本地版本倉庫,不包含具體的內容。pull 則是將遠程版本倉庫中的 heads 和內容都更新到本地倉庫。可用下述圖例簡單描述:
12:刪除內容
12.1:刪除代碼
12.2:刪除工程
13:忽略文件
如果本地有若干文件或目錄不想提交到遠程。可以使用忽略的方式實現。.gitignore 文件中定義的內容,都是忽略的內容。不上傳到遠程倉庫的內容。忽略信息定義方式:
目錄 - /目錄名稱/
文件 - /文件名稱 、 /目錄名稱/文件名稱
匹配 - /前綴* 、 /*後綴 、 /*中綴*
匹配 - *.xxx 、 xxx.* 沒有‘/’的匹配,對應的是所有目錄中的有效內容。
上述配置中的‘/’代表的是工程的根目錄。修改.gitignore 文件後,需要將修改後的文件增加到索引:
提交修改後的.gitignore 文件。
保證忽略信息生效。再次提交相關內容時,會自動忽略.gitignore 文件中的配置內容。不做提交處理。