嗨,我是東哥。
最近,有同學求助:不小心把Git遠端的master分支給刪了,該怎麽辦?
說實話,能刪除master分支,這位同學擁有的許可權不低啊,那麽,這個鍋一般會由誰來背呢?要是這位同學是一個新人,那麽,這個鍋領導背定了,反之,則是你主責,領導次之;職場就是這麽殘酷😂
我之前在stackoverflow上刷到過該問題:
I have deleted the master branch of a project by mistake
我覺得這個答案還是挺靠譜的,見下圖
下面,我將大概匯總一下該問題「 如何處理誤刪遠端master分支的問題 」的解決方案。
一定不要慌!!!
Git是個相對容錯性很高的系統,只要本地有程式碼,其實恢復遠端分支也不是難事。
刪除遠端 master 分支的影響:
遠端倉庫的預設分支消失:如果 master 是預設分支,那麽刪除它會導致遠端倉庫沒有預設分支。
團隊協作影響:團隊其他成員無法再從遠端 master 分支拉取或合並程式碼。
CI/CD 流程中斷:許多 CI/CD 工具依賴於預設分支,刪除 master 可能導致自動化構建和部署失敗。
能否恢復?
只要你或你的團隊成員有原生的 master 分支或者可以定位到曾經的送出點,就可以恢復遠端的 master 分支。
恢復步驟
以下是詳細的恢復步驟:
步驟 1:確認本地倉庫是否有 master 分支
在你的本地倉庫中,使用以下命令檢視是否存在 master 分支:
git branch
如果 master 分支存在,它會列在輸出中。如果存在,繼續執行步驟 3。
步驟 2:檢查本地 master 分支的最新送出
確保本地 master 分支有你想要恢復的最新送出:
git log master
步驟 3:恢復遠端 master 分支
推播本地 master 分支到遠端倉庫:如果你的本地 master 分支有你想要的最新送出,你可以將其推播到遠端倉庫:
git push origin master
設定遠端倉庫的預設分支:如果 master 是遠端倉庫的預設分支,你需要重新設定它。你可以在遠端倉庫的設定中更改預設分支,也可以使用命令列:
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/master
步驟 4:如果本地沒有 master 分支
如果你沒有本地 master 分支,但記得某個特定的送出,可以透過以下步驟恢復:
找到你想要的送出:使用 git reflog 或其他方法找到你想要恢復的送出。
建立一個新的 master 分支:建立一個新的 master 分支並指向你想要的送出:
git checkout -b master <commit>
推播新的 master 分支到遠端倉庫:然後推播新建立的 master 分支:
git push origin master
記住:刪除遠端 master 分支是一個嚴重的操作,一定要警惕!!!
但出現問題也不要慌,只要你有原生的master分支或知道曾經的送出點,就可以有條理地恢復遠端的master分支,並將影響降到最低。
有同學可能會問: 如果我刪除了原生的master分支,該如何恢復呢?
直接執行這個命令就好了,如下:
git branch master origin/master
# 如何預防?
好了,事兒解決完了,但是我們還得想辦法預防這種情況再次發生。畢竟,刪錯分支這種事兒,要是常發生,那真的讓人很崩潰。
可以透過以下這幾點措施來預防。
1. 限制許可權
首先,最好限制分支操作的許可權,不是每個人都能隨便刪除遠端分支,尤其是像master這樣的重要分支,可以透過設定Git的使用者許可權來實作這一點。
2. 分支保護
其次,可以對master分支進行保護。比如在GitHub上,可以在倉庫設定裏面的Branch Protection Rules裏面設定對master分支的保護規則。這樣可以防止分支被意外刪除。
3. 備份策略
再者,定期備份程式碼。可以透過設定一個自動化的備份流程,每天或者每周定期備份程式碼,確保即使出現問題也能快速恢復。
4. 加強培訓
最後,給團隊成員進行相關培訓,讓大家了解Git的操作,尤其是那些可能帶來災難性後果的命令,提高團隊的整體技術水平,減少誤操作的可能性。
作為程式設計師,如何管理程式碼,是你必須要學好的基本功,要是以前的話,我可能會推薦你用svn、cvs等程式碼管理工具,現在的話,直接學git吧,那些已經過時了😂
來這個網站好好學一下Git的基本操作吧!
Git入門手冊:https://www.j301.cn/manual.html
總之,刪錯分支這種事兒,不是常有的,但也不是絕無僅有的, 遇到問題,冷靜處理,找到解決辦法,吸取教訓,避免再犯。
好了,今天就聊到這裏吧~
熱門推薦