Как я могу сделать Git показать изменения в моих .sql файлах?
Я попытался добавить это в .gitattributes:
* text=auto
*.sql diff
Но он все еще выглядит следующим образом:
BIN WebRole/Sql/Objects/dbo.Content.Table.sql →
WebRole/Sql/dbo.Content.Table.sql Binary file not shown
Поблагодарите за помощь в этом.
Ответы
Ответ 1
Git обычно правильно догадывается, содержит ли blob текст или двоичные данные, исследуя начало содержимого. В вашем случае, однако, git запутывается и обрабатывает файл как двоичный, возможно, из-за двоичных данных где-то в файле.
Из git -diff manpage:
-a, --text
Treat all files as text.
Таким образом, вы все равно можете легко получить текст diff следующим образом:
git diff -a WebRole/Sql/Objects/dbo.Content.Table.sql
Чтобы переопределить git неверное предположение, добавьте следующее в .gitattributes в том же каталоге, что и файл:
*. sql diff
и зафиксировать этот файл. Это заставит git обрабатывать каждый .sql файл как текст с этого момента, или содержать двоичные данные.
Ответ 2
GitHub может очень хорошо решить, как он управляет своим diff (например, у них есть пользовательские отличия для 3D-рендеринга, maps или изображения).
Поддержка GitHub сможет точно сказать, как обрабатываются и различаются файлы .sql
.
Но проверьте также кодировку ваших файлов sql в репозитории GitHub.
Как я упоминал в "Почему git считает мой файл cs двоичным?, файлы UTF-16 могут быть проблематичными.
Убедитесь, что, как минимум, файлы sql находятся в UTF-8.
Ответ 3
Похоже на проблему с кодировкой файлов, какую кодировку вы используете?
ср. следующие вопросы SO: Почему Git обрабатывает этот текстовый файл как двоичный файл? и Могу ли я сделать Git распознать файл UTF-16 в виде текста?.
Вы можете заставить локальный Git разрешить текстовые различия в файле, но не GitHub.
Проверьте свою кодировку и замените файл UTF-8, чтобы исправить ситуацию.
Ответ 4
Единственный способ, который я нашел, - это изменить кодировку файлов .sql со стандартной кодировки UTF16 на UTF8. Ниже описаны три подхода, основанные на ваших обстоятельствах:
Для небольшого количества файлов
- В Visual Studio или SSMS выберите Сохранить как
- Выберите стрелку раскрывающегося списка рядом с кнопкой сохранения
![enter image description here]()
- Выберите "Сохранить с кодировкой..."
- Выберите Да в диалоговом окне Подтвердить сохранение как
![enter image description here]()
- Выберите Unicode (UTF-8 с подписью) - CodePage 65001 в появившемся диалоговом окне и нажмите OK. Обратите внимание, что опция UTF-8 обычно выше текущей выбранной кодировки (Unicode - Codepage 1200)
![enter image description here]()
Для большого количества файлов
Если у вас есть много файлов для изменения и вы можете использовать сценарии Powershell, вы можете попробовать следующее:
- Загрузите скрипт powershell, созданный Microsoft MCC, MVP Stefan Roth по этой ссылке
- Сценарий powershell не имеет цифровой подписи, поэтому вам нужно будет открыть powershell от имени администратора, а затем понизить политику выполнения (временно), изложенную здесь. Выберите либо обход, либо неограниченную политику.
- Как запустить сценарии powershell подробно описано здесь. Путь к сценарию должен заключаться в кавычки. Затем сценарию требуются папки источника и назначения, которые не должны быть заключены в кавычки. Запрошенная кодировка просто utf8.
Для любых будущих файлов, созданных
Во избежание необходимости конвертировать файлы в будущем вы можете изменить шаблон для новых запросов, созданных в SSMS, используя подход, описанный в этой ссылке.