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