Phpstorm после git checkout — как коммитить только измененные файлы?
Есть такая проблема - после переключения на другой бранч через git checkout в меню снизу (именно родными средствами ide) phpstorm отмечает абсолютно все файлы как модифицированные, т.е. они все появляются в списке, если сделать commit directory - хотя их дифф говорит, что они абсолютно идентичны файлам из последнего коммита.
Т.е. проблема воспроизводится таким образом:
1) Есть директория с исходниками, они запихнуты в бранч master.
2) Делаем checkout другого бранча - ветка переключилась.
3) Абсолютно все файлы помечены синим как измененные.
4) Если сразу же сделать commit directory на корневой директории, то в списке на коммит будут абсолютно все файлы, которые есть в проекте. Если нажать на любой из них и посмотреть дифф, то написано, что files are identical. Т.е. изменений с момента предыдущего коммита нет (что очевидно).
Как сделать так, чтобы phpstorm предлагал коммитить только реально измененные файлы? Как я понимаю, сейчас он смотрит тупо на дату модификации файлов в файловой системе, но она меняется при изменении ветки.
Кстати, проблема также присутствует и без чекаута, просто предлагает закоммитить меньше файлов.
У меня третьего пункта не бывает. Просто переключается на другую ветку и обычным (белым) цветом. Вы точно комитите/пушите файлы перед переключением на другой бранч?
Да, перед переключением в новый бранч все файлы были закоммичены. В новом (созданном) бранче после изменений файлы тоже были закоммичены (только измененные).
После переключения обратно в master началась проблема. Теперь при переключении бранчей всегда все файлы отмечаются синим.
Клиентских ос две - w7 и gentoo, в обоих одна и та же проблема с ide. А директория с файлами подмонтирована с линукс сервера по smb (для w7) и по nfs (для линуха).
И гит инит не делал - не хочется терять коммиты (это единственный репозиторий, ни куда не пушится), а новый проект в ide создавал - не помогает. Вернее, помогает до первого чекаута.
moooV: Единственное, с чем сталкивался боле-менее подобным, так это при разных используемых системах использовались разные переносы строк - /n /r - то есть репозиторий был на одной системе, а коммиты с разных. И тогда при коммитах просто файлы были синими, а изменений не было. Вверху по середине правда было уведомление что переносы разные, у вас случаем такого нету при коммитах после смены бранча? Проверьте конечно, но это вряд ли касается вас, так как репозиторий у вас на той же ос
vladamir smertniy:
CRLF-LF проверял с самого начала, это точно не оно. Да и в настройках коммитов стоит, чтобы выбрасывало предупреждение при коммите с CRLF.
При этой проблеме в окне диффа написано, что у файлов разные окончания строк. А тут - именно, файлы одинаковые. На всякий случай снял еще и md5 двух версий файлов - они абсолютно одинаковые.
vladamir smertniy:
Все, спасибо, помогло! Дело и правда в core.fileMode. Вылечилось вот так: $ git config core.fileMode false
В общем, дело было в чмодах на файлах (возможно, из-за работы по сетевой шаре), но это уже совсем другая история.
В общем, решил абстрагироваться от иде и просто зашел в директорию и проверил гит из консоли - git status показал, что файлы изменены, хотя чексуммы совпадают. Сделал одному из них git diff - получил вот такое:
old mode 100644
new mode 100755
Поставил fileMode в false, файлы теперь чекаутятся нормально.
PS.
Да, у меня уже лет 10 такой шрифт и такая подсветка синтаксиса: по-другом очень трудно код воспринимать. Кстати, проблем из-за немоноширинности еще было - полет отличный.