版本控制系統:
一、概念:
版本控制系統(Version Control System):是一種記錄一個或若幹檔案内容變化,以便将來查閱特定版本修訂情況的系統。
二、版本控制系統分類
1、本地版本控制系統
在本地記錄檔案内容變化情況。
缺點:不能進行多人協作
2、集中式版本控制系統
有一個中間伺服器,專門用于管理代碼,所有人通過中間伺服器,進行代碼同步。【代表:SVN 版本控制】
優點:解決了多人協作問題
缺點:太過于依賴中間伺服器,與網絡。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISM9AnYldnJwAzN9c3Pn5GcuQ0MlQ0MlcnW1JkbMNTRE1ENJpWT4lEVOhHM55kenRUT6FEVOdXS61EeFRUT1UERNlHMT50MnRUT6VFVNZXRE1UNFRUT5hzUONzZE1keVRVT2NmMiNnSywEd5ITW110MaZHetlVdO1GT0UERNl3YXJGc5kHT20ESjBjUIF2Lc12bj5SYphXa5VWen5WY35iclN3Ztl2Lc9CX6MHc0RHaiojIsJye.png)
3、分布式版本控制系統
分布式版本控制系統就是一個專門用于管理代碼的遠端倉庫,每個人本地都有一個遠端倉庫的完整鏡像。
優點:解決多人協作開發問題,不是特别依賴遠端倉庫,不是特别依賴網絡。【也不是不依賴】
三、git 基本入門
注意 git 的安裝:(1)不能安裝在中文目錄(2)最好不使用桌面管理軟體【360,百度殺毒等等】
1、git 的三個區
工作區:我們寫代碼的地方
暫存區:暫時存儲的區域,git 中的代碼不能直接從工作區存儲到倉庫中,需要現将其添加到暫存區,再從暫存區添加到倉庫【目的是為了避免錯誤操作】
倉庫區:将暫存區的代碼轉存到 git 倉庫中,生成版本号。
2、git 基本指令
【2.1】git status:檢視檔案狀态【紅色表示再工作區,綠色表示再暫存區 】
【2.2】git status -s: 簡化日志輸出格式
【3.1】git add 檔案名/目錄名:将檔案從工作區添加到暫存區
【3.2】git add . :将目前目錄下所有檔案一次性送出到暫存區 【git add -A 或 git add -all】
# 将index.html添加到暫存區
git add index.html
# 将css目錄下所有的檔案添加到暫存區
git add css
# 将目前目錄下所有的js檔案添加到暫存區
git add *.js
# 添加目前目錄下所有的檔案
git add .
git add -A
git add --all
【4.1】git commit -m "送出說明":将檔案從暫存區添加到倉庫區,生成版本号。
【4.2]git commit -a -m "送出說明"(快速送出,之前有送出過檔案)
【4.3】git commit --amend -m "送出說明":如果送出說明輸入錯了,修改使用指令。
# 将檔案從暫存區送出到倉庫
git commit -m "送出說明"
# 如果不寫送出說明,會進入vi編輯器,沒有寫送出說明,是送出不成功的。
git commit # 需要使用vi輸入内容
# 如果是一個已經暫存過的檔案,可以快速送出,如果是未追蹤的檔案,那麼指令将不生效。
git commit -a -m \'送出說明\'
# 修改最近的一次送出說明, 如果送出說明不小心輸錯了,可以使用這個指令
git commit --amend -m "送出說明"
【5】git config(配置)
【5.1】第一次送出配置:
git config user.name 你的目标使用者名
git config user.email 你的目标郵箱名
【5.2】 使用--global 參數,配置全局的使用者名和郵箱,隻需要配置一次即可。推薦配置 github 的使用者名和密碼
git config --global user.name *****
git config --global user.email ****
【5.3】git config --list:檢視配置資訊
【6.1】git log:檢視送出的日志
【6.2】git log --oneline:檢視簡潔的日志
3、git 的對比
【1】git diff:檢視工作區與暫存區送出内容的不同
【2】git diff --cached:檢視暫存區與倉庫區内容的不同
【3】git diff HEAD:檢視工作區與倉庫區内容的不同(HEAD 表示最新一次的送出)
【4】git diff 版本 1 版本 2:檢視兩個版本之間的不同
4、git 的重置
【1】git reset:版本回退,将代碼恢複到送出過得某一個版本中
【2】git reset --hard 版本号:将代碼回退到某一個指定的版本(置三個區)
【3】git reset --soft 版本号:隻重置倉庫區
【4】git reset --mixed 版本号:重置倉庫區與暫存區(預設)
【5】git reflog:檢視所有版本資訊(使用
git log
隻能看到目前版本之前的資訊)
【6】git reset --hard head~1:将版本回退到上一次送出狀态
- ~1:上一次送出
- ~2:上上次送出
- ~0:目前送出
5、git 忽視檔案
【忽視檔案建立需要在編譯器中建立,不然會報錯】
在倉庫中,有一部分檔案是不想被 git 管理的,比如資料的配置密碼,寫代碼的一些思路等等,git 可以通過配置忽略一些檔案,這樣檔案就不用送出了。
【1】方法:注意:該檔案是可以将自己忽視的
在倉庫根目錄下建立一個.gitignore 檔案,檔案名固定。将不需要被 git 管理的檔案路徑添加到.gitignore 中。
【忽視.gitignore 檔案 (.gitignore)】
# 忽視idea.txt檔案
idea.txt
# 忽視.gitignore檔案
.gitignore
# 忽視css下的index.js檔案
css/index.js
# 忽視css下的所有的js檔案
css/*.js
# 忽視css下的所有檔案
css/*.*
# 忽視css檔案夾
css
6、git 分支操作
在 git 中,分支實質上就是一個指針,每次代碼送出後,這個分支指針就會向後移動,保證一直指向最後一次送出的版本。git 中使用 HEAD 指向目前分支。
【1】每次 commit 送出,都會在倉庫區生成一個新的版本
【2】在第一次生成版本後,會自動建立一個 master 分支,指向目前版本
【3】所有的分支,本質上就是指針
【4】預設有一個 HEAD 指針永遠指向目前分支
git 分支指令
【1】git branch 分支名稱:建立分支。
【2】git branch:檢視所有分支。
【3】git checkout 分支名稱:切換分支(HEAD 指針指向另一個分支)
目前分支任何操作不會影響其他分支。除非進行分支合并
送出代碼時,會産生版本号,目前分支會指向最新的版本号。
【4】git checkout -b 分支名稱:建立并切換分支(建立一個新分支,将 HEAD 指針指向目前分支)
【5】git branch -d 分支名稱:删除分支(注意:不能在目前分支删除目前分支,需要切換到其他分支,才可以删除)。
【6】git merge 分支名稱:将其他分支内容合并到目前分支。
git 合并沖突
【1】對于同一個檔案,如果有多個分支要合并,容易出現沖突。
【2】合并分支時,出現沖突需要手動處理,在進行送出。(一般将自己代碼放在沖突代碼之後即可)。
四、git 遠端倉庫
1、github 與 git【github 中文版是碼雲】
git 與 github 沒有直接的關系。
- git 是一個版本控制工具。
-
github 是一個代碼托管平台,開源社群,是 git 的一個遠端代碼倉庫。
注意: 建立 git 項目時,不能有中文。
git clone
- 作用:克隆遠端倉庫的代碼到本地
- git 克隆預設會使用遠端倉庫的項目名字,也可以自己指定。需要是使用以下指令:
git clone [遠端倉庫位址] [本地項目名]
git push
- 作用:将本地倉庫中代碼送出到遠端倉庫
-
在代碼送出到遠端倉庫,注意 master 分支必須寫,不能省略git push 倉庫位址 master
git pull
- 作用:将遠端的代碼下載下傳到本地
- 通常在 push 前,需要先 pull 一次。
# 擷取遠端倉庫的更新,并且與本地的分支進行合并
git pull
git remote
每次 push 操作都需要帶上遠端倉庫的位址,非常的麻煩,我們可以給倉庫位址設定一個别名
# 給遠端倉庫設定一個别名
git remote add 倉庫别名 倉庫位址
git remote add jepson [email protected]:jepsongithub/test.git
#删除jepson這個别名
git remote remove jepson
#git clone的倉庫預設有一個origin的别名
SSH 免密碼登陸
git 支援多種資料傳輸協定:
- https 協定:
需要輸入使用者名和密碼https://github.com/jepsongithub/test.git
- ssh 協定:
可以配置免密碼登入[email protected]:jepsongithub/test.git
每次 push 或者 pull 代碼,如果使用 https 協定,那麼都需要輸入使用者名和密碼進行身份的确認,非常麻煩。
- github 為了賬戶的安全,需要對每一次 push 請求都要驗證使用者的身份,隻有合法的使用者才可以 push
- 使用 ssh 協定,配置 ssh 免密碼,可以做到免密碼往 github 推送代碼
五、SSH 免密碼登入配置
注意:這些指令需要在 bash 中敲
- 1 建立 SSH Key:
ssh-keygen -t rsa
- 2 在檔案路徑
找到C:\使用者\目前使用者名\
檔案夾.ssh
- 3 檔案夾中有兩個檔案:
- 私鑰:
id_rsa
- 公鑰:
id_rsa.pub
- 私鑰:
- 4 在
頁面中,新建立 SSH keygithub -> settings -> SSH and GPG keys
- 5 粘貼 公鑰
内容到對應文本框中id_rsa.pub
- 5 在 github 中建立倉庫或者使用現在倉庫,拿到
[email protected]:使用者名/倉庫名.git
- 6 此後,再次 SSH 方式與 github“通信”,不用輸入密碼确認身份了