Проверка отличий между измененными и добавленными файлами
В предыдущих шагах мы увидели, как команды 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 <[email protected]>
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
означает, что файл существовал ранее, и его содержимое было изменено.