git restore
在上篇博客中留了一个问题,那就是git restore命令是做什么的,下面重点分析。
一、概述
git restore命令是撤销的意思,也就是把文件从缓存区撤销,回到未被追踪的状态。
该命令有git restore
二、详述
在git中有工作区、暂存区、仓库区(本地代码区)三部分,要注意git restore命令在工作区是不会其作用的,也就是一个文件在工作区,使用git restore是不起作用的。如下图
MyFirst2.java该文件未被加入暂存区,也就是未使用过git add MyFirst2.java命令,那么使用git restore命令如下,
可见使用git restore命令报错。从使用git status命令查看的结果也可以看出,对应在工作区未使用过git add命令的文件,是untracked files的文件,需要使用git add命令,加入暂存区,那么放到暂存区的文件如何回到工作区那,下面再看下git status 的截图
从上面的图片中知道MyFirst.java在暂存区中,看上边的提示git restore --staged
从上图中可以看到暂存区中已无该文件,而在untracked files(工作区)中有src/文件夹(该文件夹下的所以文件均未被追踪),下面使用git add src/命令,
可以看到src下的两个文件均添加到了暂存区。现在把MyFirst.java文件进行修改,如下
复制代码
package cn.com.my;
public class MyFirst {
public static void main(String[] args) {
System.out.println("a");
}
}
复制代码
使用git status查看状态,
从上面可以看出MyFirst.java出现了两次,第一次提示是使用git restore --stage
可以看到MyFirst.java从暂存区被移除了,现在看文件本身是否有变化
复制代码
package cn.com.my;
public class MyFirst {
public static void main(String[] args) {
System.out.println("a");
}
}
复制代码
从上面看无变化,也就是git restore --staged
此时MyFirst.java是下面的样子,
复制代码
package cn.com.my;
public class MyFirst {
public static void main(String[] args) {
System.out.println("a");
System.out.println("b");
}
}
复制代码
此时,使用git restore
此时,查看MyFirst.java文件的内容,
复制代码
package cn.com.my;
public class MyFirst {
public static void main(String[] args) {
System.out.println("a");
}
}
复制代码
看到文件的内容第二行打印没有了,为什么那,因为第二行打印是再把MyFirst.java加到暂存区后新增的,也就是在把文件加到暂存区后对文件进行修改,再执行git restore
下面把MyFirst提交到本地仓库,提交后的内容为,
复制代码
package cn.com.my;
public class MyFirst {
public static void main(String[] args) {
System.out.println("a");
}
}
复制代码
在该基础上进行修改,修改为下面的内容,
复制代码
package cn.com.my;
public class MyFirst {
public static void main(String[] args) {
System.out.println("a");
System.out.println("提交后修改");
}
}
复制代码
下面看git的状态,
看到上边给出了两个提示,先使用git restore
文件内容,
复制代码
package cn.com.my;
public class MyFirst {
public static void main(String[] args) {
System.out.println("a");
}
}
复制代码
可以看到使用git restore
可以看到使用了git add
三、总结
本文分析了git restore --stage
1、文件在暂存区且未作修改的情况
使用git restore --staged
2、文件在暂存区且已经修改的情况
使用git restore --staged
使用git restore
3、文件在本地代码库已经修改的情况
使用git add
使用git restore
对于git restore
对于git restore --staged

浙公网安备 33010602011771号