1. Обзор
Рабочий каталог Git может содержать различные типы файлов, включая промежуточные файлы, неподготовленные файлы и неотслеживаемые файлы.
В этом руководстве мы увидим, как отменить изменения в нашем рабочем каталоге, которых нет в файле index.
2. Анализ состояния рабочего каталога
В нашем примере предположим, что мы разветвили и клонировали репозиторий Git , а затем внесли некоторые изменения в наш рабочий каталог.
Давайте проверим состояние нашего рабочего каталога:
$ 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")
Здесь мы можем видеть некоторые файлы, которые были изменены и не проиндексированы, а также новый файл, который мы добавили.
Теперь давайте подготовим существующий файл Java с помощью git add
и снова проверим состояние:
$ 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
Мы видим, как команда очистки
удалила неотслеживаемый файл из нашего рабочего каталога.
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
Мы видим, что наш рабочий каталог теперь содержит только поэтапные изменения.
5. Вывод
В этом руководстве мы увидели, как наш рабочий каталог может содержать промежуточные, неподготовленные и неотслеживаемые файлы среди файлов, которые в настоящее время не находятся под контролем версий Git.
Мы также видели, как git clean -df
и git checkout — .
может удалить все неустановленные изменения из нашего рабочего каталога.