昨天寫**的時候,誤刪了乙個檔案。今天發現的時候,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頭指標指...