在實際開發場景中,代碼是基于主分支(master)發布到線上的。團隊開發過程中,可能會有多個人的代碼在主分支進行提交或合并。那麼在線上出現bug,需要做代碼回滾時,如果别人沒有最新的提交,那麼我們可以用reset進行版本回退,否則,就可以考慮使用revert命令進行還原修改,不要影響到别人的提交。
代碼回滾的思路是比較簡單的: 首先查看代碼提交日志,日志中會展示已提交代碼的各個版本, 然後回滾到對應的版本即可。我們可以直接使用git命令來完成操作, 也可以使用開發工具IDEA自身集成的Git可視化插件。
2. 動手實踐2.1 使用git命令1)查看提交日志首先,用 git reflog 查看代碼提交日志,如下圖所示:
這裡左側是主要演示代碼,右側是對應的git操作,演示文本中的3行代碼分别對應3次提交。
2)代碼回滾
假設上述的案例中, 第3次也是最後一次提交有bug,那麼我們想要回滾到第2次提交,該如何操作呢?有以下兩種方案:
第一種方案
使用git reset --hard commit_id 回退到指定的版本,如下圖所示:
這裡的commit_id就是剛才查看到的日志中每個版本的标識, 執行完此命令代碼就會回滾到對應的版本。
補充: 開發中也常使用 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菜單,查看提交日志,如下圖
日志的展示區域,如下圖:
這裡的DemoController是主要的演示代碼,下面是對應的git提交日志,演示代碼中的3行代碼分别對應3次提交。
2)代碼回滾假設上述的案例中, 第3次也是最後一次提交有bug,那麼我們想要回滾到第2次提交,該如何操作呢?有以下兩種方案:
備注: 接下來的操作思路跟git命令操作思路完全一樣,隻是我們用idea中git可視化工具重新演示一下。
第一種方案
reset方式回滾代碼, 操作如下:
結果:
第二種方案
revert方式回滾代碼,操作如下:
結果:
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!