git撤回和檢視

2021-09-19 05:37:13 字數 2799 閱讀 7201

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 撤回的用法

在github中我們遇到的乙個很常見的需求是 如何將當前的 回退到之前的乙個版本,或者在回退到之前的版本後,如何再回到當前版本。假設乙個實際場景,假設我們的版本鏈是v1,v2,v3,v4,而我們當前工作目錄的版本是v4,我們想回退到v2,當回退到v2後,我們發現我回退錯了,向再次回退到v4,那這一些...

git怎麼撤回提交

git reset head 撤消上一次的commit 不帶引數預設是 mixed 例 git reset mixed head 也可以寫成git reset head 1 git reset head 2 如果你進行了2次commit,想都撤回,可以使用head 2 git reset fdaea...

git 新建分支 合併分支和撤回push操作

git 常用命令 git pull 從遠端拉取 git status 檢視檔案狀態 git add filename 新增檔案 git commit m 修改說明 提交檔案到本地倉庫 git push 提交 到遠端倉庫 git 新建分支 檢視當前所在分支 git branch 建立本地分支並切換到新...