Почему git не показывает мои файлы как измененные? - PullRequest
1 голос
/ 01 октября 2019

Изменение файла

Я изменяю файл на диске, запускаю git status, ничего не меняется. Запустите git update-index --really-refresh, и измененный файл отобразится.

Так как пару недель у меня была эта ошибка несколько раз в день, я подозреваю, что это новая ошибка git4win, или, возможно, даже связанная с файловой системой Windows. Я использую git с момента его создания полтора десятилетия назад, так что это не «я забыл X». У меня была ошибка четыре раза за последние два часа. А потом я даже был на обеденном перерыве на один час!

$ git --version
git version 2.23.0.windows.1

Плохая теория

Сначала я подумал, что это как-то связано с подсистемой Windows для Linux-git, которую ябыл отдельно установлен. После удаления этой установки и клонирования всех моих репозиториев снова (в N-й раз) я все еще получаю эту ошибку.

Изменение добавленного файла

git отсутствует мои измененные файлы также относится к файлам, которые былидобавлены уже, но были изменены с тех пор. Это приводит к тому, что я фиксирую + отправляю множество файлов, которые я просмотрел + скомпилировал (либо в моей IDE, либо в cli), но их содержимое не совпадает и достаточно точно. Когда я запускаю update-index --really-refresh, я вижу, что я выдвинул файлы, которые были добавлены изначально, но не файл, который я изменил и скомпилировал.

Чем он не является

В этом нет ничегоделать с git ignore, как это происходит с уже добавленными файлами (см. второй сценарий выше). Это не имеет прямого отношения к WSL, так как я удалил там git. У меня нет странных настроек git:

core.symlinks=false
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
rebase.autosquash=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
credential.helper=manager
diff.astextplain.textconv=astextplain
user.name=Jonas Bystrom
user.email=...
core.autocrlf=true
core.pager=less -F -X
core.longpaths=true
alias.ca=commit -a
alias.nb=checkout -b
alias.quicklog=log --pretty=format:"%h %cr %cn %Cgreen%s%Creset"
alias.logdiff=log -p --stat
alias.search=log --source --all -p --decorate=full -G
push.default=upstream
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
remote.origin.url=ssh://...
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

Понятия не имею, что попробовать. Любые указатели того, что попробовать, приветствуются!

1 Ответ

1 голос
/ 03 октября 2019

Непосредственной причиной было то, что мои файлы были «предположительно неизменными», что можно проверить с помощью

$ git ls-files -v pom.xml
h pom.xml

. Этот флаг h означает, что git должен игнорировать его при поиске измененных файлов. Исправлено:

git update-index --no-assume-unchanged pom.xml

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

Редактировать: Когда я деактивировал плагин git4idea, это перестало происходить. Я думаю, это связано с тем, что происходит в git-сантехнике в сочетании с чем-то в git4idea. Подана ошибка с редакцией сообщества IDEA .

...