git 版本控制系統

2021-08-26 05:56:42 字數 4076 閱讀 6897

一、git版本控制——解決的三個痛點問題/作用

1.解決虛擬機器意外壞了/磁碟損壞等意外情況

2.版本持續變化,需要對很多個版本進行管理

3.能夠方便多人進行協同開發

建議:使用centos7(centos6中git版本太低)

注意:git與linux作者相同

二、git版本控制的特點

1.分布式

2.遠端倉庫

3.分支管理

4.標籤管理

5.使用專案**託管平台

7.git命令列

三、git的安裝

centos7:

sudo yum -y install git

centos6:

四、git與github

github:全球最大的同性社交**,source forage,goole code,gitlab,碼雲,碼市

五、git的使用

1.建立專案

3.開啟linux命令列 使用命令 git clone +https鏈結

4.開啟目錄

5.三板斧操作

(1)git add + 目錄名——告訴git工具那些檔案需要版本控制的

(2)git commit . ——提交當前目錄下的所有檔案,把**的改動提交到版本控制中

注意:1.此時的提交是提交到本地,而不是提交到伺服器上

2.提交的時候需要寫乙個比較有描述性的日誌資訊。(一定要認真寫!!)

(3)git push +url (https下的鏈結)——把本地的修改推送到伺服器上

注意:每次提交可能需要提交使用者名稱密碼,可以設定面除這些操作,就進行推送

六、git高階用法——git的其他常用操作

1. pull

git pull——從伺服器上拉取**到本地

2. diff (檢視那些**發生修改的詳細內容)

git diff——羅列出當前目錄下有哪些**發生了改變 ---a舊版本 ---b新版本(**沒有push前)

3. status

git status——檢視那些**發生修改,不包含詳細資訊

4. log

git log——檢視修改的版本日誌,列印出之前的每一次改動(版本資訊)

5. checkout

git checkout —— 不加引數,表示切換分支

6.配置免密碼提交

7.配置 .gitignore —— 乙個非常有用的東西,提示git要忽略那些檔案

git add * 將所有檔案關聯到 git,通過 .gitignore 配置檔案忽略

vim .gitignore (. 開頭表示隱藏檔案) 在檔案寫 *.o —— 表示忽略.o檔案

七、版本管理——版本回退

1.git log —— 顯示版本詳細資訊

git log --pretty=oneline — 每個版本佔一行,簡易版本資訊,前面的一串很長的數字表示版本號

注意:此處版本號通過sha1計算得出

兩個主流的雜湊演算法——md5、sha1

特點(流行的原因):

(1)算出來的雜湊值一定是定長的

(2)得到的雜湊值衝突的概率極小,其分布的非常均勻,降低了衝突概率

(3)md5不可逆,即拿到雜湊值得到原字串基本不可能

2.版本回退

git reset --hard + 版本號 —— 回退回指定的版本

問題:(1)回退的時候最新版本的資訊看不到了,怎麼辦?

git reflog —— 記錄了git 在本地的核心操作,可以借助 reflog 來找到 git log 看不見的版本

git reset --hard + 版本號

版本回退的原理:

八、分支管理

1.分支的概念

舉例:背景:100多人維護同乙份**(**千萬行)

假設:這個**在伺服器上只有乙份,每個人都會把自己的改動提交到這個伺服器的這份**上

有一天,小明提交了一次**,提交之後,下班回家,並請了兩天假,其他人更新了**,編譯不過。就會導致出現一些嚴重的問題。

分支就是為了解決這個問題,小明在開發**的時候,基於伺服器上的這乙份**,建立乙個分支(也就是將伺服器上的**拷貝了乙份)。小明自己建立的這個分支,成為開發分支(dev),伺服器上原來的這份**稱為主線(master)。後序小明把**提交到dev分支上,不會對 master 進行任何影響。直到小明**開發完,測試完,再把 dev 分支的**合併到 master。

2.建立分支

git branch —— 完成對分支的操作,如果不加其他引數,表示檢視當前有那些分支(其中 * 表示當前分支是誰)

