Git окончания строки - не может быть нажата, reset и теперь не может пересобираться по завершению фиктивных строк
У меня есть gitattributes
я добавил к нему gitattributes
и работал над ним нормально. Я синхронизирую его через Dropbox с другой машиной. Когда я открыл его на другой машине, в неразмеченной области внезапно появилась куча файлов как общая разница (весь файл - огромная разница, что означает разницу в концах строк) - мои окончания crlf в основном .* text=auto
и я работаю над окна. Я попытался спрятать изменения, сбросить ветку и т.д. В конце концов я решил зафиксировать файлы, а затем сделал некоторые другие коммиты, которые я хотел переупорядочить (и сквош) до фиксации конца строки. Когда я пытаюсь перебазировать, я получаю:
error: Your local changes to the following files would be overwritten by merge
# those same files
Please, commit your changes or stash them before you can merge.
Aborting
Could not apply 89b25b81fff1a1e7893319e123aaaca9c4162a95... <commit message>
Конечно заначка не работает
Это ошибка?
Связанные с:
РЕДАКТИРОВАТЬ Ничего общего с машинами - на той же машине некоторые (...) операции просто делают эти файлы (они находятся в .gitattributes
виде текста) в разделе "изменено". Единственный обходной путь, который, кажется, существует:
git rm --cached -r .
git reset --hard
ИСПОЛЬЗУЙТЕ ВНИМАТЕЛЬНО
РЕДАКТИРОВАТЬ: взломать выше перешел в псевдоним статуса:
[alias]
crlf = !git rm -r . --cached -q && git reset --hard
ОБНОВЛЕНИЕ 2015.09.30: У меня есть git-репозиторий в разделе NTFS, который я использую из Windows 7 и Arch Linux в среде двойной загрузки. Когда я закрываю окна и загружаюсь в arch, два файла (html) отображаются как общие различия (различия в конце строки). Вышеупомянутый обходной путь не работает - если вы не примените его несколько раз, обновляя графический интерфейс между...
Мои .gitattributes
:
* text=auto
*.py text diff=python
*.html text
.project text
*.pkl -text
# M$ files
*.bat text eol=crlf
# UNIX files
**/generate_second_post text eol=lf
# git files - have them with LF, as I edit them via the shell (echo etc)
*.gitignore text eol=lf
*.gitattributes text eol=lf
NB: linux позволяет мне фиксировать, переключать ветки и т.д., Но не позволяет перебазировать - плюс эти различия всегда появляются в gitk/git gui.
2018/12/14 перешел на Mac, и мой обходной путь больше не работает. Я отправил сообщение в список рассылки git: https://marc.info/?l=git&m=154482149623324&w=2.
Надеюсь, это привлечет внимание
$ git --version
git version 2.19.2
Ответы
Ответ 1
Сегодня мы столкнулись с этой проблемой, когда проблема возникла из-за некоторых связанных с CRLF проблем, связанных с недавно добавленным файлом .gitattributes
с одной строкой * text=auto
. Когда вы пересобираете или создаете новую ветку, указанный файл будет следовать за вами и разрушать любые изменения, которые произошли после этого, и препятствовать тому, чтобы вы покинули эту ветку, не совершив ее сначала.
Первоначально мы исправили это, проверив временную ветвь, возвращая файл обратно в состояние разумного состояния (до модификации), совершая и затем перестраивая всю ветвь назад на самую старую фиксацию, чтобы сделать ее похожей на master. Это сработало некоторое время, но после этого появился аналогичный файл, и то же исправление не сработало снова.
То, с чем мы в конечном итоге ходили, было похоже на то, что в его обновлении было открыто. Одна строка внутри .git/info/attributes
с file-to-remove -text
, похоже, смягчает проблему. Я говорю, что смягчить, потому что я не уверен, есть ли какие-либо негативные последствия для этого, это было также для одного файла, поэтому может не работать, если вообще.
Ответ 2
Вы пробовали это?
git add -u .
git reset
Ответ 3
То же самое случилось со мной сегодня. Попробуйте это
git config --local core.fileMode false
как обсуждалось здесь: Как мне изменить Git игнорировать режим файла (chmod)?
Ответ 4
Та же проблема здесь, я использую Win7, sourceTree v3.0.9, git v1.9.5
В корне репозитория, когда у файла.gitattribute есть text = auto, он показывает много локальных изменений файла в конце строки и мешает мне что-либо делать. После того, как я установил text = crlf, все локальные изменения исчезли.
Ранее я пытался добавить "[core] autocrlf = false" в файл конфигурации, но это не помогло.
Обновлено 06/06/2018: Мой SourceTree использовал встроенный git со старой версией, просто обновите его в SourceTree, и теперь все работает с "text = auto" в.gitattributes