溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Git中恢復(fù)被強(qiáng)制推送push失蹤的代碼怎么編寫

發(fā)布時(shí)間:2021-11-02 17:52:20 來源:億速云 閱讀:313 作者:柒染 欄目:大數(shù)據(jù)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)Git中恢復(fù)被強(qiáng)制推送push失蹤的代碼怎么編寫,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。 

 前言

Git是一個(gè)易學(xué)難精的分布式版本控制系統(tǒng),被我們碼農(nóng)常用于代碼的管理。如果你還不了解Git,建議先通過廖雪峰的Git教程進(jìn)行了解,再來看本文,因?yàn)楸疚囊允褂眉记蔀橹?,不?huì)在基礎(chǔ)名詞上做過多解釋。

 

恢復(fù)被強(qiáng)制推送push失蹤的代碼

在常規(guī)的開發(fā)流程中,難免有時(shí)因?yàn)楦鞣N原因(例如需要使用git rebase)會(huì)需要使用到git push -f,也就是強(qiáng)制推送,該命令會(huì)覆蓋遠(yuǎn)程分支。

但如果操作不當(dāng),會(huì)容易把小伙伴的之前提交的commit給覆蓋掉,不要慌,這并不代表你小伙伴的commit已經(jīng)永遠(yuǎn)找不回來了,大部分情況下,他們還是可以被找回的。

git reflog 可以查看所有分支的所有操作記錄(包括(包括commit和reset的操作),包括已經(jīng)被刪除的commit記錄,git log則不能查看已經(jīng)刪除了的commit記錄

雖然有reflog這跟救命稻草,但由于Git會(huì)定時(shí)gc(回收),清理掉reflog,所以被人覆蓋后不要等待太久才進(jìn)行恢復(fù)操作,不然可能就真的找不回了。

 

操作方法

  1. 備份當(dāng)前工作區(qū)的數(shù)據(jù)

你可以使用git stash等命令備份下現(xiàn)在正在寫的代碼

  1. 在命令行輸入git reflog/git log -g

顯示所有歷史操作,找到你需要的提交(包括已經(jīng)被刪除的commit記錄,git log則不能查看已經(jīng)刪除了的commit記錄)

Git中恢復(fù)被強(qiáng)制推送push失蹤的代碼怎么編寫  

2.1 強(qiáng)制回退到當(dāng)時(shí)被刪除的commit

git reset --hard <SHA1>
 

2.2 或者直接

git cherry-pick <SHA1>
 

直接把當(dāng)時(shí)版本的工作拿回來。不過如果有沖突的話還要處理沖突。

  1. 強(qiáng)推上遠(yuǎn)程分支

git push -f origin <branch>
 

如果引起commit丟失的原因并沒有記錄在reflog 中,比如運(yùn)行了rm -Rf .git/logs/, 因?yàn)?reflog 數(shù)據(jù)是保存在 .git/logs/ 目錄下的,這樣就沒有 reflog 了。

可以使用 git fsck 工具,該工具會(huì)檢查倉(cāng)庫(kù)的數(shù)據(jù)完整性。如果指定 --full 選項(xiàng),該命令顯示所有未被其他對(duì)象引用 (指向) 的所有對(duì)象:

Git中恢復(fù)被強(qiáng)制推送push失蹤的代碼怎么編寫  

然后,用相同的方法就可以恢復(fù)它,即創(chuàng)建一個(gè)指向該 SHA 的分支。

是不是對(duì)于強(qiáng)推git push -f不再慌了呢?

上述就是小編為大家分享的Git中恢復(fù)被強(qiáng)制推送push失蹤的代碼怎么編寫了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI