git 檢視和撤銷

2022-05-30 21:48:14 字數 2813 閱讀 9003

linux下文字的新建和追加內容

git cat-file -p id可檢視當前master的資料

觀察git 內部如何儲存commit

隨便便抓乙個 commit 的 sha1 開始:

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 )。

我們可以通過git cat-file -t檢視git雜湊值的型別

可通過git cat-file -p檢視其內容

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

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

"---" 表示變動前的檔案

"+++" 表示變動後的檔案

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

關於檔案內容內容的每一行最前面,會有乙個標記位。

如果為空,表示該行無變化

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

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

如果是加號(+),表示該行為新增

100644 代表當前檔案型別和許可權,100代表regular file,644代表許可權是:擁有者(讀+寫),所屬組(讀),其他人(讀)

四、如何比較工作區與本地倉庫的差異

通過git diff head命令,可比較工作區與本地倉庫的差異。

五、如何比較暫存區與本地倉庫的差異

通過git diff --cached命令,可比較工作區與本地倉庫的差異。(沒測試成功,原因不明)

六、如何撤回工作區的改動

在git的工作區裡面,有的時候,不小心改動了某個檔案,可以使用git checkout -- file來取消上次改動,原理:把暫存區的資料載入到工作區覆蓋掉修改

七、如何撤回工作區的提交

撤回工作區的提交,也就是將暫存區裡面,因本次工作區里提交,而修改的blog物件,回退到修改為之前的blog物件。

有的時候,需要提交到暫存區的檔案很多,為了簡便,我們執行了如下命令:

git add .
將工作區內所有檔案(已經新增git跟蹤的檔案和尚未新增到git跟蹤的檔案),統統搞到暫存區,那麼怎樣撤回其中乙個多少幾個檔案呢?

當然是有的,我們可以使用git reset head(或者git reset,head可預設)來從暫存區刪除內容,原理:在版本庫中把當前版本資料載入到暫存區覆蓋掉原來的

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

當我們執行了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

參考

參考二

個人**

git 檢視和撤銷

linux下文字的新建和追加內容 git cat file p id可檢視當前master的資料 觀察git 內部如何儲存commit 隨便便抓乙個 commit 的 sha1 開始 git cat file p a08181bf3 觀察這個commit,找出 tree 位置 git cat fil...

Git的檢視,對比,撤銷,修改,重寫

1.檢視與對比git show commit tag tree blog git show master master 檢視master下的第一副提交 git show master 2 檢視master下的第二副提交 git show oneline 將資訊縮減 git show stat 輸出c...

git 修改 撤銷

git status 初始狀態是,什麼都沒有修改 on branch master nothing to commit working directory clean 修改了乙個檔案fu 狀態變成 root 172.18 4.100 gitlearn git status on branch mas...