gitlub及git和eclipse使用教程
目錄
一、基本操作
1.登入:
在上圖紅框區域登陸自己的賬戶密碼。
2.修改密碼:
登入成功後點擊左側工具欄目Profile Settings ------ Password -------修改密碼-------Save password。
Tips:
點選GitLab的logo,可以從任何介面回到本頁
二、專案管理
可以根據需要選擇新建專案、新建組合新建使用者
1.新建專案
如下圖所示新建專案:
建立時可以選擇在自己使用者下建立或者某個群組內建立
a. 專案名稱,專案名稱可以為字母、數字、空格、下劃線、中劃線和英文點號組
成,且必須以字母或數字開頭,不能使用中文
b. 專案描述
c.可見性(庫類別)
私有庫:只有被賦予許可權的使用者可見
內部庫:登入使用者可以下載
公開庫:所有人可以下載
根據實際情況填寫完各項之後,點選建立專案,專案建立成功
提示通過SSH方式拉取推送專案程式碼必須要匯入SSH key,這個稍後再介紹。
專案地址有HTTP和SSH兩種方式-------可傳送給開發人員下載和初始化專案
2.編輯或刪除專案
主頁左邊選單欄--------Project
右上角的齒輪狀按鈕--------編輯專案
右下角刪除專案。
或者點選Admin Area
三、使用者管理(管理員使用,非管理員跳過此步驟)
1.新建使用者
點選頂端的Admin Area按鈕
可以進入管理頁面
1) 姓名(可以是中文)
2) 使用者名稱(可以為字母、數字、空格、下劃線、中劃線和英文點號組成,且必須以字母或數字開頭,不能使用中文)
3) 郵箱地址(首次接收密碼)
4) 建專案的數量限制
5) 是否可以建立組
6) 是否是管理員
7) 選填內容(個人聯絡方式)
2.編輯和刪除使用者
四、組管理(管理員使用,非管理員跳過此步驟)
1.新建組
選單欄Group------New Group
1). 組名稱,組名稱可以為字母、數字、空格、下劃線、中劃線和英文點號組成,
且必須以字母或數字開頭,不能使用中文
2). 組詳情
2.編輯或刪除組
在此頁面可以編輯和刪除組
3.新增組成員
新增組使用者並賦予相應的許可權。
4.修改成員的許可權(owner使用者操作)
點選左側的Groups,然後點選當然的組。
然後點選左側Members選單進入。
修改想要修改的使用者的許可權並save
5.從組管理新增專案
從組裡新增專案可免去再新增專案使用者的步驟,因此我們選擇從組內新增工程。
點選左側Group,然後點選齒輪按鈕。
然後點選Project,接著點New Project
按步驟填寫最後點選Create Project建立專案。
此時組內成員都能看到這個專案已經被建立。
五、許可權說明
Guest(匿名使用者) - 建立專案、寫留言薄
Reporter(報告人)- 建立專案、寫留言薄、拉專案、下載專案、建立程式碼片
段
Developer(開發者)- 建立專案、寫留言薄、拉專案、下載專案、建立程式碼
片段、建立合併請求、建立新分支、推送不受保護的分支、移除不受保護的分
支 、建立標籤、編寫wiki
Master(管理者)- 建立專案、寫留言薄、拉專案、下載專案、建立程式碼片
段、建立合併請求、建立新分支、推送不受保護的分支、移除不受保護的分
支 、建立標籤、編寫wiki、增加團隊成員、推送受保護的分支、移除受保護
的分支、編輯專案、新增部署金鑰、配置專案鉤子
Owner(所有者)- 建立專案、寫留言薄、拉專案、下載專案、建立程式碼片
段、建立合併請求、建立新分支、推送不受保護的分支、移除不受保護的分
支 、建立標籤、編寫wiki、增加團隊成員、推送受保護的分支、移除受保護
的分支、編輯專案、新增部署金鑰、配置專案鉤子、開關公有模式、將專案轉
移到另一個名稱空間、刪除專案
六、Gitlab在eclipse中的使用
1.生成SSH key
我們用的是eclipse自帶的生成key的工具,windows->preferences->General->Network Connections->SSH2,點選SSH2。
在key management處點生成RSAkey
後面輸入key的說明和密碼,密碼也可以空著。點save private key. 把生成的key檔案存到使用者目錄的.ssh目錄下。(像第一張圖中SSH2 Home指定的目錄)
會生成兩個檔案,一個id_rsa是私鑰,一個id_rsa.pub是公鑰。
2.釋出公鑰到伺服器
用記事本開啟剛剛儲存的id_rsa.pub檔案,能看到如圖所示的類似內容,將他們複製下來。
用你的使用者登入到GitLab, Profile Settings->ssh keys->add ssh key. 給使用者新增全域性的公鑰檔案。
把剛剛複製的內容貼上到頁面上,add key。
3.相關的具體操作
1)在Eclipse中新建一個專案,此處新建測試用的專案是GitPro1
2)新建GitPro1專案的倉庫
在專案上右鍵 -> Team ->Share Project -> Git -> Next
Create->自定義倉庫名稱->Finish
在D:\Program Files\Git\GitPro1目錄下可以看到GitPro1倉庫了
同時,eclipse中的project也建立git版本控制,此時未建立分支,處於NO-HEAD狀態
資料夾中的”?”表示此資料夾處於untracked狀態,這樣就成功建立Git倉庫。
3)配置.gitignore來過濾不需要上傳的檔案
這種情況針對帶maven依賴的工程!!(因為.classpath .settings .project | clone下來時會有影響造成無法下載jar包依賴)
普通工程暫時不用過濾檔案
在工程實現過程中,會生成一些中間檔案,或者在專案中的部分檔案是不需要進行版本管理的。對於這些檔案應該對於Git來講是透明的。Git提供這種功能,可以自己指定哪些檔案可以不被管理。具體方法是在版本管理的根目錄下(與.Git資料夾同級)建立一個 .gitignore(gitignore是隱藏檔案,所以前面有個點)
右鍵工程->new file->輸入.gitignore 生成.gitignore檔案
在介面上輸入.classpath .settings .project 儲存。可以在倉庫檢視的Working Directory中看到這個檔案。此時你commit時會自動過濾掉這三類檔案。若本來工程下面就有這個檔案裡面如果有/bin/類似的文字不要刪除,直接換行新增你需要過濾的檔案。
這個在專案裡看不到,可以倉庫檢視的work
4)將專案Commit到本地倉庫
嘗試提交GitPro1專案,右鍵->Team->Commit
提示驗證資訊,將自己使用者名稱和郵箱填寫進去,點OK. 下次就不需要填寫了。
點選 Commit。我們就把上圖中status選中的檔案提交到本地git庫中了。這些檔案從此受git的版本監控了。並且提交註釋為version1.0(這個以後用到,當作狀態標記)。
接下來開啟git repositories檢視(Window->show view->other->Git->Git Repositories->OK)
此時,來看看git repositories檢視:
這個就是我們在本地git倉庫的結構。
5)修改檔案後commit
當我們修改GitTest.java的時候。檔案狀態會發生改變
選中修改過的檔案。右擊Team->commit. 提交時註釋資訊為”version 1.1”。
提交完成後,git狀態如圖
6)新增新檔案後的處理
SecondFile.java是我新建的類,“?”表示這個檔案未受git庫版本監控。要想加入監控:選中這個檔案,右擊 team > add to index. 之後commit。
7)檢視歷史提交記錄
專案->Team -> Show in history 可以檢視版本歷史提交記錄
8)Push到Gitlab
將本地的git庫中的內容push到伺服器端的遠端倉庫
專案->Team -> Remote -> Push填寫相關資訊後 -> next -> Add All Branches Specs ->Finish
Tips: URI在登陸後的Project欄點選,複製中間的地址。
填寫好後,點選next –>Add All Branches Spec->Finish.
完成後:
提示專案已經push到伺服器。
我們可以在Gitlab中點選Browse Files檢視已經上傳的程式碼。
9)使用.gitkeep來追蹤空的資料夾
Git會忽略空的資料夾。如果你想版本控制包括空資料夾,根據慣例會在空資料夾下放置.gitkeep檔案。其實對檔名沒有特定的要求。一旦一個空資料夾下有檔案後,這個資料夾就會在版本控制範圍內。
10)clone 在GitLab中已有專案
為演示,先刪除剛剛在eclipse裡建立的GitPro1專案
客戶端Eclipse上,開啟git Repositories檢視。點選 . clone a git Repository.
輸入資訊後點擊next,我們會看到服務端git庫的分支master出現了
Next
點選Finish. 我們的clone就完成了。
現在在自己的工作空間建立了伺服器端的專案。
克隆伺服器端倉庫後,會在本地建立一個一樣的倉庫,稱本地倉庫。
如果clone帶有過濾檔案的maven+git工程時,clone下來時是無法直接到工作空間的。需要從倉庫視圖裡匯入。
當clone下來帶有過濾後的Maven+git工程時在git倉庫檢視右鍵—>Import projects—>Import as general project—>next—>finish,此時eclipse工作空間就匯入了專案,但現在是沒有maven的,右鍵工程—>Configure—>Convert to maven project,現在工作空間的工程就是一個完整的maven+git工程了。
11)新建自己的分支進行開發並push到遠端分支
Team->Switch To->New Branch
此時,剛剛clone下來的分支已經切換成自己的分支,我們就能在自己的分支上任意開發了
在自己分支上開發,修改檔案並commit提交到本地倉庫。
接下來要push到遠端的新建分支
Team->Remote->push->Next->Add Spec->Next->Finish
成功將自己修改後的程式碼提交到遠端新建的自己的分支
現在在Gitlab上就能看到兩個分支,一個master主分支(保護狀態,developer無法push)和yjx新建分支
12)新建分支與master分支進行合併請求(Merge Request)
登陸自己的Gitlab賬戶。點選Project或進入工程點選Branch會看到建立合併請求的標籤:
.
點選Merge Request
此時,管理員登陸Gitlab後點左側Projects->GitPro1->Merge Requests
管理員任何新建分支提交的程式碼,審閱後沒有問題的情況下點選Accept Merge Request
此時我們看到合併到master分支後的情況
Tips: matser使用者可以直接push到master分支。Developer無法直接push到受保護的master分支,必須先建立自己的分支,再提交,推送,請求合併。
13)退回歷史版本
遠端倉庫和本地倉庫都存放有我們提交的每一個歷史版本。
開啟工程的歷史,在要退回的歷史版本上右鍵reset->Hard->yes,工程就退回歷史版本了
14)推送衝突的解決
對於master使用者來說:
假定咱們clone到本地的工程分支保持不變是1.1版本,但是伺服器遠端分支已經被更新到1.3版本了,此時就會產生衝突,無法提交:
此時我們要將工程pull到最新 team->pull將遠端的修改pull到本地git庫:
點ok。你回發現工作空間的專案出現衝突的標誌。
此時,選擇衝突的檔案GitTest.java右擊,Team > merge tool .
選擇第二項,ok。
根據比較修改左邊的檔案,也就是你工作空間中的檔案。解決完衝突之後。儲存。如圖狀態。
現在你可以提交這個檔案了。選中GitTest.java 右擊team > add to index .
此時工作空間中的圖示有所變化。
當出現灰色的雪花符號時,你就可以進行提交併 push到伺服器端。
commit 狀態
之後,push。
現在成功push
15)自建分支開發前獲取遠端master更新並與本地合併
作為developer使用者在自己的分支上先右鍵->fetch from upstream將遠端master分支的最新版本更新到本地,ok。 接著右鍵->team->merge ,如圖選擇下面遠端倉庫的master分支,Merge,選擇最新的版本,點ok,則當前自己的分支已更新到遠端master分支同步。
Merge之後當前分支已經和伺服器端遠端倉庫的master分支一致了,就可以繼續開發了。
16)自建工程push到遠端後本地git沒有遠端追蹤的解決方案
這種情況發生在我們自己建立的工程,並且在該工程下繼續開發時。本地新建工程後
進行commit-push,將程式碼推送到伺服器端後,會發現本地git檢視的遠端追蹤是空的,只有本地追蹤。此時,如果有人蔘與該工程,並且遠端分支修改,你需要fetch時,在IDE中時無法操作拉遠端分支的。
如何解決這個問題?我們切到git倉庫檢視,在下圖中的Remotes倉庫的小圖示上右鍵,點選Create Remote,再點選configure fetch,點ok。
然後將伺服器web端的工程URL貼上在下圖中,並填上主機地址。點finish。接下來再點選左下角的save and fetch。然後大功告成,最後一張圖中我們就看到方框中遠端追蹤已經出現了,接下來你就可以任意的fetch遠端分支了。