Matlab показывает отсутствие статуса git, но git отлично управляет файлами

Я управлял контролем версий через командную строку в своем проекте, но включил интеграцию git в Matlab, чтобы было удобно и легко видеть, какие файлы были изменены.

Вчера я изменил свое мнение по поводу своих соглашений об именах и использовал заглавные имена некоторых файлов, которые затем были успешно добавлены и зафиксированы с помощью git через командную строку.

Теперь у меня есть маленький красный значок рядом с моими измененными файлами (только эти), который при наведении курсора говорит об отсутствии. Я по-прежнему могу получать доступ к файлам и изменять их, а также делать все, что обычно можно делать, но я не могу избавиться от красных значков.

Matlab показывает отсутствие статуса git, но git отлично управляет файлами

Я попытался отключить и снова включить интеграцию git в git, переместив папку .git и вернув ее в папку, а также открыв Matlab между ними.

Кажется, я не могу найти способ удалить настройки системы управления версиями для проекта и повторно инициировать систему управления версиями в ее текущем состоянии, поскольку я ожидаю, что это поможет.

редактировать - это в Windows 10 с использованием Matlab 2021b

Какую ОС вы используете? Окна?

Cris Luengo 18.03.2022 19:13

@КрисЛуенго Windows 10

askman 18.03.2022 19:14

Коммит, который «добавил» переименованные файлы, показывает только добавление или добавление и удаление старых имен или, возможно, отображение как переименование?

TTT 18.03.2022 19:21

@CrisLuengo Кажется, они отображаются как добавления (символы + рядом с каждым из файлов) без удалений или файлов с символами -. Запуск git ls-tree -r main --name-only подтверждает, что в настоящее время отслеживаются версии с заглавными и не с заглавными буквами.

askman 18.03.2022 19:31

Так что это проблема файловой системы, нечувствительной к регистру. Я бы переместил переименованные файлы во временный каталог, удалил обе версии файлов из git за одну фиксацию, затем переместил файлы обратно и заново добавил их в git. Вы теряете возможность отслеживать изменения для этих файлов, но я не вижу способа избежать этого в Windows.

Cris Luengo 18.03.2022 19:57

Да, вот куда я тоже попал, увидев и то, и другое. Я надеялся, что смогу переместить старые версии во временный каталог, а затем переименовать их как новые, не теряя истории, однако она исчезла. Но больше никаких надоедливых красных значков!

askman 18.03.2022 20:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка возникла из-за конфликта между файлами нижнего и верхнего регистра, которые распознавались как два разных файла. Это можно проверить, запустив git ls-tree -r HEAD --name-only.

Поскольку моя последняя фиксация была только изменением имени, я проверил предыдущую фиксацию и использовал git mv <old name> <new name>, чтобы убедиться, что git знает, что старый файл переименовывается, а не новый файл.

-- Редактировать --

История изменений теперь не отображается при использовании только git log <file>, однако при добавлении тега --follow, например. git log --follow <file name> по предложению ТТТ показывает всю историю, как и ожидалось.

Хотите верьте, хотите нет, но Git на самом деле не отслеживает переименования и, более того, git mv на самом деле не делает ничего отличного от того, что вы делали в первый раз, за ​​исключением, может быть, первого раза, когда вы только инсценировали добавление и забыли инсценировать удаление? git mv одновременно выполняет добавление и удаление. Кроме того, если вы сделали то, что сказали здесь, история изменений должна пройти через переименование без каких-либо проблем (в большинстве типичных представлений истории).

TTT 18.03.2022 21:13

Когда я внес изменения, я помню, что в первый раз было какое-то странное дело, файлы даже не помечались как разные. Увы, когда я внес изменения с помощью mv, просмотр журнала git для файлов не показал истории коммитов по сравнению с тем, что было до изменения, когда они отображали полную историю.

askman 18.03.2022 21:35

Попробуйте git log --follow. Я думаю, что некоторые графические интерфейсы используют это по умолчанию при просмотре истории файла.

TTT 18.03.2022 21:58

Другие вопросы по теме