丢弃不在索引中的更改
Contents
1. 概述
Git 工作目录可以包含不同类型的文件,包括暂存文件、未暂存文件和未跟踪文件。
在本教程中,我们将看到如何丢弃工作目录中不在索引中的更改。
2. 分析工作目录的状态
让我们检查一下工作目录的状态:
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
modified: gradle/maven-to-gradle/src/main/java/com/sample/javacode/DisplayTime.java
Untracked files:
(use "git add <file>..." to include in what will be committed)
gradle/maven-to-gradle/src/main/java/com/sample/javacode/TimeZones.java
no changes added to commit (use "git add" and/or "git commit -a")
在这里,我们可以看到一些已修改和取消暂存的文件,以及我们添加的新文件。
现在,让我们使用git add 暂存现有的 Java 文件并再次检查状态:
$ git add gradle/maven-to-gradle/src/main/java/com/sample/javacode/DisplayTime.java
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: gradle/maven-to-gradle/src/main/java/com/sample/javacode/DisplayTime.java
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
Untracked files:
(use "git add <file>..." to include in what will be committed)
gradle/maven-to-gradle/src/main/java/com/sample/javacode/TimeZones.java
在这里,我们可以看到我们的工作目录中有三类文件:
- 暂存文件 – DisplayTime.java
- 未暂存的文件 – README.md
- 未跟踪的文件 – TimeZones.java
3. 删除未跟踪的文件
未跟踪的文件是存储库中的新文件并且尚未添加到版本控制中。我们可以使用clean命令删除它们:
$ git clean -df
-df选项确保强制删除,并且还包括未跟踪的目录以进行删除*。*运行此命令将输出删除了哪些文件:
Removing gradle/maven-to-gradle/src/main/java/com/sample/javacode/TimeZones.java
现在,让我们再次检查状态:
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: gradle/maven-to-gradle/src/main/java/com/sample/javacode/DisplayTime.java
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: README.md
我们可以看到clean命令如何从我们的工作目录中删除未跟踪的文件。
4. 删除未暂存为提交的更改
现在我们已经删除了未跟踪的文件,我们要处理工作目录中的暂存文件和未暂存文件。我们可以使用带有“–”选项的checkout命令来删除所有未暂存以提交的更改:
$ git checkout -- .
让我们在运行命令后再次检查状态:
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: gradle/maven-to-gradle/src/main/java/com/sample/javacode/DisplayTime.java
我们可以看到我们的工作目录现在只包含分阶段的更改。