Это не проблема с GIT.По замыслу это так и работает.Я запустил тест для двойной проверки, но если:
- Файл
file.out
является частью дерева - Что-то / один запускается
git rm file.out
.Это должно быть git rm
, если удаление не будет организовано, оно не будет воспроизводиться. - Вы создаете файл с тем же именем.Он будет указан как неотслеживаемый.
Это стандартное поведение GIT.Поэтапные изменения «почти» фиксируются, и точно так же, как воссоздание файла, ранее удаленного в другом коммите, будет отображаться как новый, так что это произойдет здесь.Обратите внимание, что если удаление не является поэтапным, произойдет то, что вы ожидаете от правильного поведения - git
будет знать, что это тот же файл.
Чтобы git
понимал, что файлы одинаковы, вам нужнобежать
git add file.out
, поэтому git
видит, что тот же файл все еще существует в области рабочей области, и просто перечисляет одну modified
, подготовленную для фиксации.Причина, по которой он работает следующим образом, заключается в том, что у вас есть дополнительный наполовину зафиксированный слой, который вы все еще можете поиграть и восстановить (например, контрольную точку в игре).
Что касается , почему Composer делает это, яЯ не уверен.Я думаю, что правильное поведение ставит все изменения файла, поэтому я не знаю, почему новый файл не добавляется в дерево.Если это просто вывод журнала, который не является частью источника, рассмотрите добавление *.out
к .gitignore
, хотя вы должны убедиться, что Composer не добавляет его (и не игнорирует игнорирование).