Redis底層資料結構詳解
1、版本控制
-
概念
-
用於管理多人協同開發的技術
-
版本控制是在我們開發的過程中用於管理我們的檔案、目錄或工程等內容的修改歷史,方便檢視歷史更改記錄,備份以便恢復以前的版本的軟體工程技術。
-
-
優點
-
實現跨區域多人協同開發
-
追蹤和記載一個或者多個檔案的歷史記錄
-
組織和保護原始碼和文件
-
統計工作量
-
並行開發,提高開發效率
-
跟蹤記錄整個軟體的開發過程
-
減輕開發人員的負擔,節省時間,同時降低人為錯誤
-
-
常見的版本控制工具
-
Git
-
SVN(Subversion):版本控制
-
CVS(Concurrent Versions System):併發版本系統
-
VSS(Microsoft Visual Sourcesafe)
-
TFS(Team Foundation Server):團隊基本伺服器
-
Visual Studio Online
-
-
版本控制分類
-
本地版本控制
-
記錄檔案每次的更新,可以對每個版本做一個快照或是記錄補丁檔案,適合個人用,如RCS
-
缺點:
不能實現團隊合作
-
-
集中版本控制:SVN
-
所有的版本控制都儲存在伺服器上,協同開發者從容器上同步更新或上傳自己的修改
-
缺點:
-
所有的版本資料都在伺服器上,使用者的本地只有自己以前所同步的版本,如果不聯網的話,使用者看不到歷史版本,也無法更新最新版本或在不同分支合作
-
所有的資料都儲存在單一伺服器上,有很大的資料丟失的風險
-
-
-
分散式版本控制:Git
-
所有的版本資訊倉庫全部同步到使用者本地上,這樣就可以在本地檢視所有的歷史版本,可以離線在本地提交,只需在聯網時push到相應的伺服器或其他使用者那裡
-
只要有一個使用者的資料沒有問題就可以恢復所有的資料
-
缺點:
增加了本地儲存空間的佔用
-
-
-
Git和SVN區別
-
SVN
-
集中式版本控制系統
-
版本庫集中放在中央伺服器
-
聯網才能工作
-
協同工作時,首先從中央伺服器上獲得最新的版本,完成工作後,把最新的版本推送到中央伺服器,對方從伺服器上下載新版本,才能看到修改
-
-
Git
-
分散式版本控制系統
-
沒有中央伺服器,每個人的電腦就是版本庫
-
不需聯網
-
協同工作時,若修改了檔案,只需把新版本推送給對方,對方就可以看到修改,無需推送到伺服器
-
-
2、Git的歷史
-
Linux 和 Git之父:李納斯·託沃茲
-
李納斯·託沃茲 創造了Linux系統後,在1991 - 2002 年期間,整個Linux核心維護工作都花在了提交補丁和儲存歸檔這些繁瑣的事情上。
-
2002年,整個專案組開始啟用一個專門的分散式版本控制系統,BitKeeper來管理和維護程式碼
-
2005年,Linux核心開源社群和BitKeeper的公司合作關係結束後,李納斯·託沃茲用了兩週的時間開發出了自己的版本系統,也就是Git
3、Git的安裝及配置
-
下載
-
Git官網
-
淘寶映象:
-
-
解除安裝:(以前安裝過可解除安裝)
-
控制面板,解除安裝
-
清除環境變數
-
-
安裝
-
無腦 next 即可
-
注意兩點:
-
安裝地址,儘量不要安裝到C盤
-
有個文件編輯器,可選擇自己電腦上安裝的編輯器,也可以預設不做修改
-
-
安裝成功後
-
在開始選單中會有Git項
-
在任意資料夾下點選滑鼠右鍵,也可以看到Git的程式
-
-
Git Bash:Unix與Linux風格的命令列,使用最多
-
Git CMD:Windows風格的命令列
-
Git GUI:圖形介面的git
-
-
環境配置
-
環境變數的配置是為了全域性使用
-
安裝Git成功後預設系統會自動在環境變數中配置
-
4、常用的Linux命令
-
cd :改變目錄
-
cd... :回退到上一個目錄
-
pwd :顯示當前所在的目錄路徑
-
ls :列出當前目錄中的所有檔案
-
touch :新建一個檔案
-
rm :刪除一個檔案
-
mkdir :新建一個資料夾
-
rm -r :刪除一個資料夾
-
mv :移動檔案,mv index.html test,把index.html移動到test資料夾下
-
reset :重新初始化終端/清屏
-
clear :清屏
-
history :檢視命令歷史
-
exit :退出
-
#表示註釋
5、Git配置
-
git config -l :檢視git的全部配置
-
git config --system --list :檢視系統的配置
系統配置的檔案在:安裝Git的目錄下的 Git\etc\gitconfig裡
-
git config --global --list :檢視使用者自己的配置
使用者自定義的配置的檔案在:C:\Users\使用者名稱下的 .gitconfig 檔案裡
-
設定自己的使用者名稱和郵箱(必須要做)
-
git config --global user.name "使用者名稱"
-
git config --global user.email 郵箱
-
6、Git工作區域
-
Git 的工作區域
-
工作目錄:(Working Directory)
-
專案在電腦上存放的目錄
-
-
暫存區:(Stage/index)
-
用於臨時存放專案的改動
-
只是一個檔案,儲存即將提交的檔案列表資訊
-
-
資源庫(本地倉庫):(Repository或Git Directory)
-
安全存放資料的位置,裡面有提交的所有版本的資料
-
HEAD指向最新放入倉庫的版本
-
-
遠端的Git 倉庫:(Remote Directory)
-
託管程式碼的伺服器
-
-
-
工作區域圖如下:
-
Git 的工作流程
-
1、在工作目錄中新增、修改檔案
-
2、將需要進行版本管理的檔案新增到暫存區
-
3、將暫存區域的檔案提交到git倉庫
-
7、Git專案搭建
-
本地倉庫搭建
-
建立全新的倉庫
在需要用Git 管理的專案的根目錄中執行以下語句:git init
執行後文件夾中多出了一個 .git 資料夾,關於版本的所有資訊都在這個資料夾裡
-
-
克隆遠端倉庫
-
將遠端倉庫中的映象完全複製一份到本地
-
在Gitee或者GitHub上覆制這個專案的url
-
輸入以下命令並執行,即可
git clone url
-
8、Git檔案操作
-
檔案的4種狀態
-
Untracked:未跟蹤
-
此檔案在資料夾中,但是沒有被git管理
-
通過 git add files 命令變成 Staged狀態
-
-
UnModify:檔案已經入庫,未修改
-
版本庫中的檔案快照內容與資料夾內容完全一致
-
若此時檔案被修改,狀態變為 Modify
-
如果使用 git rm 命令移除版本庫,狀態變成Untracked
-
-
Modify:檔案已修改
-
通過 git add files 可以變成Staged狀態
-
通過 git checkout 可丟棄修改,退回到UnModify狀態
-
-
Staged:暫存狀態
-
執行 git commit 將修改同步到庫中,此時庫中的檔案和本地的檔案又變為一致,轉變成 UnModify 狀態
-
執行 git reset HEAD filename 取消暫存,檔案變成Modify狀態
-
-
-
檢視指定檔案狀態:git status filename
-
檢視所有檔案狀態:git status
-
把檔案新增到暫存區中:git add .
-
把檔案提交到本地倉庫中:git commit -m "註釋資訊"
-
忽略檔案:
-
有時候不想把某些檔案納入到版本控制中,比如資料庫檔案、臨時檔案、設計檔案等等,在主目錄下建立 “.gitignore” 檔案,此檔案的規則如下:
-
1、檔案中的空行將被忽略
-
2、以#開頭的內容將被忽略
-
3、可以使用Linux萬用字元:
-
*代表任意多個字元
-
? 代表一個字元
-
[]代表可選字元的範圍
-
{}代表可選的字串範圍
-
-
4、! 後面跟的內容將不會被忽略
-
5、/ + 檔名,要忽略的檔案在此目錄下,而子目錄中的檔案不會被忽略
-
6、檔名 + /,要忽略的是此目錄下該名稱的子目錄
//忽略所有以 .txt結尾的檔案
*.txt
//lib.txt不被忽略
!lib.txt
//忽略和build在同一級目錄下的其他檔案
/build
//忽略build目錄下的所有檔案
build/
-
-
9、碼雲的使用
-
三種碼雲:
GitHub、Gitee、公司自己搭建的Github
-
Github 和 Gitee的註冊和使用
-
1、註冊賬號,完善個人資訊
-
2、設定本機繫結SSH公鑰,實現免密碼登入
-
不設定免密碼登入的話,每次提交到遠端倉庫都需要密碼
-
使用命令列生成公鑰
-
Github:ssh-keygen -t rsa -C "郵箱地址",一路回車到生成金鑰
-
Gitee:ssh-keygen -t rsa,一路回車到生成金鑰
-
生成的檔案在:C:\Users\使用者名稱.ssh中,有兩個檔案
-
id_rsa
-
id_rsa.pub
-
-
把公鑰配置在碼雲中
開啟.ssh檔案中的id_rsa.pub,把檔案中的內容複製到Github或者Gitee裡的
個人資訊設定 ---> 公鑰設定 ---> SSH公鑰設定中
-
-
-
3、建立遠端倉庫
-
10、關於Git分支說明
-
Git分支中常用指令
-
列出所有本地分支:git branch
-
列出所有遠端分支:git branch -r
-
新建一個分支,但依然停留在當前分支:git branch branchName
-
新建一個分支,並切換到該分支:git checkout -b branchName
-
合併分支到當前分支:$ git merge branchName
-
刪除分支:$ git branch -d branchName
-
刪除遠端分支:
$ git push origin --delete branchName
$ git branch -dr branch/remote
-