回退版本

当代码仓库中有了提交记录后,就可以通过git log指令查看历史提交记录,如下所示。

  1. commit 948cd7c42785c62c3e7793991580fe7bb4645b08
  2. Author: 徐宜生 <xuyisheng@hujiang.com>
  3. Date: Sat Dec 12 21:02:06 2015 +0800
  4.  
  5. update readme
  6.  
  7. commit 0fb569c9fda8b01d3f480945bc95278c89428f0d
  8. Author: 徐宜生 <xuyisheng@hujiang.com>
  9. Date: Sat Dec 12 20:32:12 2015 +0800
  10.  
  11. modify README
  12.  
  13. commit ce8e133421f53f99f38bf7341eb985da8c168c8f
  14. Author: 徐宜生 <xuyisheng@hujiang.com>
  15. Date: Sat Dec 12 18:15:37 2015 +0800
  16.  
  17. add README
  18.  
  19. commit 6c8ebf02a1327be98634b34d755b87a5d81885fb
  20. Author: 徐宜生 <xuyisheng@hujiang.com>
  21. Date: Sat Dec 12 18:11:25 2015 +0800
  22.  
  23. init commit
  24. (END)

这些在前面的小节中已经有了讲解。这里要处理的问题是,如何回退到指定的某个历史提交,也就是开发中经常要遇到的版本回退问题。

在Git中,用HEAD表示当前版本,那么上一个版本就是HEAD^,上上一个版本就是HEAD^^,如果往上100个版本就不要这样写了,写成HEAD~100即可。

知道了如何用HEAD表示版本历史,那么要回退到指定的版本就很容易了,例如要回退到上个版本,代码如下所示。

  1. GradleTest git:(master) git reset --hard HEAD^
  2. HEAD is now at 0fb569c modify README

可以发现,HEAD也就是当前版本,已经移动到了另一个提交,这时候如果再查看git log,如下所示。

  1. commit 0fb569c9fda8b01d3f480945bc95278c89428f0d
  2. Author: 徐宜生 <xuyisheng@hujiang.com>
  3. Date: Sat Dec 12 20:32:12 2015 +0800
  4.  
  5. modify README
  6.  
  7. commit ce8e133421f53f99f38bf7341eb985da8c168c8f
  8. Author: 徐宜生 <xuyisheng@hujiang.com>
  9. Date: Sat Dec 12 18:15:37 2015 +0800
  10.  
  11. add README
  12.  
  13. commit 6c8ebf02a1327be98634b34d755b87a5d81885fb
  14. Author: 徐宜生 <xuyisheng@hujiang.com>
  15. Date: Sat Dec 12 18:11:25 2015 +0800
  16.  
  17. init commit
  18. (END)

由此可以证明,当前版本已经回退。所以要回退到哪个版本,只要通过HEAD找到对应的版本就可以了。同时你可以写commit id,也可以以HEAD^、HEAD^^来表示对应的版本。