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