Git 將代碼恢復到一個歷史的版本


Git 將代碼恢復到一個歷史的版本

要把代碼回到某個歷史版本 比如 test有兩種方法

暴力的方式

如果你的倉庫是自己在用(不影響別人),那么你可以使用 git reset --hard <target_commit_id> 來恢復到指定的提交,再用 git push -f 來強制更新遠程的分支指針。為了保證萬一需要找回歷史提交,我們可以先打一個 tag 來備份。

對於剛剛的例子,需要執行的命令就是:

// 備份當前的分支到 backup_commit
git tag backup_commit
git push origin backup_commit
// 重置 source 分支
git reset --hard 23801b2
// 強制 push 更新遠程分支
git push origin source -f

溫和的方式

如果你的倉庫是多人在協作,那么你這么操作會使用別人本地的代碼庫混亂,所以只能建一個新的提交,這個新的提交中把想取消的提交都 revert 掉,那么具體應該如何做呢?方法如下:

首先,和剛剛一樣,用 git reset --hard 23801b2 將代碼切換到目標提交的 id。接下來,用 git reset --soft origin/source 命令(source 分支),將當前代碼切換回最新的提交。

執行完上面兩步后,你的倉庫還是最新的提交,但是工作區變成了歷史的提交內容,這個時候用 git add 和 git commit 即可。

該方法需要保證 reset 的時候沒有別人做新的提交,如果有的話,會一並把別人的提交也撤銷了。所以還是挺危險的,慎用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM