欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          git中暫存區(qū)和本地庫(kù)的區(qū)別是什么

          git中暫存區(qū)和本地庫(kù)的區(qū)別:暫存區(qū)又稱索引區(qū),是工作區(qū)與本地倉(cāng)庫(kù)之間的一個(gè)過(guò)渡區(qū)域,它記錄了工作區(qū)的代碼狀態(tài)(有無(wú)改動(dòng),或者做了哪些改動(dòng));而本地倉(cāng)庫(kù)則記錄了本地代碼的狀態(tài)。

          git中暫存區(qū)和本地庫(kù)的區(qū)別是什么

          本教程操作環(huán)境:Windows7系統(tǒng)、Git2.30.0版、Dell G3電腦。

          1、git倉(cāng)庫(kù)相關(guān)概念的理解

          要想深入理解git命令,必須理解git倉(cāng)庫(kù)相關(guān)的幾個(gè)概念。先看一下一份本地代碼目錄D:gittest目錄下:

          git中暫存區(qū)和本地庫(kù)的區(qū)別是什么
          需要注意的是.git是隱藏目錄,需要顯示隱藏文件才能看到。

          工作區(qū)(working directory):簡(jiǎn)單來(lái)說(shuō)保存在本地的文件或目錄都屬于工作區(qū),平常修改代碼都是在工作區(qū)進(jìn)行的。一般本地的文件,除了隱藏的.git目錄,其它都屬于工作區(qū)。上圖中看到的mydir、file1.txt、file2.txt都是屬于工作區(qū)。

          暫存區(qū)(Stage):又稱索引區(qū)(index),顧名思義,它是工作區(qū)與本地倉(cāng)庫(kù)之間的一個(gè)過(guò)渡,它記錄了工作區(qū)的代碼狀態(tài)(有無(wú)改動(dòng),或者作了哪些改動(dòng))。位于.git目錄中。

          本地倉(cāng)庫(kù)(repository):記錄了本地代碼的狀態(tài),位于.git目錄中。

          關(guān)于狀態(tài)的理解:

          想一下,我們平時(shí)在修改一份重要的文件時(shí),肯定要先做一份備份,目的是防止修改出錯(cuò),最終還能恢復(fù)。假如這份文件本身很大,如果如果備份就會(huì)占用額外較多的空間,這樣就顯得不太劃算。還有另外一種方式,就是記錄文件的修改狀態(tài),而不是對(duì)文件本身進(jìn)行備份。文件狀態(tài)類(lèi)似如下描述:

          文件第一行:將xxx換成了****

          文件第三行和第四行之間,增加了一行,內(nèi)容是……

          說(shuō)白了文件狀態(tài)就是文件的修改記錄,根據(jù)修改記錄我們就可以知道我們對(duì)文件作了哪些修改,根據(jù)修改記錄也可以恢復(fù)到文件修改之前的狀態(tài)。

          2、git命令講解

          幾個(gè)與查看狀態(tài)相關(guān)的命令:

          git status 查看文件在工作區(qū)、暫存區(qū)、本地倉(cāng)庫(kù)之間的變化

          git diff 查看工作區(qū)與暫存區(qū)的差異

          git diff –cached 查看暫存區(qū)與本地倉(cāng)庫(kù)的區(qū)別

          git diff HEAD 查看工作區(qū)與本地倉(cāng)庫(kù)之間的差異

          一些命令對(duì)應(yīng)的操作如下:
          git中暫存區(qū)和本地庫(kù)的區(qū)別是什么

          下面以一個(gè)具體的例子來(lái)說(shuō)明本地文件修改會(huì)導(dǎo)致相關(guān)區(qū)域的變化

          修改之前,工作區(qū)、暫存區(qū)與本地倉(cāng)庫(kù)之間狀態(tài)是一致的

          (1)本地修改文件file1.txt 里面增加一行add this line

          git status 查看文件在工作區(qū)、暫存區(qū)、本地倉(cāng)庫(kù)倉(cāng)庫(kù)之間的變化

          git中暫存區(qū)和本地庫(kù)的區(qū)別是什么

          上圖中可以看到,Changes not staged for commit:,說(shuō)明文件在工作區(qū)已經(jīng)發(fā)生了變化,但是修改還未提交到暫存區(qū)

          git diff 查看工作區(qū)與暫存區(qū)的變化

          git中暫存區(qū)和本地庫(kù)的區(qū)別是什么

          從圖中可以看出,工作區(qū)與暫存區(qū)之間發(fā)生了變化,這是由于本地文件修改了,并且還未將修改提交到暫存區(qū)

          git diff HEAD 查看工作區(qū)與本地倉(cāng)庫(kù)之間的狀態(tài)

          git中暫存區(qū)和本地庫(kù)的區(qū)別是什么

          從上圖可以看出,工作區(qū)與本地倉(cāng)庫(kù)之間也出現(xiàn)了差異。很簡(jiǎn)單,此時(shí)本地倉(cāng)庫(kù)與暫存區(qū)的狀態(tài)是一致的

          git diff –cached 查看暫存區(qū)與本地倉(cāng)庫(kù),會(huì)發(fā)現(xiàn)它們之間缺失沒(méi)有差異

          (2)將本地修改提交到暫存區(qū)

          git add . 將本地的修改提交的暫存區(qū)

          git status

          git中暫存區(qū)和本地庫(kù)的區(qū)別是什么
          可以看到,修改已經(jīng)提交到了暫存區(qū):Changes to be committed:

          提交之后,用git diff 查看,會(huì)發(fā)現(xiàn)工作區(qū)與暫存區(qū)已經(jīng)沒(méi)有了差異。

          但是暫存區(qū)與工作區(qū)有了差異。

          git diff –cached

          git中暫存區(qū)和本地庫(kù)的區(qū)別是什么

          同樣,用git diff HEAD會(huì)發(fā)現(xiàn)工作區(qū)與本地倉(cāng)庫(kù)還是有差異

          (3)將修改提交到本地倉(cāng)庫(kù)

          git commit -m “add a line in file1.txt” 將修改從暫存區(qū)提交到本地倉(cāng)庫(kù)

          git status查看,提示Your branch is ahead of ‘origin/master’ by 1 commit.表明工作區(qū)的修改已經(jīng)提交的本地倉(cāng)庫(kù),但是還沒(méi)有推送到遠(yuǎn)程分支。

          git中暫存區(qū)和本地庫(kù)的區(qū)別是什么

          git diff、git diff –cached 、git diff HEAD 會(huì)發(fā)現(xiàn)提示沒(méi)有差異。因?yàn)楣ぷ鲄^(qū)的修改已經(jīng)提交到本地倉(cāng)庫(kù),此時(shí)工作區(qū)、暫存區(qū)、本地倉(cāng)庫(kù)的狀態(tài)是一致的。

          逆操作

          git add – git checkout 將工作區(qū)文件退回到暫存區(qū)狀態(tài),將工作區(qū)文件替換為暫存區(qū)文件。

          比如工作區(qū)修改了文件file1.txt,此時(shí)還未提交到暫存區(qū)。如果想放棄修改,就可以用

          git checkout file1.txt將文件退回到暫存區(qū)狀態(tài)(放棄修改)

          git commit – git reset HEAD 拉取最近一次提交到本地倉(cāng)庫(kù)的文件到暫存區(qū),不影響工作區(qū)。

          總結(jié):

          如果我們想放棄本地文件(工作區(qū))的某一次修改:

          • 如果修改還未提交到暫存區(qū),就可以使用git checkcout恢復(fù)
          • 如果修改已經(jīng)提交到暫存區(qū),還沒(méi)提交到本地倉(cāng)庫(kù),就先使用git reset HEAD 將暫存區(qū)狀態(tài)恢復(fù),然后使用git checkout 恢復(fù)工作區(qū)

          推薦學(xué)習(xí):《Git教程》

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)