亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網
    最全最豐富的資訊網站

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

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

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

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

    1、git倉庫相關概念的理解

    要想深入理解git命令,必須理解git倉庫相關的幾個概念。先看一下一份本地代碼目錄D:gittest目錄下:

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

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

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

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

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

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

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

    文件第三行和第四行之間,增加了一行,內容是……

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

    2、git命令講解

    幾個與查看狀態(tài)相關的命令:

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

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

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

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

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

    下面以一個具體的例子來說明本地文件修改會導致相關區(qū)域的變化

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    git status

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

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

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

    git diff –cached

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

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

    (3)將修改提交到本地倉庫

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

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

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

    git diff、git diff –cached 、git diff HEAD 會發(fā)現(xiàn)提示沒有差異。因為工作區(qū)的修改已經提交到本地倉庫,此時工作區(qū)、暫存區(qū)、本地倉庫的狀態(tài)是一致的。

    逆操作

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

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

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

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

    總結:

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

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

    推薦學習:《Git教程》

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