前言:
1)Git於SVN的不一樣
Git是分佈式數據庫,本地建立倉庫,便可在本地完成版本控制(等價於SVN在本地安裝服務器和客戶端,SVN服務器若是在遠程,斷網狀況將沒法完成提交及版本維護)。
Git協做開發,你們能夠互相剋隆版本庫(至關於SVN下載項目),進行開發,每人都有完整的庫(分佈式)。一般爲了方便,遠程仍是會創建一個共享庫,如GitHub,方便你們同步和共享,不用互相在線,點對點同步修改。
2)Git元素概念
工做區(Working Directory):代碼開發和修改的區域,Eclipse將Workspace區域的文件顯示給用戶,用於操做。
暫存區(Index):修改不一樣文件,經過Add to Index,添加到暫存區,暫存該批次的多個修改。
注:在最初的Git,文件提交前必須提交到暫存區。EGit這不是必要的,Team => Commit能夠提交unstaged變化。能夠和暫存區的狀態比較和回退暫存區修改。(狀態參見二)
版本庫(Repository):該到必定程度時,能夠提交一批次暫存區的修改,操做後修改提交版本庫,並標記版本,是後續分享和回退的批次。
3)文章概述:
1> EGit 安裝配置
2> EGit 文件狀態及圖標標誌
2> EGit 本地開發
建立本地庫;提交;回退;建立分支;合併;
3> EGit 協做開發
項目推送遠程倉庫;克隆遠程倉庫導入項目;提交修改到遠程倉庫程;更新遠程倉庫修改到本地;解決衝突。
4> EGit 視圖
倉庫視圖;同步視圖;歷史視圖;
一 Eclipse 安裝EGit
1)安裝
Eclipse Juno 版後已經集成了EGit,若是使用早些版本,能夠經過以下地址安裝:http://download.eclipse.org/egit/updates ,選擇「Eclipse Git Team Provider」,不須要安裝其餘插件,直到結束。
2)配置
EGit每次提交都將包含用戶名和郵件,能夠經過「Window => Preferences => Team => Git => Configuration」配置,經過Add Entry 按鈕添加信息,
key : user.name,value:用戶名 ;key:user.emai , value : 郵箱,帳戶信息一般GitHub相同。
二 EGit文件狀態及圖標展現
EGit會出現以下圖標,其對應狀態及意義以下:
1)忽略[ ignored ]:倉庫認爲該文件不存在(如bin目錄,不須要關注)。經過右鍵Team => Ignore 添加忽略文件
2)未跟蹤[ untracked ]:倉庫未跟蹤,一般是新建的文件,要接入版本管理能夠經過「Add to Index」或直接「Commit」操做。
3)已跟蹤[ tracked ]:文件已被倉庫記錄。
4)已添加[ added ]:untracked 狀態的文件,經過「Add to Index」被倉庫已知,可是沒有「Commit」,「Commit」後可變爲「已跟蹤[ tracked ]」狀態。
5)已刪除[ removed ]:從工做區中刪除文件,文件會消失,也就沒有圖標出現,下一次提交時被刪除。Team => Untrack能夠觸發本圖標,在「Commit」對話框中能夠看到圖標。
6)已修改[ dirty ]: 修改「已跟蹤[ tracked ]」的文件,未添加到暫存區Index(未「Add to Index」或「Commit」)的文件,標誌與本地庫不一致。
7)已暫存[ staged ]:修改「已跟蹤[ tracked ]」的文件,並添加到暫存區Index(即執行「Add to Index」);
8)衝突[ conflict ] : 進行Marge合併操做會引發衝突,須要人工解決並添加到索引區修改狀態。
9)已部分暫存[ partially-staged ]:修改「已跟蹤[ tracked ]」的文件,部分修改已添加暫存區Index,部分未添加。
至關於:已跟蹤的文件修改,Add to Index ,Commit前又修改了文件。
10)假設有效[ assume-valid ]:一些修改未被Git檢查。右鍵Team => Assume unchanged可產生該狀態。
三 EGit使用
(一)建立本地倉庫
Git優點是容易建立本地倉庫,將工做本地化,待須要的時候推送到遠程倉庫,所以全部修改能夠在本地版本化。
方法:本地見一個工程,添加一些文件,而後在工程上右鍵Team => Share Project ,點擊 create按鈕建立倉庫。
儘管咱們建立了本地倉庫,並share 項目,但庫是空的。咱們能夠向工程添加文件,並提交到本地倉庫。
(二) 提交(Commit)
1)建立文件提交
建立新文件,由「?」標記,想提交倒本地倉庫進行版本管理,須要右鍵Team => Add to Index,操做後「?」變成「+」。而後項目右鍵Team => Commit,輸入本次提交信息(注:輸入的信息會展現在歷史頁面),成功後標記由「+」變成「倉庫」符號。
=commit=>
===》
2)產生修改提交
修改項目文件,文件會由「>」標記,若是須要同步到本地庫,咱們須要提交,過程同上commit
(三) 撤銷修改
方法1:經過和上一次暫存區(Index)文件比較——用於單個文件,通常文件狀態爲「已部分暫存[ partially-staged ]」
文件上右鍵Compare With => Git index
若是想修改暫存區Index,點擊Copy All Non-Conflicting Changes from Right to Left-button,修改後文件變爲「已暫存[ staged ]」。
若是向回退上次Add to Index的狀況,點擊Copy All from Left to Right,修改後文件變爲「已暫存[ staged ]」。
方法1:經過和上一次Commit版本比較回退——用於單文件
文件上右鍵Compare With => HEAD Revision
若是想徹底恢復文件,點擊Copy All Non-Conflicting Changes from Right to Left-button
若是向回退某幾行,選擇單獨每一行,點擊the Copy Current Change from Right to Left button。
手工完成修改合併後再說起。
方法3:經過重置回退(Revert via Reset)——用於整個工程
在項目上回退全部修改,項目上右鍵Team => Reset…;選擇要回退到的分支(若是沒有建立分支,只有有一個Master),Reset Type 選擇Hard,點擊「Reset」確認。全部修改回退到該分支的最後一次提交,包括工做區全部完成的修改。
注:重置類型(Reset Type):
1)Soft:只回退commit信息(HEAD 指針),不回退暫存區(Index)和工做區(Working Directory 文件)源碼,若是須要可再次提交,回到上次commit狀況。
2)Mixed:回退commit信息(HEAD 指針)和暫存區(Index),只保留工做區(Working Directory 文件)源碼。
3)Hard:全部更改都將恢復到所選分支/標記/Commit版本。工做區(Working Directory 文件)源碼會變爲上一個Commit版本的內容,未提交的更改都將丟失,所以該操做必須確認。
(三) 建立分支
項目上右鍵Team => Switch to => New Branch… ,選擇一個新分支的來源,點擊建立分支,輸入分支名。
新分支會出如今分支選擇窗口,若是向檢出一個新建立的分支,選擇而後點擊checkout
》》》》》》》
注:
Git的一大優點是很容易建立分支,根據須要能夠快速建立Bug修復分支,新功能分支,幾條分支獨立開發,最後合併到主分支。
原則:
a)master分支應該是很是穩定的,也就是僅用來發布新版本,平時不能在上面開發;
b)開發都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,好比1.0版本發佈時,再把dev分支合併到master上,在master分支發佈1.0版本;
c)每一個開發人員都在本身dev分支上幹活,每一個人都有本身的分支,時不時地往dev分支上合併就能夠了。
(四)合併和解決衝突
1)合併
將一個分支合併到另外一個分支,首先切換到要合併的分支,項目郵件Team => Switch to => 分支名(或倉庫視圖,Branches => Local =>指定分支右鍵Checkout),右鍵 Team => Merge…
選擇要合併到當前分支的分支,點擊Merge。
合併開始並彈出結果,結果有以下幾種:Already-up-to-date, Fast-forward, Merged, Conflicting, Failed.
2)解決衝突
衝突須要手動解決。打開衝突文件,找到衝突修改標誌「<<<<<<<」,手動合併後後,須要通知Git衝突解決,
Add to index 和commit 完成合並
四 遠程倉庫
遠程倉庫通常用於多人共享,GitHub就提供免費的共享空間,註冊賬號,在GitHub上建立倉庫,就能夠推送項目。
(一)項目提交遠程倉庫
1)GitHub上建立項目
2)項目:右鍵 Team => Remote => Push,填寫遠程倉庫信息
3)選擇推送的分支信息,這裏因爲創建了master和dev分支,選擇並經過"Add Spec"按鈕添加,選中複選框「Force Update」,已避免衝突,不然須要現更新再推送。
4)因爲Force Update因此須要確認。
5)推送完成
(二)克隆遠程倉庫導入項目
1)File => Import => Git => Project from Git
2)倉庫來源選擇:Clone from uri 填寫帳戶信息
3)分支選擇也沒:選擇要導入的分支
4)本地路徑指定地址
5)完成後本地倉庫出現,克隆完成,能夠直接選擇「Import as existing project」導入
6)導入
(三)提交修改到遠程倉庫程
方法1:正常的提交操做:
項目右鍵 => Team => Remote => Push 能夠選擇不一樣的遠程倉庫進行推送。包括其餘同事的倉庫推送。
方法2:向默認遠程倉庫推送:
項目右鍵 => Team => Remote =>Push to upstream
(四)更新遠程倉庫修改到本地
方法1:
1)項目右鍵 => Team => Remote =>Fetch form upstream
注:該操做首先將遠程的分支同步到本地的origin/master分支
2)項目右鍵 => Team => Marge
注:合併,能夠查看和本地是否有衝突,能夠經過合併解決衝突。
方法2: 項目右鍵 => Team => Pull
注:Pull 合併了Fetch from upstream 和marge;強制Marge,但上面的方法更安全。
五 EGit 視圖
(一)倉庫視圖
庫視圖是有用的在處理分支/標記和執行操做,以及處理遠程存儲庫,讓你所瞭解概況。
右鍵Team => Show in Repositories View能夠看到
(二)同步視圖
工做區和本地庫的對比或者當前分支和其餘分支的對比是經過同步操做完成的。
右鍵Team => Sychronize Workspace ,工做區會和當前分支比較並展現出不一樣。
右鍵Team => Advanced => Synchronize… 能夠查看當前分支和其餘分支的比較。這包括全部本地未提交的變化。
(三)歷史視圖
查看已共享文件的歷史,右鍵Team => Show in History.
能夠進行比較,標籤,回退。