更新時間:2022年06月23日09時35分 來源:傳智教育 瀏覽次數(shù):
1. 解決思路
? 在實際開發(fā)場景中,代碼是基于主分支(master)發(fā)布到線上的。團隊開發(fā)過程中,可能會有多個人的代碼在主分支進行提交或合并。那么在線上出現(xiàn)bug,需要做代碼回滾時,如果別人沒有最新的提交,那么我們可以用reset進行版本回退,否則,就可以考慮使用revert命令進行還原修改,不要影響到別人的提交。
代碼回滾的思路是比較簡單的: 首先查看代碼提交日志,日志中會展示已提交代碼的各個版本, 然后回滾到對應的版本即可。我們可以直接使用git命令來完成操作, 也可以使用開發(fā)工具IDEA自身集成的Git可視化插件。
2. 動手實踐
2.1 使用git命令
1)查看提交日志
首先,用 `git reflog` 查看代碼提交日志,如下圖所示:
這里左側(cè)是主要演示代碼,右側(cè)是對應的git操作,演示文本中的3行代碼分別對應3次提交。
2)代碼回滾
假設上述的案例中, 第3次也是最后一次提交有bug,那么我們想要回滾到第2次提交,該如何操作呢?有以下兩種方案:
第一種方案
使用`git reset --hard commit_id` 回退到指定的版本,如下圖所示:
這里的commit_id就是剛才查看到的日志中每個版本的標識, 執(zhí)行完此命令代碼就會回滾到對應的版本。
補充: 開發(fā)中也常使用 `git reset --hard HEAD^` 來回滾到上一個版本。
這里的HEAD是指向當前版本的指針,HEAD^表示上個版本,HEAD^^表示上上個版本。
值得一提的是,reset回滾是將代碼從第3個版本徹底回退到第2個版本。在當前代碼中, 第3個版本的代碼不會得到任何保留。如果我們想回退到第2個版本,但是還要保留第3個版本中的部分代碼,那么可以使用第二種方案。
第二種方案
使用`git revert -n commit_id` 回退到指定的版本,如下圖所示:
因為revert撤銷操作, 會保留第3個版本的代碼,而第3個版本的代碼和第2個版本的代碼有沖突,那么就需要手動解決沖突之后,再次提交, 如下圖所示:
這樣操作的含義,就是回退到版本2,但是這個過程中保留了版本3的代碼,手動修改再次提交就是最新的代碼了。
2.2 使用IDEA自帶的git插件
IDEA自帶的git插件可以使用命令(跟上面的操作一樣),也可以支持可視化操作,這里主要演示可視化操作。
1)查看提交日志
首先,右單機項目,通過git菜單,查看提交日志,如下圖
日志的展示區(qū)域,如下圖:
這里的DemoController是主要的演示代碼,下面是對應的git提交日志,演示代碼中的3行代碼分別對應3次提交。
2)代碼回滾
假設上述的案例中, 第3次也是最后一次提交有bug,那么我們想要回滾到第2次提交,該如何操作呢?有以下兩種方案:
備注: 接下來的操作思路跟git命令操作思路完全一樣,只是我們用idea中g(shù)it可視化工具重新演示一下。
第一種方案
reset方式回滾代碼, 操作如下:
結(jié)果:
第二種方案
revert方式回滾代碼,操作如下:
結(jié)果: