文章目錄:
? ? ? ? 1:什么是Git以及作用
? ? ? ? 2.Git的基本操作過程(創(chuàng)建git倉庫,配置倉庫的配置)
? ? ? ? 3.git的工作區(qū),暫存區(qū),版本庫的關(guān)系
? ? ? ? 4.將文件添加到版本庫:git add 與git commit -m命令
? ? ? ? 5.git log查看日志的引入
? ? ? ? 6.查看.git文件中的內(nèi)容
? ? ? ? 7.修改文件內(nèi)容查看 git diff 與git diff HEAD
? ? ? ? 8.版本回退的概念引入以及命令
? ? ? ? 9.撤銷修改的引入與相關(guān)指令操作
? ? ? ? 10.git rm 刪除版本庫文件
前言:
? ? ? ? 本文章是講解Git的相關(guān)操作的,深刻理解Git的操作過程與操作,掌握Git企業(yè)級(jí)的應(yīng)用,從0開始講解Git。
文章正式開始:
1:什么是Git 以及作用
? ? ? ? 首先在講解什么是Git之前我們先來聊一聊關(guān)于我們工作中的一個(gè)場(chǎng)景:
? ? ? ? 我們?nèi)粘T诠ぷ鞯臅r(shí)候我們的老板可能讓我們寫一個(gè)需求文檔(文檔1),而當(dāng)我們寫完文檔1之后我們可能就將這個(gè)文檔1交給老板,可是我們的老板對(duì)我們的文檔1不是怎么很滿意覺得我們的文檔缺了一點(diǎn)什么,于是讓我們將這個(gè)文檔拿下去進(jìn)行修改,于是我們就拿著文件去進(jìn)行修改了,此時(shí)我們將文檔2給修改出來了,又將這個(gè)文檔交給老板,老板可能覺得還是對(duì)這個(gè)文件不是很滿意,于是又讓我們?nèi)バ薷奈臋n.......,假設(shè)最終我們修改到了第10版文檔,可是老板覺得我們的第5份文檔是最滿足他的需求的,于是我們就去尋找文檔5,如果我們之前沒保存文檔5那我們的內(nèi)心是非常崩潰的,因?yàn)槲覀円呀?jīng)修改文檔很多次了并不知道文檔5是什么內(nèi)容了,但是我們?nèi)绻薷牡牟⒉皇峭环菸募敲看涡薷牡臅r(shí)候都是新建一個(gè)副本文檔進(jìn)行修改,那么我們就開開心心的拿著第5份文檔交給老板。
? ? ? ? ? ? ? ? 從上面的工作場(chǎng)景不難發(fā)現(xiàn)我們修改文件的時(shí)候由兩種方式一種是在同一份文件進(jìn)行多次修改,另外一種情況就是對(duì)要修改文件的副本文件進(jìn)行修改,顯然第二種情況是比較好的修改方式,因?yàn)檫@種修改方式可以讓我們找到我們每次修改文件的版本。
而為了對(duì)我們的文件進(jìn)行管理于是就有了git這個(gè)主流的版本管理控制器之一。
所以我們可以將Git簡(jiǎn)單的理解為:對(duì)文件進(jìn)行管理的版本控制系統(tǒng),能夠幫我們知道這個(gè)文件的各個(gè)版本以及里面的內(nèi)容。這里的文件可以是任何格式的文件,而對(duì)于開發(fā)者來說git最大的作用就是用來管理我們的源代碼的。
2:Git的基本操作(centos下的操作)
? ? ? ? 1:首先在我們的centos系統(tǒng)下我們需要安裝Git
? ? ? ? 命令:
root用戶:yum install -y git
普通用戶:sudo yum install -y git
? ? ? 創(chuàng)建git倉庫
? ? ? 首先要注意的是我們的創(chuàng)建倉庫一定是在一個(gè)目錄下進(jìn)行創(chuàng)建的
? ??
? ? ? ? 創(chuàng)建一個(gè)git倉庫:git init
????????
? ? ? ? 配置倉庫
? ?
git config user.name "xxxxx"
git config user.email?"xxxxx"
?????????
首先在配置名字和郵箱之前我們可以查看一下git有無配置這兩個(gè),如果配置了我們就可以不進(jìn)行配置,一般而言如果我們是剛開始建立git倉庫都需要進(jìn)行配置。
查看git的配置項(xiàng)指令: git config -l
?
所以我們來配置name與email
? ? ? ??
? 我們還可以加一個(gè) --global的選項(xiàng)來進(jìn)行配置這兩個(gè)如:
? ? ? ? git config --global user.name?"? ? "
????????git config --global user.email?"? ? "
是否加?--global看自己的意愿。
配置項(xiàng)的刪除
? ? ? ? 假設(shè)我們的配置項(xiàng)不小心配置錯(cuò)了或者我們需要對(duì)一個(gè)git倉庫的配置項(xiàng)進(jìn)行修改那么我們就可以使用以下的指令:
? ? ? ? git config? --unset user.name(user.email)? 對(duì)于局部配置
? ? ? ? git config --global? --unset???user.name(user.email)? 對(duì)于全局的配置
????????
3:git的三大區(qū)域介紹
? ? ? ? 其實(shí)我們的git真正管理的是位于版本庫中的文件,但是在git倉庫目錄的文件還不能被git進(jìn)行管理,而需將他添加到git的版本庫中才能進(jìn)行管理。
我們通過上面的圖形來介紹幾個(gè)概念
? ? ? ? 工作區(qū):.git文件的同級(jí)路徑下的區(qū)域,簡(jiǎn)單的理解就是我們?cè)趯懘a的區(qū)域。
? ? ? ? 暫存區(qū):屬于.git版本庫中一個(gè)非常重要的內(nèi)容,我們將工作區(qū)的內(nèi)容通過add指令之后文件就會(huì)被放在該區(qū)域。
? ? ? ?git的版本庫:就是我們的.git目錄。
? ? ? ? HEAD:本質(zhì)是一個(gè)指針用來指向我們當(dāng)前是在那個(gè)分支下。
? ? ? ? master:本質(zhì)里面存的是commit id
? ? ? ? object對(duì)象庫:當(dāng)我們對(duì)工作區(qū)進(jìn)行修改的時(shí)候,我們修改的內(nèi)容會(huì)被存儲(chǔ)在object對(duì)象庫中。
? ? ? ??
.git文件中就有上述的一些區(qū)域。
4.git add? 與git commit -m?
? ? ? ? 在上面我們已經(jīng)對(duì)于git的區(qū)域有一定的了解了,那么我們也就可以引入兩個(gè)指令了。
? ? ? ? git add? .? or git add filename
? ? ? ? 首先這個(gè)命令是針對(duì)于工作區(qū)與暫存區(qū)進(jìn)行的命令。
? ? ? ? 意義是:將我們工作區(qū)修改的內(nèi)容添加到暫存區(qū)。
? ? ? ? “修改“:并不是局限于對(duì)文件的修改還包括刪除和創(chuàng)建文件
? ? ? ? git add . 與git add filename的區(qū)別
? ? ? ? add .? :表示將工作區(qū)所有的修改添加到暫存區(qū)中。
? ? ? ? add filename: 將該文件的修改添加到暫存區(qū)中。
? ? ? ? 如我們先使用上述命令來進(jìn)行相關(guān)的操作:
? ? ? ? git status
? ? ? ? 這個(gè)指令可以用來查看我們當(dāng)前三個(gè)工作區(qū)的狀態(tài)
?????????
? ? ? ? git commit -m? ” xxxx“? ? ”“分號(hào)里面建議認(rèn)真的寫本次做了什么操作
? ? ? ? git status 查看三個(gè)區(qū)域的狀態(tài)?
5:git log? 查看日志的指令
? ? ? ? 這個(gè)指令可以用來查看我們提交到版本庫中的日志
還可以使用 簡(jiǎn)單漂亮的打印指令
git log --pretty=oneline
6. .git文件里面的內(nèi)容介紹
? ? ? ? .git其實(shí)是樹目錄里面有許多文件或目錄,我們?cè)趌inux下使用tree命令來查看
? ? ? ? index:也就是我們所說的暫存區(qū),里面存著的是add 修改的內(nèi)容
? ? ? ? HEAD:也就是我們所說的指針,里面存著的是我們指向的分支
? ? ? ? object:稱為對(duì)象庫,里面存著的是我們我們每次對(duì)工作區(qū)進(jìn)行修改的內(nèi)容的索引
? ? ? ? master:其實(shí)就是我們最新一次的commit id,我們可以來看看。
7.修改內(nèi)容的查看
? ? ? ? 我們知道git是版本控制管理系統(tǒng),所以git最重要管理的是修改并非是文件。
? ? ? ? 我們先引入幾個(gè)場(chǎng)景
? ? ? ? 1.只是修改了文件的內(nèi)容,無add。
? ? ? ? 這種情況下我們git如果想要知道本次文件的內(nèi)容與上次該文件內(nèi)容的差異我們呢一個(gè)如何進(jìn)行查看呢???
? ? ? ?當(dāng)然這種差異我們可能可以通過我們的記憶知道兩個(gè)文件的區(qū)別,可是當(dāng)我們時(shí)間一久那我們還會(huì)記住嗎??
所以我們的git提供了一個(gè)指令用來顯示工作區(qū)與暫存區(qū)的區(qū)別
? ? ? ? git diff filename
我們通過圖片來進(jìn)行演示。
? ? ? ? 場(chǎng)景2:修改的文件已經(jīng)add了,想要查看文件在暫存區(qū)與版本庫中的差別
? ? ? ? git diff HEAD --?filename
????????此時(shí)暫存區(qū)與版本庫的差異就出來了。
8.版本回退
? ? ? ? 我們知道我們的git有一個(gè)重要的功能就是對(duì)文件進(jìn)行版本管理,所以版本回退是git的一個(gè)非常重要的知識(shí)。
? ? ? ? 版本回退經(jīng)常用于,我們假如已經(jīng)開發(fā)了一段時(shí)間了,可是我們對(duì)我們的開發(fā)結(jié)果不是怎么很想要了,并且想要在上一個(gè)版本下重新進(jìn)行開發(fā),那么這時(shí)我們的版本回退的操作就非常需要了。
? ? 版本回退語法:git reset? [--soft] [--mixed] [--hard]? commitid? [HEAD]
? ? ? ? commitid:就是我們用git log打印時(shí)commit 后面的那些數(shù)字,當(dāng)然commitid 也可以是HEAD,表示的是當(dāng)前版本。
????????回退的本質(zhì):將版本庫的內(nèi)容進(jìn)行回退,其他區(qū)域回不回退需要看選項(xiàng)回退。?
? ? ? ? 我們結(jié)合圖來進(jìn)行解釋具體的選項(xiàng)的意思。
--soft:只回退版本庫中的內(nèi)容。
--mixed:版本庫和暫存區(qū)都會(huì)回退,也是git reset的默認(rèn)選項(xiàng)。
--hard:將所有區(qū)域的內(nèi)容都進(jìn)行回退,要慎用。
????????此時(shí)假設(shè)我們已經(jīng)開發(fā)了一次,備注了“coding x function”
????????且文件中的內(nèi)容為:
? ? ? ? 我們不想要這一次的結(jié)果了,我們想回到上一個(gè)版本。
? ? ? ? 此時(shí)就可以使用git提供的版本回退功能了。
此時(shí)的test的內(nèi)容
這樣就將工作區(qū),暫存區(qū),版本庫中的內(nèi)容全部回歸到上一個(gè)版本了。
? ? ? ? 從這里我們也能發(fā)現(xiàn)git的版本回退是非??焖俚模@是因?yàn)榛赝似鋵?shí)就是將HEAD指針的master修改就行,所以修改速度非常快。
? ? ?git reflog 可以查看我們所有的commit id,這樣導(dǎo)致了我們可以隨便回歸到那個(gè)版本。
? ? ? ? 但是不建議隨便亂回退,可能commit id會(huì)被沖掉。
? ? ? ? 我們通過圖來講解git版本回退時(shí)本質(zhì)的內(nèi)容
????????
? ? ? ??
9.撤銷修改文件
? ? ? ? ?這里的撤銷修改指的是我們?cè)趯?duì)一個(gè)文件進(jìn)行操作的時(shí)候所對(duì)應(yīng)的操作,也就是覺得我們本次開發(fā)的代碼非常不好,想回到開始時(shí)候的狀態(tài)。
? ? ? ? 1:對(duì)工作區(qū)的代碼的撤銷,無add
? ? ? ? ? ? ? ? 方法1:自己手動(dòng)修改。這種方法太挫了,這里就不進(jìn)行演示了。
? ? ? ? ? ? ? ? 方法2:git checkout -- [filename],回到最近一次的add狀態(tài)與commit狀態(tài)。
? ? ? ? ? ??
? ? ? ? ? ? ? ??
? ? ? ? 2.已經(jīng)進(jìn)行了 add 操作,但沒有commit操作
????????
? ? ? ? 方法:git reset HEAD filename +git checkout -- [filename] 兩步走
?
? ? ? ? 3.已經(jīng)add,已經(jīng)commit了
? ? ? ? 這時(shí)候的撤銷我們只能依靠我們的git reset --hard/mixed/soft? commitid 了,版本回退。
? ? ? ? 這里就不給大家進(jìn)行演示了。
? ? ? ? 10.刪除版本庫中的文件
? ? ? ? 命令:git rm filename
? ? ? ? ? ? ? ? 我們通過具體的實(shí)例來講解git rm
? ? ? ? 我們先創(chuàng)建file1,file2,file3,然后將他們刪除。
????????
?
? ? ? ? 此時(shí)使用git status來進(jìn)行查看內(nèi)容
? ? ? ? 我們?cè)谥恍?git commit 操作就能將文件給徹底刪除了。
? ? ? ? 總結(jié)使用git rm刪除版本庫中的文件的兩步: git rm filename +git commit -m " xxx"
? ? ? ? 如何恢復(fù)我們?cè)诠ぷ鲄^(qū)所不小心刪除的文件呢?
? ? ? ? 這里就可以使用撤銷操作了,因?yàn)閯h除本質(zhì)上也是修改。
????????
? ? ? ? 本篇文章完?。。。「兄x大家的耐心觀看。文章來源:http://www.zghlxwxcb.cn/news/detail-753675.html
還有的內(nèi)容將會(huì)在后面的文章中進(jìn)行介紹,如果你覺得對(duì)你有用的話可以給個(gè)贊。文章來源地址http://www.zghlxwxcb.cn/news/detail-753675.html
到了這里,關(guān)于分布式版本管理系統(tǒng)---->Git(Linux---centos(保姆式)講解1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!