Краткий ответ: git rm --cached file1
Все, что действительно делает git mv
, это переименовывает файл (в файловой системе), а затем добавляет удаление и создание файла в индекс (промежуточная область).Это специально не отмечено.Другие механизмы впоследствии понимают, что это было переименование, видя, что содержимое, которое раньше называлось file1, теперь называется file2.
Поскольку команды git stash
изменяют индекс, они могут нарушать работу.Обратите внимание, что теперь у вас есть этап создания, но не удаление!(Обычно git-stash оставляет все без обработки после всплывающего окна, но в этом случае я думаю, что у него нет особого выбора, кроме как поместить новый файл в индекс, чтобы вы не знали, какой из них сохранить. Вы можете избежать этогокогда-либо происходило с git stash pop --index
, но это взрывает, если спрятанные изменения не могут быть применены корректно, поэтому это не по умолчанию.) git status
больше не может отображать это как переименование, потому что переименование эффективно разделено междуиндекс и рабочее дерево, и ни один из разделов не может требовать его полностью.
Просто запустите git rm --cached file1
, чтобы выполнить удаление (т. е. удалить файл1 из индекса), и оно снова будет отображаться как переименование.Вы также можете запустить git add -u
для автоматического добавления изменений, если у вас нет других изменений, которые вы не хотите ставить.
Обратите внимание, что на практике вам не нужно беспокоиться:когда вы все правильно готовите для фиксации (например, с помощью git add -u
), «проблема» решает сама себя.