點擊上方“C語言與CPP編程”,選擇“關注/置頂/星標公眾號”
干貨福利,第一時間送達!
最近有小伙伴說沒有收到當天的文章推送,這是因為微信更改了推送機制,導致沒有星標公眾號的小伙伴刷不到當天推送的文章,無法接收到一些比較實用的知識和資訊。所以建議大家加個星標??,以后就能第一時間收到推送了。
前兩天,一讀者帶回來的一個經典的面試題,今天,給大家分享一下,如果有跳槽找工作意向的朋友可以積累一下。
面試官問:Git 如何撤回已 Push 的代碼?如果問你,你會嗎?
有兩種解決方法,如下:
在日常的開發中,我們經常使用Git來進行版本控制。有時候,我們可能會不小心將錯誤的代碼 Push 到遠程倉庫,或者想要在本地回退到之前的某個版本重新開發。
或者像我一樣,寫了一些感覺以后很有用的優化方案push到線上,又接到了一個新的需求。但是呢,項目比較重要,沒有經過測試的方案不能輕易上線,為了承接需求只能先把push上去的優化方案先下掉。
現在我的分支是這樣的,我想要在本地和遠程倉庫中都恢復到help文檔提交 的部分。
如果你的錯誤代碼不是很多,那么你其實可以通過與你想要恢復到的commit進行對比,然后手動刪除錯誤代碼,然后刪除不同的代碼。
按住 ctrl 選擇想要對比的兩個commit,然后選擇Compare Versions就能通過對比刪除掉你想要刪除的代碼。
這個方案在代碼很簡單時時非常有效的,甚至還能通過刪除后最新commit和想要退回的commit在Compare 一下保障代碼一致。
但是這個方法對于代碼比較復雜的情況來說就不太好處理了,如果涉及到繁雜的配置文件,那更是讓人頭疼。
而且,這樣還會保留錯誤提交的記錄,對于有強迫癥的我來說,有點接受不能。對此,git也有一套較為優雅的操作流程,同樣能解決這個問題。
這個時候會跳出四個選項供你選擇,我這里是選擇hard。
其他選項的含義僅供參考 ,因為我也沒有一一嘗試過。
Soft :#你之前寫的不會改變,你之前暫存過的文件還在暫存。
Mixed :#你之前寫的不會改變,你之前暫存過的文件不會暫存。
Hard :#文件恢復到所選提交狀態,任何更改都會丟失。你已經提交了,然后你又在本地更改了,如果你選hard,那么提交的內容和你提交后又本地修改未提交的內容都會丟失。
keep :#任何本地更改都將丟失,文件將恢復到所選提交的狀態,但本地更改將保持不變。你已經提交了,然后你又在本地更改了,如果你選keep,那么提交的內容會丟失,你提交后又本地修改未提交的內容不會丟失。


然后,之前錯誤提交的commit就在本地給干掉了。但是遠程倉庫中的提交還是原來的樣子,你要把目前狀態同步到遠程倉庫。也就是需要把那幾個commit刪除的操作push過去。
打開push界面,雖然沒有commit需要提交,需要點擊Force Push,強推過去。
需要注意的是對于一些被保護的分支,這個操作是不能進行的。需要自行查看配置,我這里因為不是master分支,所以沒有保護。
可以看到,遠程倉庫中最新的commit只有我們的help文檔 。在其上的三個提交都沒了。
注意: 以上使用的是2023版IDEA,如果有出入的話可以考慮搜索使用git命令。

1、C++訓練營,來了!
2、HarmonyOS 學習資料分享(無套路免費分享)
我組建了一些社群一起交流,群里有大牛也有小白,如果你有意可以一起進群交流。
歡迎你添加我的微信,我拉你進技術交流群。此外,我也會經常在微信上分享一些計算機學習經驗以及工作體驗,還有一些內推機會。
加個微信,打開另一扇窗
感謝你的分享,點贊,在看三連