처음으로 github에 푸시 한 .sql 파일이 있습니다. 그러나 커밋을 보면 다음과 같이 말합니다.
BIN WebRole/Sql/Database.sql View
Binary file not shown
누군가 "바이너리 파일이 표시되지 않음"이라고 말하는 이유를 말해 줄 수 있습니까?
답변:
확장 프로그램만으로는 GitHub가 텍스트 파일인지 확인하기에 충분하지 않습니다.
그래서 그것은 그 내용을 봐야합니다.
그리고 " Git이이 텍스트 파일을 바이너리 파일로 취급하는 이유는 무엇입니까? " 에서 언급했듯이 내용에 텍스트 파일이라고 추측 할만큼 충분한 ASCII 문자가 포함되어 있지 않을 수 있습니다.
.gitattributes 파일 을 사용 .sql
하여 바이너리가 아닌 텍스트 여야 함 을 명시 적으로 지정할 수 있습니다.
*.sql diff
업데이트 2018 : " UTF-8 인코딩 문서에서 작동하지 않는 Utf-8 인코딩 "에서 언급 했듯이 Git 2.18 .gitattributes에는 새로운 working-tree-encoding
속성이 있습니다.
따라서 Rusi 의 답변 에서 볼 수 있듯이 :
*.sql text working-tree-encoding=UTF-16LE eol=CRLF
이러한 파일이 Microsoft SQL Management Studio에서 생성 된 경우 (또는 사용중인 MS SQL Server의 관리 도구 버전에서 호출되는 모든 항목) 저장되는 파일은 UCS-2 (또는 UTF-16)로 인코딩됩니다. Git의 눈에 실제로 텍스트가 아닌 2 바이트 인코딩
"당신은 예를 볼 수 있습니다 힘내라고" Binary files a… and b… differ
대한의 " *.reg
파일 "
" Set file as non-binary in git " 에서 언급했듯이 :
"Git이 내 파일을 바이너리로 표시하는 이유는 무엇입니까?" 대답은 파일의 처음 8000 자 내에 NUL (0) 바이트가 표시되기 때문입니다.
일반적으로 파일이 UTF-8이 아닌 다른 이름으로 저장되기 때문에 발생합니다. 따라서 UCS-2, UCS-4, UTF-16 또는 UTF-32로 저장 될 수 있습니다. 모두 ASCII 문자를 사용할 때 NUL 문자가 포함되어 있습니다.
Neo 가 주석에서 언급 했듯이 (그리고 Git에서이 텍스트 파일을 바이너리 파일로 취급하는 이유는 무엇입니까? ) :
파일 메뉴의 '고급 저장 옵션'메뉴 항목에서 '서명이있는 UTF-8'인코딩을 선택하여 SSMS에 저장된 파일의 인코딩을 UTF-8로 변경할 수 있습니다.
iso
dos2unix 명령의 ' ' 옵션을 확인하여 도움이되는지 확인합니다 . computerhope.com/unix/dos2unix.htm
연결된 질문과 몇 가지 다른 의견에서 수락 된 답변을 사용하여 Win10에서 작동하고 실행되는 문제에 대한 해결책으로 이것을 생각해 냈습니다.
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
Get-ChildItem -Recurse *.sql | foreach {
$MyPath = $_.FullName;
$Contents = Get-Content $MyPath
[System.IO.File]::WriteAllLines($MyPath, $Contents, $Utf8NoBomEncoding)
}
$Contents = Get-Content -LiteralPath $MyPath
오래된 질문에 새로운 답이 있습니다. git은 최근 working-tree-encoding
이러한 이유로 옵션 을 확장했습니다. gitattributes 문서 참조 [맨 페이지가 새롭기 때문에 일치하는지 확인하십시오!]
예를 들어 다음을 사용하여 SQL 파일의 인코딩을 찾으십시오. file
Windows 시스템에 bom이없는 utf-16이 있으면 gitattributes 파일에 추가하십시오.
*.sql text working-tree-encoding=UTF-16LE eol=CRLF
utf-16 little endinan (bom 포함)이 만들면
*.sql text working-tree-encoding=UTF-16 eol=CRLF
2008 R2 용 SSMS (예, 여전히!)에서이 문제로 어려움을 겪는 사람들을 위해 다음과 같이 기본 인코딩을 설정할 수 있습니다.
위치는 다를 수 있습니다. Windows 7 64 비트에서 기본 설치에 사용되는 디렉토리입니다.
이것은 새 .SQL 파일의 템플릿으로 사용됩니다. 필요한 인코딩을 사용하여 저장하십시오 (제 경우에는 Windows 줄 끝이있는 Windows-1252). '저장'버튼 오른쪽에있는 화살표는 인코딩 선택을 제공합니다.
git 및 SSMS 번거 로움을 피하기 위해 개발 팀과 인코딩을 조정해야합니다.
C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\SqlWorkbenchProjectItems\Sql
C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\ManagementStudio\SqlWorkbenchProjectItems\Sql
다음은 SSMS 2012를 사용하여 저에게 도움이되는 빠른 해결 방법입니다. 도구 => 옵션 => 환경 => 국가 별 설정에서 언어를 "영어"에서 "Microsoft Windows와 동일"으로 변경하면 (다시 시작하라는 메시지가 표시 될 수 있습니다.) 변경 사항이 적용되는 SSMS), 더 이상 새 파일의 기본 인코딩으로 UTF-16을 사용하지 않습니다. 이제 내가 만든 모든 새 파일에는 8 비트 인코딩 체계 인 코드 페이지 1252 (파일 => 고급 저장 옵션)가 있습니다. 문제가없는 것 같습니다.Git Diff
이 문제를 해결하는 방법은 파일이 8 비트 인코딩을 사용하도록하는 것입니다. 이 PowerShell 스크립트를 실행하여 현재 디렉터리 및 하위 디렉터리에있는 모든 .SQL 파일의 인코딩을 변경할 수 있습니다.
Get-ChildItem -Recurse *.sql | foreach {
$FileName = $_.FullName;
[System.Io.File]::ReadAllText($FileName) | Out-File -FilePath $FileName -Encoding UTF8;
}
[System.IO.File]::WriteAllLines($MyPath, $MyFile, $Utf8NoBomEncoding)