天天看點

git版本控制系統更新

版本控制系統:

一、概念:

版本控制系統(Version Control System):是一種記錄一個或若幹檔案内容變化,以便将來查閱特定版本修訂情況的系統。

二、版本控制系統分類

1、本地版本控制系統

在本地記錄檔案内容變化情況。

缺點:不能進行多人協作

2、集中式版本控制系統

有一個中間伺服器,專門用于管理代碼,所有人通過中間伺服器,進行代碼同步。【代表:SVN 版本控制】

優點:解決了多人協作問題

缺點:太過于依賴中間伺服器,與網絡。

git版本控制系統更新

3、分布式版本控制系統

分布式版本控制系統就是一個專門用于管理代碼的遠端倉庫,每個人本地都有一個遠端倉庫的完整鏡像。

優點:解決多人協作開發問題,不是特别依賴遠端倉庫,不是特别依賴網絡。【也不是不依賴】

三、git 基本入門

注意 git 的安裝:(1)不能安裝在中文目錄(2)最好不使用桌面管理軟體【360,百度殺毒等等】

1、git 的三個區

工作區:我們寫代碼的地方

暫存區:暫時存儲的區域,git 中的代碼不能直接從工作區存儲到倉庫中,需要現将其添加到暫存區,再從暫存區添加到倉庫【目的是為了避免錯誤操作】

倉庫區:将暫存區的代碼轉存到 git 倉庫中,生成版本号。

2、git 基本指令

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版本控制系統更新
# 将檔案從暫存區送出到倉庫
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:檢視簡潔的日志

git版本控制系統更新

3、git 的對比

【1】git diff:檢視工作區與暫存區送出内容的不同

【2】git diff --cached:檢視暫存區與倉庫區内容的不同

【3】git diff HEAD:檢視工作區與倉庫區内容的不同(HEAD 表示最新一次的送出)

【4】git diff 版本 1 版本 2:檢視兩個版本之間的不同

git版本控制系統更新

4、git 的重置

【1】git reset:版本回退,将代碼恢複到送出過得某一個版本中

【2】git reset --hard 版本号:将代碼回退到某一個指定的版本(置三個區)

【3】git reset --soft 版本号:隻重置倉庫區

【4】git reset --mixed 版本号:重置倉庫區與暫存區(預設)

【5】git reflog:檢視所有版本資訊(使用

git log

隻能看到目前版本之前的資訊)

git版本控制系統更新

【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

  • 作用:将本地倉庫中代碼送出到遠端倉庫
  • git push 倉庫位址 master

    在代碼送出到遠端倉庫,注意 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 在  

    github -> settings -> SSH and GPG keys

    頁面中,新建立 SSH key
  • 5 粘貼 公鑰  

    id_rsa.pub

      内容到對應文本框中
  • 5 在 github 中建立倉庫或者使用現在倉庫,拿到

    [email protected]:使用者名/倉庫名.git

  • 6 此後,再次 SSH 方式與 github“通信”,不用輸入密碼确認身份了