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

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

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

更新時(shí)間:2022年06月23日09時(shí)35分 來源:傳智教育 瀏覽次數(shù):

  1. 解決思路

  ? 在實(shí)際開發(fā)場景中,代碼是基于主分支(master)發(fā)布到線上的。團(tuán)隊(duì)開發(fā)過程中,可能會(huì)有多個(gè)人的代碼在主分支進(jìn)行提交或合并。那么在線上出現(xiàn)bug,需要做代碼回滾時(shí),如果別人沒有最新的提交,那么我們可以用reset進(jìn)行版本回退,否則,就可以考慮使用revert命令進(jìn)行還原修改,不要影響到別人的提交。

  代碼回滾的思路是比較簡單的: 首先查看代碼提交日志,日志中會(huì)展示已提交代碼的各個(gè)版本, 然后回滾到對(duì)應(yīng)的版本即可。我們可以直接使用git命令來完成操作, 也可以使用開發(fā)工具IDEA自身集成的Git可視化插件。

  2. 動(dòng)手實(shí)踐

  2.1 使用git命令

  1)查看提交日志

  首先,用 `git reflog` 查看代碼提交日志,如下圖所示:

  這里左側(cè)是主要演示代碼,右側(cè)是對(duì)應(yīng)的git操作,演示文本中的3行代碼分別對(duì)應(yīng)3次提交。

  2)代碼回滾

  假設(shè)上述的案例中, 第3次也是最后一次提交有bug,那么我們想要回滾到第2次提交,該如何操作呢?有以下兩種方案:

  第一種方案

  使用`git reset --hard commit_id` 回退到指定的版本,如下圖所示:

  這里的commit_id就是剛才查看到的日志中每個(gè)版本的標(biāo)識(shí), 執(zhí)行完此命令代碼就會(huì)回滾到對(duì)應(yīng)的版本。

  補(bǔ)充: 開發(fā)中也常使用 `git reset --hard HEAD^` 來回滾到上一個(gè)版本。

  這里的HEAD是指向當(dāng)前版本的指針,HEAD^表示上個(gè)版本,HEAD^^表示上上個(gè)版本。

  值得一提的是,reset回滾是將代碼從第3個(gè)版本徹底回退到第2個(gè)版本。在當(dāng)前代碼中, 第3個(gè)版本的代碼不會(huì)得到任何保留。如果我們想回退到第2個(gè)版本,但是還要保留第3個(gè)版本中的部分代碼,那么可以使用第二種方案。

  第二種方案

  使用`git revert -n commit_id` 回退到指定的版本,如下圖所示:

  因?yàn)閞evert撤銷操作, 會(huì)保留第3個(gè)版本的代碼,而第3個(gè)版本的代碼和第2個(gè)版本的代碼有沖突,那么就需要手動(dòng)解決沖突之后,再次提交, 如下圖所示:

  這樣操作的含義,就是回退到版本2,但是這個(gè)過程中保留了版本3的代碼,手動(dòng)修改再次提交就是最新的代碼了。

  2.2 使用IDEA自帶的git插件

  IDEA自帶的git插件可以使用命令(跟上面的操作一樣),也可以支持可視化操作,這里主要演示可視化操作。

  1)查看提交日志

  首先,右單機(jī)項(xiàng)目,通過git菜單,查看提交日志,如下圖

  日志的展示區(qū)域,如下圖:

  這里的DemoController是主要的演示代碼,下面是對(duì)應(yīng)的git提交日志,演示代碼中的3行代碼分別對(duì)應(yīng)3次提交。

  2)代碼回滾

  假設(shè)上述的案例中, 第3次也是最后一次提交有bug,那么我們想要回滾到第2次提交,該如何操作呢?有以下兩種方案:

  備注: 接下來的操作思路跟git命令操作思路完全一樣,只是我們用idea中g(shù)it可視化工具重新演示一下。

  第一種方案

  reset方式回滾代碼, 操作如下:


  結(jié)果:

  第二種方案

  revert方式回滾代碼,操作如下:




  結(jié)果:

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