教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Java培訓:Git實戰(zhàn)-上線出bug,如何代碼回滾

更新時間: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é)果:

0 分享到:
和我們在線交談!