(1) git branch + 分支名字 —— 表示建立乙個分支,該分支只是在本地建立乙個指定名字的分支

(2) git checkout + 分支名 —— 切換分支

合併上述兩步操作的命令(建立並切換分支):

git checkout -b + 分支名

-b 選項,建立分支並切換到新分支

3.分支合併

git merge + 分支名

合併時的重要問題:衝突

(1)什麼是衝突?

同乙個位置的**,在不同的分支中都被進行了修改,此時嘗試merge兩個分支,就會產生衝突

git commit -a ——強制合併

(2)工作中發生衝突,怎麼解決?

與相關開發人員溝通,確定**怎麼寫。

4.刪除分支

git branch -d + 分支名 —— 刪除分支

(-d 分支名字,刪除分支)

九、分支管理策略

1.fast forward —— 通過乙個head指標指向回退的版本

注意:刪除分支之後,會丟掉分支資訊

2.bug分支——描述一種場景

實際開發中常見的應用場景:

場景一:開發乙個功能,建立 dev 分支,在這個 dev 分支上開始開發,開發到一半的時候,master上發現存在乙個bug,需要立刻修復。如果此時的dev分支是多人共用,此時我們就不能把當前dev分支中修改一半的**提交上去。

如果直接嘗試切換到master,就會出現切換失敗的情況。

git stash —— 能夠臨時儲存當前的修改內容,讓我們去及時的處理其他的分支的情況

git stash pop —— 恢復之前儲存的修改的內容

git stash list —— 隨時可以檢視儲存的內容,並指定要恢復儲存的內容

場景二:假設你在開發乙個需求,馬上要開發完了,產品經理說,這個需求不做了,此時修改的這些**,不需要合併到master分支中。

用過的分支可以刪掉,首先要切換到其他分支。

git branch -d + 分支名

此時會報錯,提示該分支沒有merged,如果確實要刪除,使用下面的命令:

git branch -d + 分支名 強制刪除

場景三:多人合作開發

1.直接基於master開發(在實際工作中是嚴格禁止的)

(1)拉取** git pull ,(2)merge,(3)有衝突解決衝突,(4)commit ,(5)push

2.基於共同的dev分支來進行開發

git push origin + 分支名 —— 同步分支到伺服器上

git checkout -b + 分支名 origin/分支名

十、標籤管理——版本發布(需要對**進行發布版本)

1.概念

使用 標籤 機制告訴我們哪份**是需要進行發布的,一般不會直接發布 master 上的最新**。

2.標籤的相關操作

git tag + 標籤名 —— 建立標籤名(在本地建立標籤)

git push origin + 標籤名 —— 將標籤名推送到 git 伺服器上

git tag —— 不加引數,表示檢視都有哪些標籤

刪除標籤:

git tag -d + 標籤名 —— 刪除本地標籤

注意:最好別刪伺服器上的標籤,刪除標籤的風險極大,盡量避免刪除伺服器上的標籤

git版本控制系統

總結 1.初始化乙個git倉庫,使用 git init 命令 2.新增檔案到git倉庫分兩步 第一步,使用命令 git add file 注意,可反覆多次使用,新增多個檔案 第二步,使用命令 git commit 完成小結 1 head 指向的是當前版本,因此可以使用 git reset hard ...

git版本控制系統

svn屬於集中化版本控制系統,c s架構 git屬於分布式版本控制系統 你的本地倉庫主要由三部分組成。第乙個是你的 工作目錄,它持有實際檔案 第二個是 快取區 index 它像個快取區域,臨時儲存你的改動 第三個head,指向你最近一次提交後的結果。當使用add命令提交時,先提交到快取區,然後再使用...

版本控制系統 Git

版本控制系統 vcs 簡單理解為記錄每次更改記錄的系統,以便檢視歷史修改記錄,更好的管理檔案和軟體。但是缺點也在,比如有很多人要協同完成同乙個專案,修改的話客戶端必須聯網,才能將自己的東西提交到伺服器進行版本修改,而且,如果伺服器出現嚴重問題,可能還會導致資料丟失。後來,linus 可能認為這樣很麻...