git 查看和撤銷

linux下文本的新建和追加內容html

git cat-file -p ID可查看當前master的數據linux

觀察Git 內部如何儲存Commit 隨便便抓一個 Commit 的 SHA1 開始:git

git cat-file -p a08181bf3(觀察這個commit,找出 tree 位置 ) git cat-file -p ea44d629 (觀察 tree,找出任一個 blob SHA1) git cat-file -p d9647d8a (觀察blob 的內容)測試

經過git diff命令,可比較工做區與暫存區的差別網站

「diff --git a/index.html b/index.html」 ,表明的是對git裏面的命令,進行可視化顯示。其中「a/index.html」和「b/index.html 」分別表明的是暫存區和工做區中的index.html文件。 index 6cef113..684ae9d 表明兩個版本的git哈希值(暫存區的文件對象對應的哈希值6cef113,與工做區文件對應的哈希值684ae9d )。code

咱們能夠經過git cat-file -t查看git哈希值的類型htm

可經過 git cat-file -p查看其內容對象

"@@ -1,2 +1,3 @@" 表明差別的定位語句,減號後是原文件的開始行號和行數(若只有一行,就不顯示行數)。加號後是新文件的開始行號和行數。blog

上面的意思表示原文件從第一行開始,只有兩行。新文件從第一行開始,共三行get

"---" 表示變更前的文件

"+++" 表示變更後的文件

「abcdef」前面的+號,表明該行是新增的。

關於文件內容內容的每一行最前面,會有一個標記位。

若是爲空,表示該行無變化

若是是感嘆號(!),表示該行有改動

若是是減號(-),表示該行被刪除

若是是加號(+),表示該行爲新增

100644 表明當前文件類型和權限,100表明regular file,644表明權限是:擁有者(讀+寫),所屬組(讀),其餘人(讀)

4、如何比較工做區與本地倉庫的差別

經過git diff HEAD命令,可比較工做區與本地倉庫的差別。

5、如何比較暫存區與本地倉庫的差別

經過git diff --cached 命令,可比較工做區與本地倉庫的差別。(沒測試成功,緣由不明)

6、如何撤回工做區的改動

在git的工做區裏面,有的時候,不當心改動了某個文件,能夠使用git checkout -- file來取消上次改動,原理:把暫存區的數據加載到工做區覆蓋掉修改

7、如何撤回工做區的提交

撤回工做區的提交,也就是將暫存區裏面,因本次工做區裏提交,而修改的blog對象,回退到修改成以前的blog對象。

有的時候,須要提交到暫存區的文件不少,爲了簡便,咱們執行了以下命令:

git add .

將工做區內全部文件(已經添加git跟蹤的文件和還沒有添加到git跟蹤的文件),通通搞到暫存區,那麼怎樣撤回其中一個多少幾個文件呢?

固然是有的,咱們能夠使用git reset HEAD(或者git reset,HEAD可缺省)來從暫存區刪除內容,原理:在版本庫中把當前版本數據加載到暫存區覆蓋掉原來的

8、如何撤回暫存區的提交

當咱們執行了git commit 的時候,發現提交的內容有問題,或是不該該提交,咱們怎樣取消上次提交呢?

其實,就是改變版本庫當前分支指向的commit對象。首先來了解什麼是HEAD HEAD是一個引用,引用的是當前的分支,若是當前處於master分支,那麼HEAD就會指向master

好比,經過git log查看全部提交(思考:git log 跟 git reflog 的區別)

git log只有當前所在版本以前提交的commit記錄,git reflog有全部對本地版本庫的操做記錄

如何比較兩次提交(兩個版本)中的文件的差別 能夠用git diff 哈希值 哈希值,哈希值是Blog類型

固然,咱們也能夠經過git cat-file -p命令查對應commit(版本)的內容

branch 指向該 branch 最新的 commit HEAD 指向 current branch

參考 參考二

我的網站

相關文章
相關標籤/搜索