Git簡介及GitLab使用
1、Git Bash 安裝
Git使用的版本為1.9.4,由于我的服務(wù)器上的gitlab是1.7的,客戶端要不服務(wù)真?zhèn)€版本要高才可以。
下載地址:https://git-scm.com/download
雙擊Git⑴.9.4-preview20140611.exe文件,進入安裝界面,以下圖:
2. 兩步next后選擇安裝目錄,以下圖:
3.next進入Git安裝模塊選擇
4. next進入Git Setup界面,“Adjusting your PATH environment”,選擇默許值“Use Git Bash only”,以下圖所示:
5. next進入Git Setup界面,“Configuring the line ending conversions”,選擇換行格式,選擇“Checkout as-is, commit Unix-style line endings”,以下圖所示:
2、GitLab使用說明
2.1新建項目
新建項目前,先創(chuàng)建項目所在的組(也就是說這個項目文件是保存在哪一個組里)
1. 選擇Admin area,選擇Groups——New Group
2.填寫組名及相干信息(Groups1定要與Teams名稱1致)
3. 選擇Create New Projcet
輸入項目名稱,同時在namespace里選擇剛才創(chuàng)建的組
2.2創(chuàng)建用戶
1. 選擇Admin area 選擇Users——New User
2.其中Name為對方的中文名(或英文或拼音,能讓其他人辨認便可,例如:張3、zhangsan),Username使用郵箱的前綴(登錄gitlab的用戶名),Email為公司郵箱(這個依照公司規(guī)定來,不1定非得依照我這樣方法)
3. 密碼盡可能選擇復雜、帶有特殊字符10個以上的,最好使用隨機生成的密碼,用戶名和密碼會發(fā)送到對方郵箱
4. 項目現(xiàn)在默許便可,并且把Can create group與Can create team給取消默許的勾選
5. 下面信息默許不輸入
6. 信息輸入完成后,選擇Create user;
2.3重置用戶密碼
1. 選擇Admin area,選擇User下面的數(shù)字
2. 然后選擇User下面的Edit,找到Password項就能夠重置密碼了;
2.4賦予用戶項目權(quán)限
1.選擇Admin area ,選擇Teams
2. 輸入組名與信息,點擊“Create team”
3.先增加這個組可以對哪些項目有甚么權(quán)限,選擇Add projects
在左邊的Projcet name里可以選擇你當前gitlab已存在的項目
在右邊的Max access選擇此組對這個項目最大能有甚么權(quán)限,默許選擇Developer
關(guān)于這些權(quán)限的介紹
Guest
? Create new issue
? Leave comments
? Write on project wall
Reporter
? Create new issue
? Leave comments
? Write on project wall
? Pull project code
? Download project
? Create a code snippets
Developer
? Create new issue
? Leave comments
? Write on project wall
? Pull project code
? Download project
? Create new merge request
? Create a code snippets
? Create new branches
? Push to non-protected branches
? Remove non-protected branches
? Add tags
? Write a wiki
Master
? Create new issue
? Leave comments
? Write on project wall
? Pull project code
? Download project
? Create new merge request
? Create a code snippets
? Create new branches
? Push to non-protected branches
? Remove non-protected branches
? Add tags
? Write a wiki
? Add new team members
? Push to protected branches
? Remove protected branches
? Push with force option
? Edit project
? Add Deploy Keys to project
? Configure Project Hooks
Owner
? Transfer project to another namespace
? Remove project
如果,不存在此目錄,則進行第2步操作,否則,你本機已存在ssh公鑰和私鑰,可以略過第2步,直接進入第3步操作。
第2步、創(chuàng)建1對新的SSH密鑰(keys)
輸入以下命令:
$ssh-keygen -t rsa -C “your_email@example.com”
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter] 注:此處直接回車
直接回車,則將密鑰按默許文件進行存儲。此時也能夠輸入特定的文件名,比如/c/Users/you/.ssh/gitlab_rsa
接著,根據(jù)提示,你需要輸入密碼和確認密碼。
注:如果輸入了密碼,則每次提交代碼是都需要輸入該密碼,所以直接回車,不設(shè)置密碼
相干提示以下:
Enter passphrase (empty for no passphrase): [Type a passphrase] 回車
Enter same passphrase again: [Type passphrase again] 回車
輸入完成以后,屏幕會顯示以下信息:
Your identification has been saved in /c/Users/you/.ssh/id_rsa.
Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com
注:這些密鑰要保存好,密鑰文件不要隨便刪除。
第3步、在web賬戶中添加公鑰
登錄web賬號,點擊My Profile–SSH Keys–Add new
將本機文件/C/Users/you/.ssh/id_rsa.pub使用文本編輯器打開,把文件內(nèi)容copy出來,粘貼你的密鑰到key輸入框中
點擊“Save”按鈕;
第4步、測試
為了確認我們可以通過SSH連接web,我們輸入下面命令。輸入后,會要求我們提供驗證密碼,輸入之前創(chuàng)建的密碼就ok了。
$ssh -T git@git.olymtech.com
你可能會看到告警信息,以下:
The authenticity of host ‘git.olymtech.com (121.41.43.201)’ can’t be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
不用擔心,直接輸入yes。
如果看到下面信息,就說明1切完善!
Hi username! You’ve successfully authenticated, but git.olymtech.com does not provide shell access.
2.7另外1種管理項目的方式
第1步:創(chuàng)建工程,選擇namespace
Namespace這個選擇是用來決定這個工程所屬的,可以選User為你自己,或選擇組,這個會影響到后面工程的url。:
a. Global:則表示該工程所在目錄是/home/git/repositories/
b. Groups:則表示該工程所在目錄是/home/git/repositories/
URI: git@mygit.com:
c. Users:則表示該工程所在目錄是/home/git/repositories/
URI:git@mygit.com:
工程創(chuàng)建好了以后需要設(shè)置Team Member,即對該工程有權(quán)限的用戶
第2步:在該工程的home頁的右側(cè)有“Team Member”按鈕,以下圖:
第3步:點擊“New Team Member”按鈕,進入設(shè)置頁面,以下圖:
第4步:用戶選擇成功后,會返回前1頁,顯示該項目中的團隊成員列表,同時在此界面還可以直接修改用戶的權(quán)限,以下圖:
或是Admin area – Projects –找到該工程,進入,會看到“Edit Team”的按鈕
接下來的操作同上第3步
注:若A用戶創(chuàng)建了工程P,而未將B用戶放入工程P的Team中,B用戶是看不到工程P的;若B用戶想要對工程P履行clone、pull、push操作,必須設(shè)置B用戶為Developer權(quán)限;
3、Eclispe使用說明
3.1 Eclipse Git相干配置
在使用git之前你需要配置1下用戶名和郵箱,這項配置很重要,每次 Git 提交時都會援用這兩條信息,說明是誰提交了更新,所以會隨更新內(nèi)容1起被永久納入歷史記錄
Window->Preferences->Team->Git->Configuration
點擊“Add Entry”,添加user.name
點擊“OK”,再次點擊“Add Entry”,添加user.email
為了辨認方便,1般此處的user.name填寫姓名;user.email為公司郵箱;
這樣name和email就設(shè)置好了
3.2 本地添加Git工程
右鍵Import,選擇Git—Projects from Git
點擊Next,選擇Clone URI;
點擊Next,將gitlab中該項目的ssh地址復制到URI中,
點擊Next
點擊Next
點擊Next
點擊Next
點擊Finish,就將服務(wù)器上的工程clone到本地了。
3.3 Git commit
點擊項目右鍵team->commit(項目添加到本地倉庫)
進入以下界面
提交指南:
a. 請將每次提交限定于完成1次邏輯功能。并且可能的話,適當?shù)胤纸鉃閷掖涡「?,以便每次小型提交都更容易于理解。請不要在周末窮追猛打1次性解決5個問題,而最后拖到周1再提交。
b. 需要謹記的是提交說明的撰寫。寫得好可讓大家協(xié)作起來更輕松。1般來講,提交說明最好限制在1行之內(nèi),50 個字符以下,簡明扼要地描寫更新內(nèi)容,空開1行后,再展開詳細注解。Git 項目本身需要開發(fā)者撰寫詳實注解,包括本次修訂的因由,和前后不同實現(xiàn)之間的比較,我們也該鑒戒這類做法。
c. .gitignore文件(可以手動在項目下創(chuàng)建該文件),把要疏忽的文件名填進去,Git就會自動疏忽這些文件;
疏忽文件的原則是:
1.疏忽操作系統(tǒng)自動生成的文件,比如縮略圖等;
2.疏忽編譯生成的中間文件、可履行文件等,也就是如果1個文件是通過另外一個文件自動生成的,那自動生成的文件就沒必要放進版本庫,比如Java編譯產(chǎn)生的.class文件;
3.疏忽你自己的帶有敏感信息的配置文件,比如寄存口令的配置文件。
注:.gitignore文件只對還沒有加入版本管理的文件起作用,如果之前已用git把這些文件納入了版本庫,就不起作用了
解決方法:需要在git庫中刪除該文件,并更新。
3.4 Git push
項目右鍵team->remote->push(將項目提交到遠程倉庫)
點擊Next
注:如果勾選force update,則表示覆蓋提交,請勿勾選
點擊Next
如果在提交時有紅色沖突提示,以下圖:
此時必須先更新,解決掉沖突后再提交
如果沒有沖突,點擊Finish
3.5 Git pull
如果項目要提交到遠程倉庫,應(yīng)先從遠程倉庫拉取更新:team->pull,如果沒有沖突,進行push;若有沖突,要先解決沖突后再進行提交;
解決沖突:
沖突的地方1般使用“<<<<”,“======”,“>>>>>”標記出不同分支的內(nèi)容,這類情況需要熟習這段代碼,最好是原作者坐在1起共同修改,將修改好的文件,右鍵點擊此沖突文件,選擇Team -> Add to index再次將文件加入索引控制,此時文件已不是沖突狀態(tài),并且可以進行commit并push到服務(wù)器端
3.6 創(chuàng)建分支
項目名稱右鍵team->Switch to -> new Branch
分支的命名規(guī)則使用小駝峰式命名法,不要使用特殊字符,不要使用點。
3.7 Git merge
項目名稱右鍵team->merge
由于master和dev分支都對同1個文件進行了修改,所以點擊“Merge”按鈕時,會彈出以下提示框:
選擇將合并結(jié)果輸入的文件;任何包括未解決沖突的文件都會以未合并(unmerged)的狀態(tài)列出。Git 會在有沖突的文件里加入標準的沖突解決標記,可以通過它們來手工定位并解決這些沖突。
在實際開發(fā)中,我們應(yīng)當依照幾個基本原則進行分支管理:
首先,master分支應(yīng)當是非常穩(wěn)定的,也就是僅用來發(fā)布新版本,平時不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是說,dev分支是不穩(wěn)定的,到某個時候,比如1.0版本發(fā)布時,再把dev分支合并到master上,在master分支發(fā)布1.0版本;
你和你的小火伴們每一個人都在dev分支上干活,每一個人都有自己的分支,時不時地往dev分支上合并就能夠了。
master分支是主分支,因此要時刻與遠程同步;
dev分支是開發(fā)分支,團隊所有成員都需要在上面工作,所以也需要與遠程同步;
如果為修改1個bug,可以創(chuàng)建本地分支,就沒必要推到遠程了,修復后,合并分支,然后將臨時分支刪除便可。
注:Eclipse中新建的工程名稱必須與GitLab中的工程名相同,才能成功push到遠程服務(wù)器上
4、git 命令說明
請參考:http://gitref.org/zh/
5、代碼統(tǒng)計
統(tǒng)計某段時間內(nèi)添加或修改的代碼行數(shù)(將項目代碼更新到本地,使用git bash進入項目目錄下,履行以下命令)
git log –since=1.weeks.ago –until=today –stat | perl -ne ‘END{print c}c+=