Git 回滾篇git revert

場景
1.項目上線,發現有bug,要緊急回滾到上個版本;
2.多人合做,在qa出現了蹊蹺的bug,不肯定是哪一個分支帶來的,下掉可疑分支;
3.產品以爲仍是以前版本比較好。。git

噔噔噔噔git revert閃亮登場!github

1.回滾某次提交
git revert commitId緩存

2.回滾屢次提交
git revert old-commitId^..new-commitId安全

若是咱們想把這三個revert不自動生成三個新的commit,而是用一個commit完成,能夠這樣:
git revert -n old-commitId^..new-commitId
若是回滾的提交併不連續,致使生成多個新的commit,此時想用一個commit完成,能夠這樣:
git rebase合併屢次commit:
git rebase -i commitId
commitId是想要合併的起始commit,例如,先revert第三次提交,再revert第一次提交,想要只生成一條新的commit時,commitId爲revert第三次提交的commitId。.net

參考連接:http://www.javashuo.com/article/p-sbautznr-nm.htmlcode

爲何選擇revert,不要reset?
1.revert和reset相比有兩個重要的優勢。首先,它不會改變項目歷史,對那些已經發布到共享倉庫的提交來講這是一個安全的操做。
git reset 有不少種用法。它能夠被用來移除提交快照,儘管它一般被用來撤銷緩存區和工做目錄的修改。無論是哪一種狀況,它應該只被用於本地修改。切記,你無權重設公共歷史。blog

2.git revert 能夠針對歷史中任何一個提交,而 git reset 只能從當前提交向前回溯。 ip

參考連接:https://github.com/geeeeeeeeek/git-recipes/wiki/2.6-回滾錯誤的修改ci

相關文章
相關標籤/搜索