SVN(集中式版本控制系統(tǒng))
中央服務(wù)器是完整的,commit動(dòng)作直接連接服務(wù)器執(zhí)行
GIT(分布式版本控制系統(tǒng))
都是完整的,功能更強(qiáng)大,自然而然操作更復(fù)雜一些。git在本地也是以git版本庫的形式管理,可以在本地做一些修改,然后commit到本地的版本庫,最后push到服務(wù)器。
還有啥呢,如CVS、VSS....但和SVN一樣都是單一的集中管理的服務(wù)器,保存所有文件的修訂版本,而協(xié)同工作的人們都通過客戶端連到這臺(tái)服務(wù)器,取出最新的文件或者提交更新。(沒用過,了解也不多)
工作區(qū)間: 即我們創(chuàng)建的工程文件, 在編輯器可直觀顯示;
緩存區(qū): 只能通過git GUI或git shell 窗口顯示,提交代碼、解決沖突的中轉(zhuǎn)站;
本地倉庫: 只能在git shell 窗口顯示,連接本地代碼跟遠(yuǎn)程代碼的樞紐,不能聯(lián)網(wǎng)時(shí)本地代碼可先提交至該處;
遠(yuǎn)程倉庫: 即保存我們代碼的服務(wù)器,本文以公共版本控制系統(tǒng):gitlab為例,登錄gitlab賬號(hào)后可直觀顯示;
淺談下我們實(shí)際場(chǎng)景常用的命令吧
1、配置
#配置郵箱 git config --global user.email "你的郵箱" #配置用戶名 git config --global user.name "你的用戶名" #生成SSH秘鑰 ssh-keygen -t rsa -C "你的郵箱" #查看所有的配置信息 git config -l #更針對(duì)性的 git config --system -l git config --local -l git config --global -l #查看遠(yuǎn)程庫信息 git remote -v #移除遠(yuǎn)程地址信息 git remote remove origin #添加新的地址: git remote add origin 遠(yuǎn)程路徑 #直接修改遠(yuǎn)程倉庫指向地址 git remote set-url origin 遠(yuǎn)程路徑 #編輯模式修改 git config -e #設(shè)置記住密碼(默認(rèn)15分鐘) git config --global credential.helper cache #設(shè)置記住密碼時(shí)間 git config credential.helper 'cache --timeout=3600' #永久保存密碼 git config --global credential.helper store #清除密碼 git config --system --unset credential.helper
2、常用命令
#列一下容易遇到需要使用的吧 #拷貝一份遠(yuǎn)程倉庫,也就是下載一個(gè)項(xiàng)目。 git clone #添加文件到暫存區(qū) git add #將暫存區(qū)內(nèi)容添加到倉庫中 git commit #想修改注釋,輸入以下命令,會(huì)進(jìn)入默認(rèn)vim編輯器,修改注釋完畢后保存就好了 git commit --amend #刪除工作區(qū)文件。 git rm #將文件從暫存區(qū)和工作區(qū)中刪除 git rm#如果刪除之前修改過并且已經(jīng)放到暫存區(qū)域的話,則必須要用強(qiáng)制刪除選項(xiàng) -f git rm -f #想把文件從暫存區(qū)域移除,但仍然希望保留在當(dāng)前工作目錄中 git rm --cached #移動(dòng)或重命名工作區(qū)文件。 git mv [file] [newfile] #從遠(yuǎn)程獲取代碼庫 git fetch #下載遠(yuǎn)程代碼并合并 git pull #拉取遠(yuǎn)程master和本地matser合并 git pull origin master #拉取遠(yuǎn)程的master到本地的dev git pull origin master:dev #上傳遠(yuǎn)程代碼并合并 git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名> #如果本地版本與遠(yuǎn)程版本有差異,但又要強(qiáng)制推送可以使用 --force 參數(shù) git push --force origin master #合并 git merge #刪除本地分支xxx 刪除分支前先切換到其他分支 git checkout dev git branch -D tmp #刪除遠(yuǎn)程分支XXX git push origin --delete XXX #查看倉庫當(dāng)前的狀態(tài),顯示有變更的文件。 git status #比較文件的不同,即暫存區(qū)和工作區(qū)的差異。 git diff #顯示暫存區(qū)和工作區(qū)的差異 git diff [file] #顯示暫存區(qū)和上一次提交(commit)的差異 git diff --cached [file] git diff --staged [file] #查看歷史提交記錄 git log #--pretty=oneline #更簡(jiǎn)潔的查看 git reflog #以列表形式查看指定文件的歷史修改記錄 git blame #回退版本。 #--soft 不刪除工作空間改動(dòng)代碼,撤銷commit,不撤銷git add . #--hard 刪除工作空間改動(dòng)代碼,撤銷commit,撤銷git add . git reset #回退到上一個(gè)版本 git reset --hard HEAD^ #回退到上上一個(gè)版本(更多以此類推) git reset --hard HEAD^^ #回退版本也可以寫成HEAD~1、HEAD~2.... git reset --hard HEAD~2 #指定版本號(hào)回退 git reset --hard 930c4a7a #查看分支列表 git branch git branch -r git branch -a #挑揀提交 git cherry-pick #誤刪怎么辦 git checkout -- test.txt #創(chuàng)建本地tag git tag #推送到遠(yuǎn)程倉庫 git push origin #一次全部推送本地未推送的標(biāo)簽 git push origin --tags #執(zhí)行存儲(chǔ)時(shí),添加備注,方便查找,只有g(shù)it stash 也是可以的,但查找時(shí)不方便識(shí)別 git stash save "save message" #查看stash了哪些存儲(chǔ) git stash list #命令恢復(fù)之前緩存的工作目錄 git stash pop #應(yīng)用某個(gè)存儲(chǔ),但不會(huì)把存儲(chǔ)從存儲(chǔ)列表中刪除,默認(rèn)使用第一個(gè)存儲(chǔ),即stash@{0} git stash apply #丟棄stash@{$num}存儲(chǔ),從列表中刪除這個(gè)存儲(chǔ) git stash drop #刪除所有緩存的stash git stash clear
3、一些輔助操作
git config --global alias.co checkout git config --global alias.ci commit ....... git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgree
n(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
目錄中新建了一個(gè).gitignore文件,將想要忽略的文件或者目錄保存即可
聊一聊分支設(shè)計(jì)的規(guī)范(良好習(xí)慣的養(yǎng)成)
明確一點(diǎn):規(guī)范是死的,人是活的,再好的規(guī)范也要團(tuán)隊(duì)適合,并且需要團(tuán)隊(duì)成員去遵循,沒有一成不變的規(guī)范
1、軟件環(huán)境
DEV 環(huán)境(Development environment):用于開發(fā)者調(diào)試使用。
FAT 環(huán)境(Feature Acceptance Test environment):功能驗(yàn)收測(cè)試環(huán)境,用于測(cè)試環(huán)境下的軟件測(cè)試者測(cè)試使用。
UAT 環(huán)境(User Acceptance Test environment):用戶驗(yàn)收測(cè)試環(huán)境,用于生產(chǎn)環(huán)境下的軟件測(cè)試者測(cè)試使用。
PRO 環(huán)境(Production environment):就是生產(chǎn)環(huán)境。
2、分支命名
分支 | 名稱 | 環(huán)境 | 可訪問 |
---|---|---|---|
master | 主分支 | PRO | 是 |
release | 預(yù)上線分支 | UAT | 是 |
hotfix | 緊急修復(fù)分支 | DEV | 否 |
develop | 測(cè)試分支 | FAT | 是 |
feature | 需求開發(fā)分支 | DEV | 否 |
master 分支
master為主分支,用于部署到正式環(huán)境(PRO),一般由release或hotfix分支合并,任何情況下不允許直接在 master 分支上修改代碼。
release 分支(一般在發(fā)布日由運(yùn)維創(chuàng)建,我們公司目前是常駐的pre-production)
release為預(yù)上線分支,用于部署到預(yù)上線環(huán)境(UAT),始終保持與master分支一致,一般由develop或hotfix分支合并,不建議直接在release分支上直接修改代碼。
如果在release分支測(cè)試出問題,需要回歸驗(yàn)證develop分支看否存在此問題。
hotfix /repair 分支
hotfix為緊急修復(fù)分支,命名規(guī)則為hotfix-開頭。
當(dāng)線上出現(xiàn)緊急問題需要馬上修復(fù)時(shí),需要基于release或master分支創(chuàng)建hotfix分支,修復(fù)完成后,再合并到release或develop分支,一旦修復(fù)上線,便將其刪除。
develop 分支
develop為測(cè)試分支,用于部署到測(cè)試環(huán)境(FAT),始終保持最新完成以及 bug 修復(fù)后的代碼,可根據(jù)需求大小程度確定是由feature分支合并,還是直接在上面開發(fā)。(注:在我們公司不建議直接上面修改)
一定是滿足測(cè)試的代碼才能往上面合并或提交。
feature 分支(我們公司以迭代代號(hào)創(chuàng)建)
feature為需求開發(fā)分支,命名規(guī)則為feature-開頭,一旦該需求上線,便將其刪除(但可以按照公司習(xí)慣,比如刪除一個(gè)月以前的.....)。
commit提交規(guī)范
提交的信息很重要,可以方便我們查閱日志,建議大家認(rèn)真填寫,可以參考規(guī)范:(如下)
type表示 動(dòng)作類型,可分為:
fix:修復(fù) xxx Bug,有時(shí)可在相關(guān)commit上加上修復(fù)的bug的等級(jí)
Blocker (中斷) : 客戶端程序無響應(yīng),無法執(zhí)行下一步操作 Critical (嚴(yán)重):功能點(diǎn)缺失 Major (較嚴(yán)重):功能點(diǎn)沒有滿足需求 Normal (普通):數(shù)值計(jì)算錯(cuò)誤,js錯(cuò)誤 Minor (次要):界面UI與需求不符 Trivial (輕微):輔助描述說明不清楚,提示語句錯(cuò)誤之類…
feat:新增 xxx 功能
test:調(diào)試 xxx 功能
style:變更 xxx 代碼格式或注釋
docs:變更 xxx 文檔
refactor:重構(gòu) xxx 功能或方法
chore:構(gòu)建過程或輔助工具的變動(dòng),比如項(xiàng)目新加了別的js插件之類的
scope表示 影響范圍,可分為:模塊、類庫、方法等。
subject表示 簡(jiǎn)短描述,最好不要超過 60 個(gè)字。
如 git commit -m 'fix(購物車):滿增滿減活動(dòng)返回結(jié)算價(jià)因浮點(diǎn)問題導(dǎo)致不精準(zhǔn)問題'
-
控制系統(tǒng)
+關(guān)注
關(guān)注
41文章
6509瀏覽量
110384 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
8958瀏覽量
85085 -
Git
+關(guān)注
關(guān)注
0文章
196瀏覽量
15720
原文標(biāo)題:Git: 說說我們的版本控制^o^實(shí)用干貨篇
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論