一、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 可能認為這樣很麻...