Git與Gitlab

一.git與svn核心區別

git是分佈式的

svn,cvs等:非分佈式的版本控制系統

git更傾向被用於分佈式模式,也就是每個開發人員從中心版本庫/服務器上檢出代碼後會在自己的機器上克隆一個自己的版本庫。

可以這樣說,如果你被困在一個不能連接網絡的地方時,就像在飛機上,地下室,電梯裡等,你仍然能夠提交文件,查看歷史版本記錄,創建項目分支,等。對一些人來說,這好像沒多大用處,但當你突然遇到沒有網絡的環境時,這個將解決你的大麻煩。

2.git分支和svn的分支不同

分支在svn中一點不特別,就是版本庫中的另外的一個目錄。如果你想知道是否合併了一個分支,你需要手工運行命令,來確認代碼是否被合併。

然而,處理git的分支卻是相當的簡單和有趣。你可以從同一個工作目錄下快速的在幾個分支間切換。你很容易發現未被合併的分支,你能簡單而快捷的合併這些文件。

二、權限管理

我們的代碼之前是託管在公司的svn上, 現在是託管在公司的gitlab上.

具體的步驟是這樣子:

用戶訪問公司gitlab地址master權限用戶給其他用戶添加添加權限用戶安裝git or git客戶端用戶添加ssh

項目權限

private 私有, 項目必須顯式地為每個用戶訪問權授予。internal 內部, 任何登錄用戶都可以克隆這個項目。public 共有, 所有用戶都可以看到這個項目

用戶權限

guest 只能提issuereporter 可以看文件, 不能上傳任何修改developer 可以看, 可以上傳developer分支的修改, 可以建分支, 可以刪遠程分支. 不能上傳master分支的修改master 都可以

wiki權限

guest 只能看reporter 只能看developer 可以增改頁面, 但是不能刪除頁面master 可以增刪改

我先是為我們團隊建立了一個group, 然後默認所有人都是guest權限, 然後再單獨為每個項目為相關的開發開通developer權限, 為部分開發開通了master權限, 讓他們也可以自己分配自己的項目內的權限.

三、遷移

將舊代碼遷移到新平臺gitlab.yeepay.com.

遷移的時候, 凍結svn, 告知所有小夥伴禁止在svn上提交代碼, 今後統一換成git.

四、常用命令:

1、克隆git

git clone git@gitlab.yeepay.com:yce-pro/yce-pro101.git

2、創建新git

git clone git@gitlab.yeepay.com:yce-pro/yce-pro101.git cd yce-pro101

touch README.md

git add README.md git commit -m "add README" git push -u origin master

3、本地建git庫

cd existing_folder

git init git remote add origin git@gitlab.yeepay.com:yce-pro/yce-pro101.git

git add .

git commit -m "Initial commit"

git push -u origin master

4、已存在的git庫

cd existing_repo

git remote rename origin old-origin

git remote add origin git@gitlab.yeepay.com:yce-pro/yce-pro101.git

git push -u origin --all

git push -u origin --tags

5

、查看git log

git log --pretty=format:"%h %s" --graph

在提交了若干更新之後,又或者克隆了某個項目,想回顧下提交歷史,可以使用 git log 命令查看。默認不用任何參數的話,git log會按提交時間列出所有的更新,最近的更新排在最上面。

6、git庫代碼回滾

git reset --hard 2c64fb30

git push origin HEAD --force

但要注意:master分支是不允許push回滾後的代碼到遠程庫的,原因是它被默認保護了,只有解除保護,才可push

切換分支

7、克隆指定分支到本地:

git clone -b 分支名 git庫地址

例子:

git clone -b release/rev1.0 git@gitlab.yeepay.com:git_test/git_test2.git

8、切換git分支

git checkout分支名

9、創建並切換git分支

git checkout -b分支名

10、刪除git分支

git branch -D分支名