git还原指定文件到指定历史版本

相比较IDE提供的git图形化工具,我更喜欢使用命令行来操作git。

命令

git checkout <hash> <filename>

实验环境

假如我们的项目有如下文件

checkout$ tree src
src
└── main
    └── java
        └── com
            └── jianglei
                └── App.java

4 directories, 1 file

第一步:初始化git仓库

$ git init
Initialized empty Git repository in /Users/jianglei/yunhe/checkout/.git/

第二步:对App.java文件作二次修改并提交

$ echo "/* comment 1 */" >> src/main/java/com/jianglei/App.java 
$ git add src/main/java/com/jianglei/App.java 
$ git commit -m "comment 1"
[master (root-commit) 25ed983] comment 1
 1 file changed, 14 insertions(+)
 create mode 100644 src/main/java/com/jianglei/App.java
$ echo "/* comment 2 */" >> src/main/java/com/jianglei/App.java 
$ git add src/main/java/com/jianglei/App.java                   
$ git commit -m "comment 2"    

恢复App.java到第一次提交时的内容

查看第一次提交的hash

$ git log --pretty=oneline 
41c935343d379ac27883339e72d00824d281ad46 (HEAD -> master) comment 2
25ed9835b329b5b109cc9593136a82ec62d84b3c comment 1

执行恢复命令

$ git checkout 25ed9835b329 src/main/java/com/jianglei/App.java 
$ tail -n 1 src/main/java/com/jianglei/App.java 
/* comment 1 */

执行后最后一行变成了/* comment 1 */说明恢复成功了。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