在 Git 中 Checkout 歷史版本

2021-09-21 16:41:13 字數 1344 閱讀 8992

昨天寫**的時候,誤刪了乙個檔案。今天發現的時候,commit 已經 push 到版本庫了。本想用git reset回退版本,找回檔案後重新提交。但是想起 git 是乙個版本控制系統哎,直接從版本庫里 checkout 出某個檔案的歷史版本不就好了?

想法挺好,但是很久沒用這個功能,自己已經不記得具體的命令了。於是查了下手冊,把和 checkout 歷史版本有關的幾個命令都記錄一下。

在 git 中從當前分支建立並檢出新分支的命令是

git checkout -b name-of-new-branch

這個命令實際上是

git checkout -b name-of-new-branch current-branch

的簡寫形式。也就是說,當我們不指定 checkout 起點時,git 預設從當前活動分支開始建立新的分支。

git 的每個提交都有乙個 sha1 雜湊值(hash 值)作為 id。我們可以在checkout命令中使用這些 id 作為起點。比如:

git checkout -b name-of-new-branch 169d2dc

這樣,git 的活動分支會切換到name-of-new-branch這個分支上,而它的內容與169d2dc這個分支一致。

注意:sha1 的雜湊值有 40 個字母,相當長。所以 git 允許我們在不引起歧義的情況下,使用雜湊值的前幾位作為縮寫。

首先說明,這樣做會產生乙個分離的 head 指標,所以個人不推薦這麼做。

如果我們工作在master分支上,希望 checkout 到dev分支上,我們會這麼做:

git checkout dev

這裡dev實際上是乙個指標的別名,其本質也是乙個 sha1 雜湊值。所以,我們很自然地可以用

git checkout

將某個歷史版本 checkout 到工作區。

大多數時候,我們可能只需要對某乙個檔案做細小的修補,因此只 checkout 該檔案就行了,並不需要操作整個 commit 或分支。

上一節我們介紹了如何將某個歷史版本完整地 checkout 到工作區。實際上,我們只需要在上一節的命令之後加上需要 checkout 的檔案即可。

git checkout file>

當然,有時候你需要將某個檔案的歷史版本 checkout 出來,並以乙個新的名字儲存。這時候可以這麼做:

git checkout :file> file>

在 Git 中 Checkout 歷史版本

昨天寫 的時候,誤刪了乙個檔案。今天發現的時候,commit 已經 push 到版本庫了。本想用git reset回退版本,找回檔案後重新提交。但是想起 git 是乙個版本控制系統哎,直接從版本庫里 checkout 出某個檔案的歷史版本不就好了?想法挺好,但是很久沒用這個功能,自己已經不記得具體的...

在 Git 中 Checkout 歷史版本

昨天寫 的時候,誤刪了乙個檔案。今天發現的時候,commit 已經 push 到版本庫了。本想用git reset回退版本,找回檔案後重新提交。但是想起 git 是乙個版本控制系統哎,直接從版本庫里 checkout 出某個檔案的歷史版本不就好了?想法挺好,但是很久沒用這個功能,自己已經不記得具體的...

git 學習(四)之checkout

檢出命令 git checkout 該命令的實質就是修改head本身的指向,該命令不會影響分支 游標 如master git checkout 5689dc4 這是處於分離頭指標狀態。git checkout b new branch name 建立新的分支 分離頭指標 狀態指的就是head頭指標指...