宣城市建設(shè)銀行網(wǎng)站建站流程
目錄
一:概述
1.1. 何為版本控制
1.2. 為什么需要版本控制
1.3. 版本控制工具
1.4.??Git 簡史
1.5.?Git 工作機制
1.6.?Git和代碼托管中心
二:安裝
2.1. Git安裝
三:常用命令
3.1?設(shè)置用戶簽名
3.2??初始化本地庫
3.3?查看本地庫狀態(tài)
3.4??添加暫存區(qū)
3.5?提交到本地庫
3.6 查看歷史版本
3.7 模擬版本迭代
3.8?版本穿梭
一:概述
????????Git 是一個免費的、開源的分布式版本控制系統(tǒng),可以快速高效地處理從小型到大型的各種項目。Git 易于學(xué)習(xí),占地面積小,性能極快。 它具有廉價的本地庫,方便的暫存區(qū)域和多個工作 流分支等特性。其性能優(yōu)于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。
1.1. 何為版本控制
(1)版本控制是一種記錄文件內(nèi)容變化,以便將來查閱特定版本修訂情況的系統(tǒng)。
(2)版本控制其實最重要的是可以記錄文件修改歷史記錄,從而讓用戶能夠查看歷史版本, 方便版本切換。
(3)例如:當(dāng)我們修改畢業(yè)論文時,肯定不能直接在原來的版本上進行修改,我們不能保證會修改的越來越好,所以就需要對每次的每個修改版本進行備份,這就是版本控制!
1.2. 為什么需要版本控制
(1)目的是:從個人開發(fā)過渡到團隊協(xié)作。
(2)例如:對于同一個項目,小紅和小明都拉取到自己本機上修改;小紅認為第一個版本應(yīng)該加入222,變成第二個版本;小藍認為第一個版本應(yīng)該應(yīng)該加入444,變成第三個版本;如果此時不使用版本控制工具,小藍修改的版本就會覆蓋原來小紅修改的版本!所以就需要專門的版本控制工具去合并兩個人的代碼!
1.3. 版本控制工具
集中式版本控制工具
(1)CVS、SVN(Subversion)、VSS……
(2)集中化的版本控制系統(tǒng)諸如CVS、SVN 等,都有一個單一的集中管理的服務(wù)器,保存 所有文件的修訂版本(修改好后就提交給中央服務(wù)器),而協(xié)同工作的人們都通過客戶端連到這臺服務(wù)器,取出最新的文件或 者提交更新。多年以來,這已成為版本控制系統(tǒng)的標(biāo)準(zhǔn)做法。
(3)優(yōu)點:每個人都可以在一定程度上看到項目中的其他人正在做些什么。而管理員也可以輕松掌控每個開發(fā)者的權(quán)限,并且管理一個集中化的版本控制系統(tǒng),要遠比在各個客戶端上維護本地數(shù)據(jù)庫來得輕松容易。
(4)缺點:是中央服務(wù)器的單點故障,如果服務(wù)器宕機一小時,那么在這一小時內(nèi),誰都無法提交更新,也就無法協(xié)同工作。
分布式版本控制工具
(1)Git、Mercurial、Bazaar、Darcs……
(2)像 Git 這種分布式版本控制工具,客戶端提取的不是最新版本的文件快照,而是把代碼 倉庫(遠程庫)完整地鏡像下來(本地庫)。這樣任何一處協(xié)同工作用的文件發(fā)生故障,事后都可以用 其他客戶端的本地倉庫進行恢復(fù)。因為每個客戶端的每一次文件提取操作,實際上都是一次 對整個文件倉庫的完整備份。
(3)分布式的版本控制系統(tǒng)出現(xiàn)之后,解決了集中式版本控制系統(tǒng)的缺陷:
①服務(wù)器斷網(wǎng)的情況下也可以進行開發(fā)(因為版本控制是在本地進行的);
②每個客戶端保存的也都是整個完整的項目(包含歷史記錄,更加安全);
1.4.??Git 簡史
Git是Linus花了兩周時間用C寫了一個分布式版本控制系統(tǒng),用來管理Linux系統(tǒng)的源碼!
1.5.?Git 工作機制
Git大概分為三個區(qū):工作區(qū)、暫存區(qū)、本地庫!
①工作區(qū):是指代碼存放的磁盤的目錄的位置;
②暫存區(qū):讓git追蹤到你有這么個代碼文件,所以需要把工作區(qū)的代碼添加到暫存區(qū);
③本地庫:把暫存區(qū)的代碼提交到本地庫,此時才會有對應(yīng)的歷史版本;
注:最后在從本地庫推送到(push)遠程倉庫!
1.6.?Git和代碼托管中心
代碼托管中心是基于網(wǎng)絡(luò)服務(wù)器的遠程代碼倉庫,一般我們簡單稱為遠程庫!
? 局域網(wǎng):GitLab(自己公司搭建的);
? 互聯(lián)網(wǎng):GitHub(外網(wǎng))、Gitee 碼云(國內(nèi)網(wǎng)站);
二:安裝
官網(wǎng)地址:https://git-scm.com/
2.1. Git安裝
雙擊可執(zhí)行文件,得到以下安裝界面
選擇 Git 安裝位置,要求是非中文并且沒有空格的目錄(目錄位置可自定義)
Git 選項配置,推薦默認設(shè)置
Git 安裝目錄名,不用修改
Git 的默認編輯器,建議使用默認的 Vim 編輯器
默認分支名設(shè)置,選擇讓 Git 決定,分支名默認為 master
修改 Git 的環(huán)境變量,選第一個,不修改環(huán)境變量,只在 Git Bash 里使用 Git
選擇后臺客戶端連接協(xié)議,選默認值 OpenSSL
配置 Git 文件的行末換行符,Windows 使用 CRLF,Linux 使用 LF,選擇第一個自動轉(zhuǎn)換
選擇 Git 終端類型,選擇默認的 Git Bash 終端
選擇 Git pull 合并的模式,選擇默認
選擇 Git 的憑據(jù)管理器,選擇默認的跨平臺的憑據(jù)管理器
其他配置,選擇默認設(shè)置,然后下一步。
實驗室功能,技術(shù)還不成熟,有已知的 bug,不要勾選
?點擊 Finsh 按鈕,Git 安裝成功!
?右鍵任意位置,在右鍵菜單里選擇 Git Bash Here 即可打開 Git Bash 命令行終端。
在 Git Bash 終端里輸入 git --version 查看 git 版本,如圖所示,說明 Git 安裝成功。
三:常用命令
3.1?設(shè)置用戶簽名
(1)基礎(chǔ)語法
git config --global user.name 用戶名
git config --global user.email 郵箱
(2)案例實操
(3)結(jié)果查看
怎么確定我們設(shè)置好了?使用cat命令進行查看
或者直接找到用戶名下面的.gitconfig文件?
(4)說明
簽名的作用是區(qū)分不同操作者身份;用戶的簽名信息在每一個版本的提交信息中能夠看到,以此確認本次提交是誰做的。Git 首次安裝必須設(shè)置一下用戶簽名,否則無法提交代碼。
注意:這里設(shè)置用戶簽名和將來登錄 GitHub(或其他代碼托管中心)的賬號沒有任何關(guān)系。
3.2??初始化本地庫
(1)基礎(chǔ)語法
git init
(2)案例實操
假設(shè)在D:\git-space目錄下有一個git文件夾,在當(dāng)前文件夾下點擊右鍵選擇Git Bash Here,此時就會跳轉(zhuǎn)到當(dāng)前目錄下;執(zhí)行g(shù)it init命令,進行初始化,拿到權(quán)限才能進行管理!
(3)結(jié)果查看?
初始化后,會生成一個.git隱藏目錄
也可以使用Linux命令進行查看,ll -a(-a表示顯示所有的文件,包括隱藏的)
?
3.3?查看本地庫狀態(tài)
?(1)基本語法
git status
(2)案例實操
首次查看(工作區(qū)沒有任何文件,生成三行日志目錄)
新增文件(使用vim編輯器進行添加Hello.java) ?
?再次查看(檢測到未追蹤的文件)
3.4??添加暫存區(qū)
?(1)基本語法
git add 文件名
(2)案例實操
相當(dāng)于從工作區(qū)添加到了暫存區(qū)
會出現(xiàn)一個警告,這個警告是告訴我們把windows的換行符CRLF自動轉(zhuǎn)換成Linux的LF,不用管這個警告!
?查看狀態(tài)(檢測到暫存區(qū)有新文件)
此時要是不想讓Hello.java保存歷史版本,可以使用git rm --cached Hello.java進行刪除!
注:此時只是刪除暫存區(qū)里面的文件,在工作區(qū)上還是存在的!
3.5?提交到本地庫
(1)基礎(chǔ)語法
git commit -m "日志信息" 文件名
(2)案例實操
將暫存區(qū)的文件提交到本地庫
再次查看狀態(tài),日志信息又變了
?
3.6 查看歷史版本
(1)基本語法
git reflog 查看版本信息
git log 查看版本詳細信息
(2)案例實操
3.7 模擬版本迭代
修改文件Hello.java
再次查看狀態(tài)?(檢測到工作區(qū)有文件被修改)
將修改的文件再次添加暫存區(qū),并查看狀態(tài)
再次提交到本地庫
明明只是修改了一行,為什么提示一行新增,一行刪除?
注:在Git中是按照行來維護文件的,修改一行沒有辦法表達出來,只能把修改的那一行先刪掉,然后把修改后的那一行新增進來!
3.8?版本穿梭
(1)基本語法
git reset --hard 版本號
(2)?案例實操
再次查看歷史版本信息,此時已經(jīng)有兩個版本
注:此時指向的是我們剛剛提交的第二個版本!
?此時查看文件的信息
切換到第一個版本
?查看版本信息,指針已經(jīng)指向第一個版本了
?再次查看文件的信息
?
補充:也可以通過文件直接看
首先找到.git下面的HEAD文件,顯示的內(nèi)容如下:
ref: refs/heads/master // 指針指向了master,說明當(dāng)前是在master分支上
在查看在master分支上的那個版本?在.git/refs/heads/master
708329dbaf888265cd62e21dd99dad5d3fd16b8c // 第一個版本號
// 指針指向了master分支,master分支又指向了第一個版本
總結(jié):Git切換版本,底層其實是移動的head指針,head指針指向master分支,master分支又指向了版本號,通過調(diào)節(jié)指針的指向來切換不同的版本!