文件版本控制方式
將工作目錄的代碼先提交到暫存區(qū),然后再由暫存區(qū)提交到本地倉(cāng)庫(kù)。
git status:查看工作區(qū)、暫存區(qū)狀態(tài)
測(cè)試:
⒈在一個(gè)已經(jīng)初始化的目錄下(例如test目錄下)創(chuàng)建文件test01.txt
⒉在里面寫點(diǎn)初始內(nèi)容
例如:
⒊通過Git Bash Here打開Git的命令行工具
執(zhí)行命令git status,查看效果
文件標(biāo)識(shí)紅色表示文件還沒有被添加到Git中進(jìn)行管理
接下來將文件添加到暫存區(qū)
git add [file name]:將工作區(qū)的信息(變化)添加到暫存區(qū)
再次觀察效果,文件變成綠色表示
git commit -m "msg" [file name]:將暫存區(qū)的內(nèi)容提交到本地庫(kù)
將文件提交到本地庫(kù)之后,查看狀態(tài),沒有任何文件展現(xiàn),說明工作區(qū),暫存區(qū),本地庫(kù)中的文件信息處于同步(相同)狀態(tài)。
將本地庫(kù)中的文件進(jìn)行修改,添加bbb
查看狀態(tài),文件又變紅了,說明工作區(qū)有新內(nèi)容,待添加到暫存區(qū)
重復(fù)首次操作,繼續(xù)add,然后繼續(xù)commit
最后查看狀態(tài),確保工作區(qū),暫存區(qū),本地庫(kù)再次同步。
git log:查看本地庫(kù)更新歷史記錄
觀察到我們一共為本地庫(kù),有提交過兩次記錄的記載
我們可以觀察到兩次提交,分別對(duì)應(yīng)兩個(gè)40位的哈希值,這就是我們提交后記錄的版本號(hào)
這種形式查看歷史日志是最原始的查看方式
接下來我們也可以通過其他兩種方式來查看歷史
git log --oneline:查看本地庫(kù)更新歷史記錄(簡(jiǎn)化版)
這樣做可以很簡(jiǎn)單的展現(xiàn)歷史信息
這種形式展現(xiàn)的哈希值為簡(jiǎn)化形式,通過也簡(jiǎn)化了提交的日期時(shí)間以及作者。
git reflog:查看本地庫(kù)更新歷史記錄(展現(xiàn)HEAD指針)
這種形式可以展現(xiàn)HEAD指針編號(hào)位置,我們以后可以通過該位置定位到我們想要的版本歷史。
準(zhǔn)備工作,在原有aaa和bbb的基礎(chǔ)上
新增歷史記錄ccc、ddd、eee、fff、ggg
可以使用git commit -am"msg"進(jìn)行添加和提交一次性操作
準(zhǔn)備工作后,開始前進(jìn)和后退的操作
git reset --hard [局部索引值]:基于索引值的操作
通過以上操作,先以觀察哈希值的方式查看歷史
通過git reset --hard eee的哈希 回到歷史
最后觀察vi test01.text 文件是回到了eee的歷史版本
同時(shí)可以通過以上的方式,回到最新歷史版本ggg
觀察又回到了ggg的版本
在次觀察歷史
觀察到前進(jìn)和回退的操作也會(huì)被忠實(shí)的記錄下來
git reset --hard HEAD^ :表示后退操作
一個(gè)^表示后退一步,N個(gè)^表示后退N步
觀察以上操作,我們通過后退的方式,后退到了fff
在進(jìn)行以下操作前,可以先回到最新版本ggg
前提:刪除前,文件存在時(shí)的狀態(tài)提交到了本地庫(kù)
通過以上方式查看狀態(tài),表示工作區(qū)、暫存區(qū)和本地庫(kù)處于同步狀態(tài)。
接下來,將test01.txt文件刪除
查看test文件夾狀態(tài)
通過以上觀察,表示工作區(qū)中少了文件,和本地庫(kù)不同步了,此時(shí)根據(jù)提示,我們可以將這次的刪除操作添加到暫存區(qū),并提交的本地庫(kù)。
注意:刪除文件后的git操作,和添加文件后的git操作方式是一致的,也是先add,再commit
我們現(xiàn)在相當(dāng)于徹底將這個(gè)文件刪除了,最新提交到本地庫(kù)的歷史也是處于將這個(gè)文件刪除的狀態(tài)了。
現(xiàn)在我們要將該文件找回!
由于我們以前提交過的每一個(gè)歷史版本都被忠實(shí)的記錄下來的,所以我們現(xiàn)在回到歷史就可以將文件找回了。(文件是被刪除了,但是歷史永遠(yuǎn)不會(huì)被刪除)
查看歷史版本
通過以上歷史版本我們觀察到,最后一個(gè)版本af1eb78是刪除了文件,但是我們可以看到最新的加入ggg的版本為c8f70b0,此時(shí)還是有test01.txt這個(gè)文件的,我們可以回到c8f70b0這個(gè)版本。
通過我們以上學(xué)習(xí)過的 git reset --hard [版本號(hào)] 就可以實(shí)現(xiàn)了
通過以上操作,觀察test文件夾中又有test01.txt這個(gè)文件了
以上的操作是刪除文件后,已經(jīng)將刪除狀態(tài)提交到本地庫(kù)了。
如果文件刪除后,刪除文件狀態(tài)只是在工作區(qū),或者剛剛到暫存區(qū),還沒有提交到本地庫(kù),如何恢復(fù)文件呢?
使用 git reset --hard HEAD來進(jìn)行恢復(fù)
git diff 文件名 : 將工作區(qū)中的文件和暫存區(qū)進(jìn)行比較
測(cè)試前,首先確保工作區(qū),暫存區(qū),本地庫(kù)處于同步狀態(tài)
觀察當(dāng)前最新版本(例如以下最新版本為ggg)
工作區(qū)新增hhh
接下來比較工作區(qū)中的該文件和暫存區(qū)的差別
通過觀察,看出工作區(qū)比暫存區(qū)多了hhh
還可以與本地庫(kù)的歷史版本進(jìn)行比較
git diff 本地庫(kù)中歷史版本 文件名