Тестирование измененных и добавленных файлов
В предыдущих шагах мы увидели, как команды git show --name-status и git diff-tree --name-status показывают символ A для добавленного файла. Теперь давайте посмотрим, как они работают, когда файл изменен.
Сначала убедитесь, что вы находитесь в директории ~/project/my-time-machine.
Давайте добавим еще одну строку в наш файл message.txt:
echo "Hello again, Future Me" >> message.txt
Оператор >> добавляет текст в конец существующего файла.
Теперь проверим статус нашего репозитория:
git status
Вы должны увидеть вывод, указывающий, что файл message.txt был изменен:
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 (use "git add" and/or "git commit -a")
Git правильно определяет, что файл был изменен.
Теперь подготовим это изменение для коммита (добавим его в индекс):
git add message.txt
И проверим статус еще раз:
git status
Теперь вывод должен показать, что изменение подготовлено для коммита:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: message.txt
Обратите внимание, что несмотря на то, что мы добавили содержимое, Git отслеживает это как измененный файл, потому что файл уже существовал в предыдущем коммите.
Наконец, давайте зафиксируем это изменение в коммите:
git commit -m "Add another message to the future"
Вы должны увидеть вывод, подтверждающий коммит:
[master a1b2c3d] Add another message to the future
1 file changed, 1 insertion(+)
Теперь у нас есть новый коммит. Давайте используем команду git show --name-status для последнего коммита (HEAD), чтобы увидеть его статус:
git show --name-status HEAD
Вывод будет похож на следующий:
commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <jane.doe@example.com>
Date: Mon Aug 7 10:05:00 2023 +0000
Add another message to the future
M message.txt
Обратите внимание на символ M перед message.txt. Это означает, что файл был Изменен в этом коммите.
Аналогично, если вы используете команду git diff-tree -r --name-status HEAD, вы также увидите статус M.
Различие между A (Добавлен) и M (Изменен) важно для понимания истории ваших файлов в Git. A означает, что файл был создан в этом коммите, а M означает, что файл существовал ранее, и его содержимое было изменено.