對于開發(fā)人員來說,一個團隊一起開發(fā),那么肯定會涉及到團隊協(xié)作開發(fā),這個時候版本管理工具就起了很大的作用,今天我們就來說說超強版本管理工具git應(yīng)該怎么用才最好,怎么用能最大程度保證master分支代碼的干凈。
首先,Git是一個開源的分布式的版本控制系統(tǒng),作為代碼的版本控制,可以自己搭建gitlab服務(wù)器,一般公司都有自己的gitlab服務(wù)器,開發(fā)人員的代碼最終都會提交到這個服務(wù)器的倉庫中,也就是我們常說的遠程倉庫。當(dāng)然,如果是自己學(xué)習(xí),可以直接使用github服務(wù)器倉庫作為遠程倉庫,但是github是開源的,所以代碼也是公開的,除非花錢買private倉庫。
一、常用的git命令
git clone git@gitlab.com ——克隆遠程倉庫項目代碼
git checkout -b new-branch ——創(chuàng)建一個new-branch分支并切換至new-branch分支
git add file ——把file添加進版本管理
git commit -m "備注" ——提交修改的代碼
git checkout master ——切換至master分支
git merge new-branch ——合并分支new-branch到當(dāng)前分支
git push origin master ——本地master分支變更推到遠程master
git pull origin master ——拉取遠程master分支并合并至當(dāng)前分支
git pull origin --tags ——把遠程tag更新至本地
git tag -a tag-name -m "備注" ——創(chuàng)建一個tag名為tag-name
git push origin tag-name ——把tag-name推到遠程倉庫
git branch ——列出本地所有分支
git branch -d new-branch ——刪除本地分支new-branch
想了一下,平時最常用的也就這些命令了,根據(jù)不同的使用方式,可能每個人的常見使用命令不同,小編自己大概就使用這些,有些用的很少的就沒有列出來了。下面我們看看一般情況下怎么使用。
二、一般情況使用
加入一個項目組,正式開始開發(fā),一般有以下幾個步驟:
1、git clone git@gitlab.com ——使用git clone克隆遠程項目到本地,克隆到本地后只有一個分支master
2、git checkout -b test ——本地創(chuàng)建一個test分支并為測試環(huán)境代碼分支并切換至test,這里根據(jù)原項目倉庫的測試環(huán)境代碼分支命名,有些使用dev,這里假定原項目測試環(huán)境代碼分支為test,測試test分支代碼跟master分支代碼相同
3、git pull origin test ——拉取遠程test分支代碼并合并到本地test分支,經(jīng)過本步操作,本地test分支就是測試環(huán)境代碼了,以后開發(fā)分支的代碼都要先合并到test分支推到遠程測試環(huán)境經(jīng)過測試后才能進行線上部署
4、git checkout master ——再切回master分支
5、git checkout -b develop-branch ——創(chuàng)建開發(fā)分支develop-branch并切換至develop-branch分支,這一步就是要進入開發(fā)了,一個需求一個開發(fā)分支,直到功能開發(fā)完畢
6、git add new_file.php ——把開發(fā)過程中新建的文件添加進版本管理
7、git commit -m '備注' ——提交所有變更
8、git checkout test ——切換至測試分支
9、git merge develop-branch ——合并新開發(fā)的變更到test分支
10、git push origin test ——test推到遠程分支,此時測試環(huán)境可以拉取test分支代碼,然后進行測試
11、git checkout master && git merge develop-branch ——測試通過后,切換到master分支然后合并develop-branch到master分支
12、git push origin master ——master分支推到遠程倉庫,進行后續(xù)的部署上線
三、推薦方式、tag的使用
master分支是部署上線的代碼分支,是一個很重的分支,因此不能隨便就把代碼合并進去,必須經(jīng)過驗證,確保代碼沒有問題后才能合進master分支。下面我們使用tag代替master進行上線部署:
截止發(fā)布到測試環(huán)境中及之前,與上面(二)中的過程是一樣的,只是在后面上線時有所不同,我們接著上面的10、git push origin test 之后開始:
11、git pull origin --tags ——拉取遠程tag到本地,最新的tag拉取下來
12、git checkout master ——切換至master分支
13、git merge develop-branch ——合并新開發(fā)的代碼分支到master,注意不要推到遠程master分支去
14、git tag -a project-v-1.0.1-username-201910251425 -m '第一次需求' ——創(chuàng)建一個tag,這里注意了,tag名字最好有規(guī)律一點,可以自定義版本號,一直遞增,每個開發(fā)人員使用不同的username,很好的標識了是那個開發(fā)人員的tag,再寫上日期就很清晰了;這里可以自己體會一下,仁者見仁,智者見智。
15、git push origin project-v-1.0.1-username-201910251425 ——把新創(chuàng)建的tag推向遠程,千萬不要把master推到遠程去
接下來,我們就可以通過指定的tag進行上線部署,線上部署完成后,要經(jīng)過線上驗證:(1)如果功能正常,這時候就可以把master分支推到遠程去了,別人拉取master代碼也是經(jīng)過線上驗證的。(2)如果功能異常,線上代碼回滾,這時候也不用操心master分支代碼會被他人拉取,因為沒有推到遠程,所以沒有任何影響。那代碼回滾后需要注意的是,為了避免混淆,回滾的那個tag需要刪除掉,本地master也reset到之前的tag后,開發(fā)分支重新修改提交測試后要重新創(chuàng)建tag推到遠程去,再進行上面的步驟即可。