可能有一天我正在写代码,写了很久发现写错了,想恢复到一开始的状态,一个笨办法就是把刚刚写的代码一行一行的删除,不过这种方式成本太高,我们可以通过命令来回滚
工作区的代码修改:
$ git checkout HEAD <file>
$ git checkout -- <file>
测试:
① Test.java文件内容:
public class Test {
public static void main(String[] args) {
System.out.println();
}
}
② 在Test.java文件中添加两行代码:
public class Test {
public static void main(String[] args) {
System.out.println();
System.out.println("我是添加的代码1");
System.out.println("我是添加的代码2");
}
}
③ 此时这些代码还在工作区,并没添加到暂存区,想要回滚对当前Test.java文件的修改,执行命令:
User@6-cpgh0012 MINGW64 /d/mycode/company_frame/company_member/src/main/java/com/yingxue/lesson (feature-test)
$ git checkout -- Test.java
④ 执行命令后,Test.java文件内容恢复到未修改之前的状态:
public class Test {
public static void main(String[] args) {
System.out.println();
}
}
如果想要回滚,但是代码已经提交到暂存区了,不用担心,也能回滚,分两个步骤:
第1步:将暂存区的代码回滚到工作区
$ git reset HEAD
第2步:将工作区的代码回滚
$ git checkout -- <file>
测试:
① Test.java文件内容:
public class Test {
public static void main(String[] args) {
System.out.println();
}
}
② 在Test.java文件中添加两行代码:
public class Test {
public static void main(String[] args) {
System.out.println();
System.out.println("我是添加的代码1");
System.out.println("我是添加的代码2");
}
}
③ 将当前文件的修改添加到暂存区:
User@6-cpgh0012 MINGW64 /d/mycode/company_frame/company_member/src/main/java/com/yingxue/lesson (feature-test)
$ git add Test.java
④ 将暂存区的修改回滚到工作区:
User@6-cpgh0012 MINGW64 /d/mycode/company_frame/company_member/src/main/java/com/yingxue/lesson (feature-test)
$ git reset HEAD
Unstaged changes after reset:
M src/main/java/com/yingxue/lesson/Test.java
⑤ 回滚后代码状态仍然是修改后的状态:
public class Test {
public static void main(String[] args) {
System.out.println();
System.out.println("我是添加的代码1");
System.out.println("我是添加的代码2");
}
}
⑥ 将工作区的修改回滚:
User@6-cpgh0012 MINGW64 /d/mycode/company_frame/company_member/src/main/java/com/yingxue/lesson (feature-test)
$ git checkout -- Test.java
⑦ 执行以上命令后,Test.java文件内容恢复到未修改之前的状态:
public class Test {
public static void main(String[] args) {
System.out.println();
}
}
① Test.java文件内容:
public class Test {
public static void main(String[] args) {
System.out.println();
}
}
② 在Test.java文件中添加两行代码:
public class Test {
public static void main(String[] args) {
System.out.println();
System.out.println("我是添加的代码1");
System.out.println("我是添加的代码2");
}
}
③ 此时这些代码还在工作区,并没添加到暂存区,想要回滚对当前Test.java文件的修改:
点击 IDEA 右上角的回滚按钮

然后点击Rollback按钮:

④ 执行命令后,Test.java文件内容恢复到未修改之前的状态:
public class Test {
public static void main(String[] args) {
System.out.println();
}
}
① Test.java文件内容:
public class Test {
public static void main(String[] args) {
System.out.println();
}
}
② 在Test.java文件中添加两行代码:
public class Test {
public static void main(String[] args) {
System.out.println();
System.out.println("我是添加的代码1");
System.out.println("我是添加的代码2");
}
}
③ 此时这些代码还在工作区,并没添加到暂存区,想要回滚对当前Test.java文件的修改:
④ 执行命令后,Test.java文件内容恢复到未修改之前的状态:
public class Test {
public static void main(String[] args) {
System.out.println();
}
}
① Test.java文件内容:
public class Test {
public static void main(String[] args) {
System.out.println();
}
}
② 在Test.java文件中添加两行代码:
public class Test {
public static void main(String[] args) {
System.out.println();
System.out.println("我是添加的代码1");
System.out.println("我是添加的代码2");
}
}
③ 将文件的修改添加到暂存区:

④ 将工作区和暂存区的修改回滚:
方式1:点击 IDEA 右上角的回滚按钮

方式2:鼠标右键点击Rollback

然后点击 Rollback :

⑤ Test.java文件内容恢复到未修改之前的状态:
public class Test {
public static void main(String[] args) {
System.out.println();
}
}