Как проверить, был ли файл удален в Git

GitGitBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы узнаете, как проверить, был ли файл удален в репозитории Git. Мы рассмотрим различные методы для определения удаленных файлов, в том числе использование команды git log для просмотра истории изменений и git status для просмотра текущего состояния рабочего каталога.

Путем практического выполнения шагов вы создадите файл, зафиксируете изменения в нем (сделаете коммит), а затем удалите файл, наблюдая, как Git отслеживает эти изменения. В частности, вы будете использовать команду git log -- <file>, чтобы увидеть коммит, в котором файл был удален, и git status, чтобы увидеть удаленные файлы до того, как изменения будут зафиксированы (сделаны коммит). В конце вы протестируете эти методы на существующих файлах, чтобы закрепить свои знания.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BasicOperationsGroup -.-> git/rm("Remove Files") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560026{{"Как проверить, был ли файл удален в Git"}} git/status -.-> lab-560026{{"Как проверить, был ли файл удален в Git"}} git/commit -.-> lab-560026{{"Как проверить, был ли файл удален в Git"}} git/rm -.-> lab-560026{{"Как проверить, был ли файл удален в Git"}} git/log -.-> lab-560026{{"Как проверить, был ли файл удален в Git"}} end

Использование git log -- <файл> для проверки удаления

На этом этапе мы рассмотрим, как использовать команду git log для просмотра истории изменений в нашем репозитории, с особым вниманием к тому, как она отображает удаление файлов.

Сначала убедимся, что мы находимся в директории нашего проекта. Откройте терминал и введите:

cd ~/project/my-time-machine

Теперь создадим новый файл, который мы позже удалим. Назовем его to_be_deleted.txt.

echo "This file is temporary." > to_be_deleted.txt

Проверим, что файл был создан:

cat to_be_deleted.txt

Вы должны увидеть:

This file is temporary.

Теперь добавим этот файл в область подготовленных изменений (staging area) и зафиксируем его в репозитории. Таким образом, его существование будет записано в истории Git.

git add to_be_deleted.txt
git commit -m "Add a file to be deleted"

Вы должны увидеть вывод, похожий на следующий, который указывает на создание нового коммита:

[master <commit-id>] Add a file to be deleted
 1 file changed, 1 insertion(+)
 create mode 100644 to_be_deleted.txt

Теперь удалим файл с помощью команды rm:

rm to_be_deleted.txt

Файл теперь удален из вашей файловой системы. Но что об этом знает Git? Проверим статус:

git status

Вы должны увидеть что-то вроде этого:

On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    to_be_deleted.txt

no changes added to commit but untracked files present (use "git add" to track)

Git правильно определяет, что файл был удален. Это происходит потому, что Git отслеживает состояние ваших файлов. Когда отслеживаемый файл удаляется, Git замечает это изменение.

Теперь зафиксируем это удаление. Снова используем git add, чтобы добавить удаление в область подготовленных изменений, а затем выполним коммит.

git add to_be_deleted.txt
git commit -m "Delete the temporary file"

Вы должны увидеть вывод, указывающий на то, что удаление было зафиксировано:

[master <commit-id>] Delete the temporary file
 1 file changed, 1 deletion(-)
 delete mode 100644 to_be_deleted.txt

Наконец, используем git log для просмотра истории, включая удаление.

git log

Вы увидите две записи о коммитах. Самая последняя запись будет иметь сообщение "Delete the temporary file" и покажет, что файл to_be_deleted.txt был удален.

Нажмите q, чтобы выйти из режима просмотра журнала.

Это показывает, что Git отслеживает не только создание и изменение файлов, но и их удаление, предоставляя полную историю эволюции вашего проекта.

Использование git status для удаленных файлов

На этом этапе мы будем дальше изучать, как команда git status помогает нам управлять удаленными файлами до того, как зафиксировать изменения.

Убедитесь, что вы по-прежнему находитесь в директории проекта:

cd ~/project/my-time-machine

Ранее мы удалили файл to_be_deleted.txt и зафиксировали это удаление. Теперь создадим еще один файл и удалим его, не фиксируя удаление сразу.

