當前位置: 妍妍網 > 碼農

剛剛把git遠端master分支刪除了,求救...

2024-07-01碼農

嗨,我是東哥。

最近,有同學求助:不小心把Git遠端的master分支給刪了,該怎麽辦?

說實話,能刪除master分支,這位同學擁有的許可權不低啊,那麽,這個鍋一般會由誰來背呢?要是這位同學是一個新人,那麽,這個鍋領導背定了,反之,則是你主責,領導次之;職場就是這麽殘酷😂

我之前在stackoverflow上刷到過該問題:

I have deleted the master branch of a project by mistake

我覺得這個答案還是挺靠譜的,見下圖

下面,我將大概匯總一下該問題「 如何處理誤刪遠端master分支的問題 」的解決方案。

一定不要慌!!!

Git是個相對容錯性很高的系統,只要本地有程式碼,其實恢復遠端分支也不是難事。

刪除遠端 master 分支的影響:

  1. 遠端倉庫的預設分支消失:如果 master 是預設分支,那麽刪除它會導致遠端倉庫沒有預設分支。

  2. 團隊協作影響:團隊其他成員無法再從遠端 master 分支拉取或合並程式碼。

  3. 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

    總之,刪錯分支這種事兒,不是常有的,但也不是絕無僅有的, 遇到問題,冷靜處理,找到解決辦法,吸取教訓,避免再犯。

    好了,今天就聊到這裏吧~

    熱門推薦