我有一個項目,想恢復到大約12提交前。我想要恢復,推送到服務器並在生產服務器上進行測試。如果一切順利(錯誤消失),那麼我想保留此版本並轉儲導致錯誤的下12個提交。如果這個回覆過程沒有修復這個bug,那麼我想回到目前的頭上。暫時恢復到混帳提交併推送到服務器
我應該做什麼樣的git恢復?
我有一個項目,想恢復到大約12提交前。我想要恢復,推送到服務器並在生產服務器上進行測試。如果一切順利(錯誤消失),那麼我想保留此版本並轉儲導致錯誤的下12個提交。如果這個回覆過程沒有修復這個bug,那麼我想回到目前的頭上。暫時恢復到混帳提交併推送到服務器
我應該做什麼樣的git恢復?
我將通過創建一個新的測試分支接近這個,然後對有問題的12個提交進行覈對:
# from current feature branch
git checkout -b feature_test
# nuke 12 commits
git reset --hard HEAD~12
您可以將此分支推送到服務器並進行測試。如果你不喜歡你所看到的,你可以簡單地刪除feature_test
分支。如果您確實想恢復12次提交,那麼您還可以使用git reset
從實際功能分支中刪除12次提交。
如果您無法重寫遠程功能分支的歷史記錄,則可以使用git revert
恢復12次提交。在這種情況下,Git將在功能分支頭部的頂部創建12個提交,這將撤銷您想要移除的12個提交。
您可以使用git revert
進行一系列的提交,Git將爲每個回覆生成一個新的反向提交(因此共有12個提交)。
接下來,(可選)可以使用git rebase -i
將所有提交壓縮爲一個提交。
最後,你將那一個提交(或者,如果你跳過了南瓜,所有12)提交到你的服務器。
缺少轉儲部分(如果恢復也被隱藏,這可能就像'git show HEAD〜13 HEAD〜1>/tmp/dump.txt一樣簡單) – ThanksForAllTheFish
@ThanksForAllTheFish我讀過「dump」,如「throw離開「,在這種情況下,他們所需要的只是保持推回提交。 (或者,他們可以恢復回覆) –
我會做的是
git checkout -b current_master_bu
git checkout master
git reset --hard <old_commit_hash>
如果這個作品,太棒了!按更改主:git push -f
(小心改寫歷史等)
如果您需要返回到您保存的主人您只需合併備份分支: git merge current_master_bu
您錯過了第四個項目符號'git push -f',強制推回主服務器。這就是爲什麼我不會在不瞭解OP的上下文的情況下親自推薦此解決方案(如果您不確定自己的影響力,那麼重寫歷史記錄會很糟糕) – ThanksForAllTheFish
@ThanksForAllTheFish fixed – MeLight
您是否正在與其他人分享問題分支? –