В каждом коммите git записывает состояние вашего исходного дерева, а не то, было ли переименование (или что-то еще), которое создало это состояние.Таким образом, если вы просто переименуете файл как обычно (а не с помощью git mv
), вывод git status
будет выглядеть примерно так:
# On branch master
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: foo.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# bar.txt
no changes added to commit (use "git add" and/or "git commit -a")
Если вы затем решите, что хотите записать состояниедерево с переименованным файлом, вы можете установить это изменение с помощью:
git rm foo.txt
git add bar.txt
... тогда git status
покажет вам:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# renamed: foo.txt -> bar.txt
... и вы можете зафиксироватьчто с git commit
как обычно:
git commit -m "Renamed foo.txt to bar.txt"
Важно иметь в виду, что когда git сообщает вам, что файл был переименован при просмотре истории, это потому, что он сработал это переименованиедолжно быть, если сравнивать состояние дерева от одной версии к другой - это не означает, что в истории была записана операция переименования.