Создайте новый файл с именем another_file.txt:

echo "This is another file." > another_file.txt

Добавьте и зафиксируйте этот новый файл:

git add another_file.txt
git commit -m "Add another file"

Вы должны увидеть вывод, подтверждающий коммит:

[master <commit-id>] Add another file
 1 file changed, 1 insertion(+)
 create mode 100644 another_file.txt

Теперь удалим файл another_file.txt с помощью команды rm:

rm another_file.txt

Файл теперь удален из вашей файловой системы. Проверим статус нашего репозитория:

git status

На этот раз вывод будет похож на следующий:

On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        deleted:    another_file.txt

no changes added to commit but untracked files present (use "git add" to track)

Обратите внимание, что Git распознает удаление и перечисляет another_file.txt в разделе "Changes not staged for commit" (Изменения, не подготовленные для коммита). Это означает, что Git знает, что файл удален, но это изменение еще не подготовлено для включения в следующий коммит.

Вот здесь важный момент: удаление файла из файловой системы не автоматически добавляет это удаление в область подготовленных изменений в Git. Вам нужно явно сказать Git, что вы хотите записать это удаление в истории.

Команда git status - это окно в текущее состояние вашего репозитория. Она сообщает, какие файлы были изменены, какие новые и неотслеживаемые, а также какие были удалены. Регулярно проверяя git status, вы можете быть в курсе изменений в проекте и решать, какие изменения вы хотите включить в следующий коммит.

На следующем этапе мы рассмотрим, как Git обрабатывает существующие файлы, которые не были удалены.

Тестирование существующих файлов

На этом этапе мы узнаем, как Git обрабатывает изменения в файлах, которые уже отслеживаются.

Убедитесь, что вы находитесь в директории проекта:

cd ~/project/my-time-machine

У нас есть файл message.txt, который мы создали и зафиксировали в первом лаб. занятии. Изменим этот файл. Мы можем использовать команду echo с оператором >>, чтобы добавить текст в существующий файл.

echo "Hello again, Future Me!" >> message.txt

Оператор >> добавляет текст в конец файла, а не перезаписывает его (что бы сделал оператор >).

Посмотрим на содержимое файла, чтобы подтвердить изменения:

cat message.txt

Вы должны увидеть обе строки:

Hello, Future Me
Hello again, Future Me!

Теперь проверим статус нашего репозитория с помощью команды git status:

git status

Вывод будет выглядеть примерно так:

On branch 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:   message.txt

no changes added to commit but untracked files present (use "git add" to track)

Git правильно определяет, что файл message.txt был "изменен". Он знает это, потому что сравнивает текущую версию файла в рабочей директории с версией, сохраненной в последнем коммите.

Как и в случае с удаленными файлами, Git сообщает, что изменения "не подготовлены для коммита". Это означает, что вы изменили файл, но еще не сообщили Git, что хотите включить эти конкретные изменения в следующую точку сохранения.

Это стандартный рабочий процесс в Git: вы вносите изменения в файлы, затем используете git status, чтобы увидеть, что вы изменили, затем используете git add, чтобы подготовить к коммиту изменения, которые вы хотите сохранить, и, наконец, используете git commit, чтобы сохранить эти подготовленные изменения как новую версию в истории проекта.

Понимание вывода команды git status - это ключ к эффективной работе с Git. Он дает ясное представление о состоянии вашего проекта и направляет вас на следующие шаги, которые вам нужно предпринять, чтобы записать изменения.

Резюме

В этом лаб. занятии мы научились проверять, был ли файл удален в Git. Мы начали с создания и фиксации файла, чтобы он появился в истории репозитория. Затем мы удалили файл с помощью команды rm и посмотрели, как git status точно сообщает об удалении как об изменении. Наконец, мы зафиксировали удаление, записав это событие в историю Git.

В ходе этих шагов мы поняли, что Git отслеживает удаление файлов и предоставляет такие инструменты, как git status, чтобы выявить эти изменения до их фиксации. Этот процесс показывает, как Git сохраняет запись о событиях в жизненном цикле файлов, включая создание и удаление.