2013-03-30 2 views
9

Windows 용 Github 및 Cygwin을 사용하는 명령 줄에서 git 프로젝트를 사용하여 나의 git 프로젝트에서 작업 할 수 있기를 원합니다 (Windows).Cygwin 및 Windows 용 Github 라인 엔딩

하지만 한 줄에서 다른 줄로 전환 할 때 줄 끝과 관련된 문제가 계속 발생합니다.

명령 줄 도구를 사용하여 repo에 변경 사항이없는 경우 Github 앱으로 모든 파일을 수정하려고합니다. Github 앱을 사용하여 변경 사항을 적용하면 명령 행 도구로 다시 변경하려고합니다.

상당량의 테스트를 거친 후에 두 도구에서 모두 작동하지 못했습니다.

무엇이 효과가 있습니까? .gitatributes에서 나는 현재 다음과 같이 설정했습니다 : * text = auto 하지만 도움이되지 않습니다

답변

5

이것은 저장소 구성과 저장소의 데이터가 일치하지 않을 때 발생하는 GHfW 버그입니다. 예를 들어, truecore.autocrlf을 설정하여,하지만 누군가가 true로 core.autocrlf를 설정하지 않았기 때문에 당신은 (CRLF 형식으로 이미 가능성이 저장소의 모양이 -

당신이 파일을 구성하는 경우

은 CRLF 라인 결말로 번역 할 수 있습니다)이 문제가 발생할 수 있습니다.

이 경우 GHfW는 msysgit과 다른 방식으로 저장소의 CRLF를 변환합니다. 결과적으로 일부 또는 모든 파일이 더러워졌습니다.

git 도구가 줄 끝으로 무엇을해야하는지 모호하게하지 않으려면 팀 전체에서 일관된 방식으로 CRLF를 사용하는 것이 좋습니다. 즉,이 버그는 최근 GHfW의 기반이되는 라이브러리 인 libgit2에서 수정되었으며 조만간 GHfW로 나아갈 것입니다.

1

GitHub 2.7.0.24를 사용하여 내 창에 저장소 (CRLF 파일 포함)를 복제했습니다. 그럼 cygwin의 git 버전 2.1.4를 사용하고 싶습니다.

[core] 섹션 아래에 "autocrlf = true"를 추가하여 .git/config를 편집했습니다. (실제 표가 "autocrlf = true"이전에 있음)

이제 cygwin의 git에서 수정하지 않고 최신 상태라고 말합니다.

원래 리포지토리에서 그런 방식으로 작성 되었기 때문에 CRLF가 파일에 보관됩니다.

나는 더 이상 GitHub의 응용 프로그램을 사용하지 않습니다 ...

내가 병합 충돌없이 CR과 < < < < ==== >>>> 라인을 추가 발견,하지만이 삭제됩니다 때 갈등을 해결하십시오.

4

Windows에서 Git Bash와 Cygwin을 모두 사용하면 git가 혼란 스럽습니다. 즉 :

  • 복제/체크 아웃 Git Bash의 저장소. 체크 아웃하는 동안 git은 Windows에 있다고 생각하므로 대개 CRLF을 사용하여 텍스트 파일을 체크 아웃합니다.
  • Cygwin에서 git을 실행하면 git은 Linux에 있다고 생각하고 그 repo가 ​​Linux에서 으로 체크 아웃되었음을 확인합니다 (이전 단계에서 실제로는 그렇지 않습니다).그러므로 git이 Cygwin에서 CRLF을 볼 때 LFCRLF으로 수정되어 git이 많은 파일 변경을보고한다고 생각합니다. 이 문제를 해결하는

한 가지 방법은 환매 특약의 루트에 .gitattributes 파일을 만들고 같은 라인을 추가하는 것입니다 다음은 :

*.txt text eol=lf 

그것은 자식을 말할 때 접미사 .txt, LF 둘 때 쓰기를 사용하여 발생할 파일 "데이터베이스 (.git)"에 저장하고 작업 디렉토리로 체크 아웃합니다.

reference here