GIT продолжает вводить неуказанные изменения при оформлении заказа

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

Изменения, по-видимому, являются полным переписанием файла (ов), о котором идет речь. git diff не показывает, например, что все окончания строк изменились. Мы также используем SVN Mirror для внесения изменений из нашего старого репозитория subversion в trunk -> master. Все используют версию git версии 2.1 для Windows.

Следующие команды будут исправлять это временно, но это неизбежно возвращается

git rm --cache -r git reset --hard 

Пример:

 MINGW64 /c/code/git/repo (master) $ git status On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) nothing to commit, working tree clean MINGW64 /c/code/git/repo (master) $ git checkout - Switched to branch 'dev/test_branch' MINGW64 /c/code/git/repo (dev/test_branch) $ git status On branch dev/test_branch nothing to commit, working tree clean MINGW64 /c/code/git/repo (dev/test_branch) $ git checkout - Switched to branch 'master' Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) MINGW64 /c/code/git/repo (master) $ git status On branch master Your branch is ahead of 'origin/master' by 1 commit. (use "git push" to publish your local commits) Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: <snip-filename>.java modified: <snip-filename2>.java ... etc ... modified: <snip-lastfilename>.java no changes added to commit (use "git add" and/or "git commit -a") 

Изменить: проверка git diff -w, чтобы исключить пробельные изменения, не показывает различий, поэтому определенно кажется, что это связано с eol.

Для этой проблемы это было вызвано зеркалированием Subversion. Когда включено, окончания строк, поступающие из Subversion, не были исправлены автоматически, и поэтому их исходный eol. С помощью репозитория GIT, установленного либо через .gitattributes, либо с помощью пользовательских настроек по умолчанию, чтобы автоматически исправлять окончания строк, это приведет к несоответствию, где исходная строка заканчивается CRLF, а обновленная версия – только LF.

Это было определено с помощью

 git diff --ignore-space-at-eol 

который не показал отличий от предыдущей версии.

Решение состояло в том, чтобы зафиксировать и вытолкнуть отредактированные строки строки в GIT. Затем это отразилось на Subversion и снова включило их.

Для получения дополнительной информации я нашел очень полезное руководство здесь: https://help.github.com/articles/dealing-with-line-endings/