關於git回退版本的一點心得


我由於開發中不小心在master分支上開發,忘記了切換分支,最后我直接在master分支上提交,push,在開發分支上merge了master分支。

然后,同事告訴我他的代碼要准備上線了,然而我的代碼還沒測試通過肯定不能一起上線,於是,需要回退了。

平時項目中很少用到回退功能的,一直沒有怎么嘗試過git  reset 和git revert的區別,記憶也不深刻。

這次主要使用git  reset。

$ git reset --hard HEAD^        回退到上個版本
$ git reset --hard commit_id    退到/進到 指定commit_id
$ git push --force   強制推送到遠程,千萬不要拉取,否則又會把最新提交拉下來

git reset --hard在master回退到之前的某個版本之后,后面的提交記錄則都消失了,是完全回退到當時提交的模樣。而開發分支上之前合並的master分支的內容是不會跟着回退的,還是最新修改好的代碼,可以繼續在這基礎上開發、測試。

git reset其他用法體驗:

git reset是不會生成新的提交的,git revert會生成新的提交。

1、

git reset --mixed  

當前head指針指向回退到的提交記錄上,后幾次提交改變的文件放在了本地暫存區,

 

git push

 此時提交會提示本地代碼比遠程的落后,push失敗,改為git push --force 強制push, 會提示不允許強制push

git push --force

解決辦法如下:

gitlab如何支持強制push

然后強制push成功:

此時代碼已變為第二次提交時的兩個文件了:

 

 

提交記錄也恢復到了前兩次提交。

 git log可以查看當前存在的兩次提交記錄,git reflog可以查看所有提交記錄:

 

2、

git reset --soft 第四次提交的commit

文件全部恢復,本地暫存區有記錄。

3、

git reset --hard 第二次提交的commitid

 

========》具體這篇文章解釋的比較清楚

git revert 

git revert 第三次提交的commitid

git push

revert的結果是:只是把那一次的修改的東西刪除了,這里只是把第三次提交增加的3.txt刪除了,並且會增加一條提交記錄。

 


免責聲明!

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



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