Разберем на примере, как Git обрабатывает переименования файлов.
- Создайте файл
README.md
и создайте коммит. - Измените название файла на любое другое и проверьте статус:
На ветке master
Изменения, которые не в индексе для коммита:
(используйте «git add/rm <файл>…», чтобы добавить или удалить файл из индекса)
(используйте «git restore <файл>…», чтобы отменить изменения в рабочем каталоге)
удалено: README.md
Неотслеживаемые файлы:
(используйте «git add <файл>…», чтобы добавить в то, что будет включено в коммит)
INFO.md
нет изменений добавленных для коммита
(используйте «git add» и/или «git commit -a»)
Git думает, что мы удалили файл README.md
и создали файл INFO.md
, хотя мы просто переименовали его.
- Добавим изменений в индекс.
На ветке master
Изменения, которые будут включены в коммит:
(используйте «git restore --staged <файл>…», чтобы убрать из индекса)
переименовано: README.md -> INFO.md
После добавления изменений в индекс, Git сравнил содержимое файлов в коммите и в индексе и понял, что мы просто переименовали его.
- Проверьте изменения в индексе (
git diff --staged
):
diff --git a/README.md b/INFO.md
similarity index 100%
rename from README.md
rename to INFO.md
Строки “rename from README.md” и “rename to INFO.md” говорят о том, что файл был переименован.
- Измените содержимое файла, а затем проверьте статус и дифф:
На ветке master
Изменения, которые будут включены в коммит:
(используйте «git restore --staged <файл>…», чтобы убрать из индекса)
переименовано: README.md -> INFO.md
Изменения, которые не в индексе для коммита:
(используйте «git add <файл>…», чтобы добавить файл в индекс)
(используйте «git restore <файл>…», чтобы отменить изменения в рабочем каталоге)
изменено: INFO.md
diff --git a/INFO.md b/INFO.md
index e6c0014..6345b73 100644
--- a/INFO.md
+++ b/INFO.md
@@ -1,3 +1,5 @@
# To-Do List
Простое приложение для ведения списка дел.
+
+Более подробное описание...
- Добавьте изменения в индекс и снова посмотрите изменения в нем (
git diff --staged
):
diff --git a/README.md b/INFO.md
similarity index 64%
rename from README.md
rename to INFO.md
index e6c0014..6345b73 100644
--- a/README.md
+++ b/INFO.md
@@ -1,3 +1,5 @@
# To-Do List
Простое приложение для ведения списка дел.
+
+Более подробное описание...
Обратите внимание на строку “similarity index 64%”. Несмотря на изменения в файле, Git все равно смог определить, что файл был переименован.
- Создайте коммит (
git commit
). - Просмотрите изменения в коммите с помощью команды
git show
.
- Git рассматривает переименование как удаление файла и создание нового
- При добавлении файлов в индекс Git умеет отслеживать переименования
- Git отслеживает переименование, даже если файл был немного изменен
- При просмотре изменений с помощью команд
git diff --staged
иgit show
, можно увидеть, что файл был переименован